Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 835516 - media-sound/qpwgraph: connection graph manager for pipewire audio, ebuild attached (New Package)
Summary: media-sound/qpwgraph: connection graph manager for pipewire audio, ebuild att...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Default Assignee for New Packages
URL:
Whiteboard:
Keywords: EBUILD
Depends on:
Blocks:
 
Reported: 2022-03-17 18:53 UTC by Olivier Huber
Modified: 2023-09-03 19:13 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
ebuild proposal (qpwgraph-0.2.3.ebuild,872 bytes, text/plain)
2022-03-17 18:53 UTC, Olivier Huber
Details
metadata.xml for qpwgraph (metadata.xml,584 bytes, text/xml)
2022-03-17 18:54 UTC, Olivier Huber
Details
ebuild proposal (v2) (qpwgraph-0.2.3.ebuild,887 bytes, text/plain)
2022-03-18 20:26 UTC, Olivier Huber
Details
ebuild proposal (v3) (qpwgraph-0.2.4.ebuild,892 bytes, text/plain)
2022-03-20 00:37 UTC, Olivier Huber
Details
ebuild proposal for 0.3.5 (qpwgraph-0.3.5.ebuild,894 bytes, text/plain)
2022-08-27 15:58 UTC, Olivier Huber
Details
metadata (v2) (metadata.xml,591 bytes, text/xml)
2022-08-27 15:59 UTC, Olivier Huber
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Huber 2022-03-17 18:53:44 UTC
Created attachment 767275 [details]
ebuild proposal

The main author of qjackctl is creating an equivalent connection manager for pipewire. It is still in development, I've not experienced any crashes or malfunction in the past weeks. It would be a nice addition to Gentoo for those running pipewire.


Regarding the ebuild: I don't use wayland, so this option is disabled.

There is one issue: the icon on the systray does not appear (there is a blank space). After a reboot/other emerge, it appears. I've tried to a few things so I can't point out to a sure fix. 

repoman -dx full was happy

$ emerge --info qpwgraph
Portage 3.0.30 (python 3.9.11-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-11.2.1, glibc-2.34-r10, 5.16.13-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.16.13-gentoo-x86_64-Intel-R-_Core-TM-_i7-8665U_CPU_@_1.90GHz-with-glibc2.34
KiB Mem:    32679092 total,   4774120 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Thu, 17 Mar 2022 10:30:01 +0000
Head commit of repository gentoo: b839fccce25d49df2fcfe5ed184b557796b0d6bd
Head commit of repository flatpak-overlay: 4bf9a7815ca9361f86459c8a8e9bc403e3721704

Head commit of repository kdab-overlay: 7f7d39d40b5d0561c56201e7642796e99d0c99b6

sh bash 5.1_p16
ld GNU ld (Gentoo 2.37_p1 p2) 2.37
app-misc/pax-utils:        1.3.3::gentoo
app-shells/bash:           5.1_p16::gentoo
dev-java/java-config:      2.3.1::gentoo
dev-lang/perl:             5.34.1::gentoo
dev-lang/python:           2.7.18_p14::gentoo, 3.9.11::gentoo, 3.10.3::gentoo
dev-lang/rust-bin:         1.59.0::gentoo
dev-util/cmake:            3.22.3::gentoo
dev-util/meson:            0.61.3::gentoo
sys-apps/baselayout:       2.8::gentoo
sys-apps/openrc:           0.44.10::gentoo
sys-apps/sandbox:          2.29::gentoo
sys-devel/autoconf:        2.13-r1::gentoo, 2.69-r5::gentoo, 2.71-r1::gentoo
sys-devel/automake:        1.16.5::gentoo
sys-devel/binutils:        2.37_p1-r2::gentoo
sys-devel/binutils-config: 5.4.1::gentoo
sys-devel/clang:           13.0.1::gentoo
sys-devel/gcc:             10.3.1_p20211126::gentoo, 11.2.1_p20220115::gentoo
sys-devel/gcc-config:      2.5-r1::gentoo
sys-devel/libtool:         2.4.6-r6::gentoo
sys-devel/lld:             13.0.1::gentoo
sys-devel/llvm:            13.0.1::gentoo
sys-devel/make:            4.3::gentoo
sys-kernel/linux-headers:  5.16::gentoo (virtual/os-headers)
sys-libs/glibc:            2.34-r10::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-extra-opts: 
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1

flatpak-overlay
    location: /var/db/repos/flatpak
    sync-type: git
    sync-uri: https://github.com/fosero/flatpak-overlay.git
    masters: gentoo
    priority: 50

kdab-overlay
    location: /var/db/repos/kdab
    sync-type: git
    sync-uri: https://github.com/KDAB/kdab-overlay.git
    masters: gentoo
    priority: 50

localrepo
    location: /var/db/repos/localrepo
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0 /usr/share/themes/oxygen-gtk/gtk-3.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=native -pipe"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -march=native -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -march=native -pipe"
GENTOO_MIRRORS="https://ftp.fau.de/gentoo"
LANG="en_US.utf-8"
LC_ALL="en_US.utf-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j4"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/dev/shm"
SHELL="/bin/bash"
USE="X a52 aac acl acpi activities adns alsa amd64 audit avif bcrypt berkdb blake2 bluetooth bluray boost branding brightness-control brotli bzip2 cacert cairo caps cdda cdr chm cli colord cplugins crypt cscope cups curl dbus declarative dia djvu dri dts dvd dvdr ed25519 egl eglfs elf elogind encode eps epub evdev exif ffmpeg fftw fits flac fontconfig fontforge fortran gdbm gif gles gles2 gmp gold gpm graphviz gsl gtk gui heif highlight http2 iconv icu idn imagemagick ipv6 jack jpeg jpeg2k json kde kms kwallet lapack lapacke latex lcms libbsd libglvnd libnotify libsamplerate libtirpc lm-sensors lv2 lz4 lzma mad markdown metis mms mng mobi mp3 mp4 mpeg mtp multilib ncurses nls nptl ogg openexr opengl openmp pam pango pcre pdf perl plasma plugins pm-utils png policykit postscript ppds pthread python qml qt5 quiche raw readline rtmp sasl screencast sctp sdl seccomp semantic-desktop sparse speex spell split-usr sqlite ssh ssl startup-notification svg svt-av1 szip terminal theora threads thunderbolt tiff tools touchpad truetype udev udisks unicode upower usb utils v4l vaapi vim-syntax vorbis wayland webp widgets x264 xar xattr xcb xml xpm xv xvid xxhash yaml z3 zimg zlib zstd" ABI_X86="64" ADA_TARGET="gnat_2020" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 aes avx avx2 f16c fma3 pclmul popcnt sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput" KERNEL="linux" L10N="de en fr" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="BPF X86 WebAssembly" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-4 php8-0" POSTGRES_TARGETS="postgres12 postgres13" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9 python3_10" USERLAND="GNU" VIDEO_CARDS="intel i965 iris" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LD, LEX, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS

=================================================================
                        Package Settings
=================================================================

media-sound/qpwgraph-0.2.3::localrepo was built with the following:
USE="alsa systray -debug" ABI_X86="(64)"
Comment 1 Olivier Huber 2022-03-17 18:54:16 UTC
Created attachment 767276 [details]
metadata.xml for qpwgraph
Comment 2 Jonas Stein gentoo-dev 2022-03-17 23:28:11 UTC
Thank you for your contribution. I had a short look on the ebuild. 
Here a few ideas:

• Please test the ebuild with repoman full -d -x https://wiki.gentoo.org/wiki/Repoman and pkgcheck scan --net
• We always try to use the latest EAPI, please bump to EAPI=8


SRC_URI="https://gitlab.freedesktop.org/rncbc/qpwgraph/-/archive/v${PV}/${PN}-v${PV}.tar.gz"

SRC_URI="https://gitlab.freedesktop.org/rncbc/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.gz -> ${P}.tar.gz"
Comment 3 Niklāvs Koļesņikovs 2022-03-18 05:25:01 UTC
All that -DWAYLAND does is this:

::setenv("QT_QPA_PLATFORM", "xcb", 0);

That is, it's setting an environment variable override(?) that's opting out of Wayland support. As such I expect everyone (like me) has been using Qt5's Wayland support by default all the time and it's perfectly safe to just permanently toggle it on in the ebuild, which is to say to use the same behavior as all other Qt5 applications without probably unwarranted anti-Wayland drama. It can always be disabled if and when Wayland users let us know that it's actually problematic or outright broken.

And thanks for doing the good work of packaging this. Nicolai Syvertsen and I created a Meson build system for qpwgraph, since we don't really want to touch CMake, in understanding that it would get accepted upstream. But that turned out to be not how upstream understood it, and I lost any interest in trying to package this for Gentoo myself. I'm glad to see that someone has interest in having qpwgraph available on Gentoo.
Comment 4 Olivier Huber 2022-03-18 20:26:39 UTC
Created attachment 767350 [details]
ebuild proposal (v2)

Thanks to Jonas Stein for the nice review. The EAPI is now the latest one and the SRC_URI has been updated. Both `repoman -dx full` and `pkgcheck scan --net` are happy
Comment 5 Olivier Huber 2022-03-18 20:38:25 UTC
(In reply to Niklāvs Koļesņikovs from comment #3)
> All that -DWAYLAND does is this:
> 
> ::setenv("QT_QPA_PLATFORM", "xcb", 0);
> 
> That is, it's setting an environment variable override(?) that's opting out
> of Wayland support. As such I expect everyone (like me) has been using Qt5's
> Wayland support by default all the time and it's perfectly safe to just
> permanently toggle it on in the ebuild, which is to say to use the same
> behavior as all other Qt5 applications without probably unwarranted
> anti-Wayland drama. It can always be disabled if and when Wayland users let
> us know that it's actually problematic or outright broken.
> 
> And thanks for doing the good work of packaging this. Nicolai Syvertsen and
> I created a Meson build system for qpwgraph, since we don't really want to
> touch CMake, in understanding that it would get accepted upstream. But that
> turned out to be not how upstream understood it, and I lost any interest in
> trying to package this for Gentoo myself. I'm glad to see that someone has
> interest in having qpwgraph available on Gentoo.

I force-enabled the "wayland" support and will test that over the week-end.
Comment 6 Niklāvs Koļesņikovs 2022-03-19 09:04:48 UTC
Thanks. I have tested the version 2 of the ebuild (with slight changes) and Wayland support is working just fine, which is exactly what I'd expect. The only thing that's a bit odd is that the tray icon seems to be blank, however the same is true with the QT_QPA_PLATFORM=xcb set in the environment, so not really a regression.

Also I observe that the tray icon is working with the Meson fork, so it's either a regression in upstream code since then, or related to the fact that Meson results in installation of:
/usr/share/icons/hicolor/<size>/apps/qpwgraph.png
while CMake build system ends up with this:
/usr/share/icons/hicolor/<size>/apps/org.rncbc.qpwgraph.png

Here's a few changes I did to my local ebuild:
1) renamed alsa IUSE to +alsa-midi, because it's enabled by default in the upstream build system and calling it just alsa is confusing
2) turned systray IUSE on by default by changing it to +systray for the same reason (i.e. so that the default flags match upstream build configuration while allowing those who really do not want the particular feature or dependency to easily opt out of it)
3) removed the debug IUSE, since it opens more cans of worms than I'm personally okay with (the Meson version omits it entirely), however it's *probably* not wrong to have it available[1], so your choice on whether or not such things should be exposed to regular users

[1] provided that it's okay for the debug IUSE to mess around with CFLAGS
Comment 7 Jonas Stein gentoo-dev 2022-03-19 21:00:17 UTC
https://repology.org/project/qpwgraph/versions
Comment 8 Olivier Huber 2022-03-20 00:37:52 UTC
Created attachment 767414 [details]
ebuild proposal (v3)

Version 3. Changes:
- update to 0.2.4
- incorporate feedback from Gentoo devs
- alsa and systray are now enabled by default


- The issue with the lack of systray icon seems to be tied to the name of the icon (org.rncbc.qpwgraph.svg or org.rncbc.qpwgraph.png). However, this is what the desktop file specifies:

$ cat /usr/share/applications/org.rncbc.qpwgraph.desktop
[Desktop Entry]
Name=qpwgraph
Version=1.0
GenericName=PipeWire Graph/Patchbay
Comment=qpwgraph is a PipeWire graph Qt GUI interface
Exec=qpwgraph %f
Icon=org.rncbc.qpwgraph
Categories=AudioVideo;Audio;Video;Midi;X-Alsa;X-PipeWire;Qt;
MimeType=application/x-qpwgraph-patchbay;
Keywords=PipeWire;MIDI;ALSA;JACK;Qt;
Terminal=false
Type=Application

I've managed to get it to work by copying one of the icon to either $PN.svg or $PN.png. It didn't work at first and then after a while (and a KDE update?) it worked so I don't know the fix. 

For the alsa USE flag, it was already used for qjackctl and its use here fits the description "Add support for media-libs/alsa-lib (Advanced Linux Sound Architecture)". Maybe a local use flag description would help?
Comment 9 Niklāvs Koļesņikovs 2022-03-20 08:49:18 UTC
Yes, the alsa flag description fits the way it's used in code very well. I was just concerned that people typically expect alsa IUSE to mean PCM support, rather than MIDI support, so I felt that alsa-midi is more appropriate to immediately convey its meaning. I'll preempt that midi IUSE would not be a good alternative before anyone suggest that, because the JACK and PW MIDI support is always enabled and the build option is only controlling support for the legacy (but still relevant) ALSA midi-bridge which routes MIDI between applications entirely within ALSA stack ( https://freeshell.de/~murks/posts/ALSA_and_JACK_MIDI_explained_(by_a_dummy_for_dummies)/ ).

And, if it's set to be default enabled via +alsa-midi, then most people can just happily install the package without a care. Meanwhile those who really care can both easily understand what it's about at a glance as well as read the flag description (since package specific flags should always have a description).

Regarding the missing tray icon, I suspect that's an upstream bug, so might be best to just report it to them, if it's not obvious to us, what's wrong.
Comment 10 Olivier Huber 2022-03-26 15:43:51 UTC
The missing systray icon has been fixed by upstream in https://gitlab.freedesktop.org/rncbc/qpwgraph/-/commit/4447652a97b928c0204dfdd36c5448ed47d56e4b
Comment 11 Olivier Huber 2022-08-27 15:58:58 UTC
Created attachment 801508 [details]
ebuild proposal for 0.3.5
Comment 12 Olivier Huber 2022-08-27 15:59:34 UTC
Created attachment 801511 [details]
metadata (v2)
Comment 13 Mathy Vanvoorden 2022-10-25 19:12:44 UTC
Just here to report that now there is a 0.3.7 release and it works fine with this ebuild after renaming.
Comment 14 Jesper Saxtorph 2023-06-18 23:35:39 UTC
I just installed this. Renamed it to the newest version (0.4.4) and it works fine.
Would be nice to have it in portage :-)

I also made the following changes:
1) Changed use flag alsa to alsa-midi, because exactly as predicted by Niklāvs, I got confused by the use name "alsa".

2) I changed the -DCONFIG_WAYLAND to 1. As Niklāvs write, this config do not actually enable anything. But if it is not set, it will try to force X instead of alternatives. When set to 0 it would disable wayland if available and do nothing otherwise. So it makes much more sense to set to 1, so people who run wayland actually get wayland support. And it seems to work fine with wayland at least for my limited testing.

3) I removed all the " 1 0" parts from the CONFIG part as they are not needed. E.g.: -DCONFIG_SYSTEM_TRAY=$(usex systray) works just fine.

I am just a regular Gentoo user, so this is just my personal preferences if I should make the ebuild.
Comment 15 Larry the Git Cow gentoo-dev 2023-09-03 19:13:22 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e3b66138a76da0d871b614e3e4fb215cc3045486

commit e3b66138a76da0d871b614e3e4fb215cc3045486
Author:     Adel KARA SLIMANE <adel.ks@zegrapher.com>
AuthorDate: 2023-09-03 18:14:57 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2023-09-03 19:13:05 +0000

    media-sound/qpwgraph: new package, add 0.5.2, 9999
    
    Closes: https://bugs.gentoo.org/835516
    Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
    Closes: https://github.com/gentoo/gentoo/pull/32585
    Signed-off-by: Sam James <sam@gentoo.org>

 media-sound/qpwgraph/Manifest              |  1 +
 media-sound/qpwgraph/metadata.xml          | 19 +++++++++++
 media-sound/qpwgraph/qpwgraph-0.5.2.ebuild | 55 ++++++++++++++++++++++++++++++
 media-sound/qpwgraph/qpwgraph-9999.ebuild  | 55 ++++++++++++++++++++++++++++++
 4 files changed, 130 insertions(+)