Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 791499 - media-video/pipewire[pipewire-alsa] error in RDEPEND logic (media-libs/alsa-plugins should not have the pulseaudio flag)
Summary: media-video/pipewire[pipewire-alsa] error in RDEPEND logic (media-libs/alsa-p...
Status: UNCONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal with 1 vote (vote)
Assignee: Gentoo Linux Gnome Desktop Team
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2021-05-22 16:00 UTC by Olivier Huber
Modified: 2021-09-16 22:44 UTC (History)
4 users (show)

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


Attachments
ebuild patch (pipewire_alsa-plugins.patch,483 bytes, patch)
2021-05-22 16:00 UTC, Olivier Huber
Details | Diff
ebuild patch (pipewire_alsa-plugins.patch,483 bytes, patch)
2021-05-24 09:12 UTC, Olivier Huber
Details | Diff
patch for 0.3.34 (pipewire-0.3.34.patch,515 bytes, patch)
2021-08-29 14:53 UTC, Olivier Huber
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Huber 2021-05-22 16:00:35 UTC
Created attachment 710325 [details, diff]
ebuild patch

I have media-plugins/alsa-plugins[-pulseaudio] installed. Each time I try to emerge media-video/pipewire[pipewire-alsa], I get

[blocks B      ] media-plugins/alsa-plugins ("media-plugins/alsa-plugins" is blocking media-video/pipewire-0.3.28)

Total: 6 packages (4 upgrades, 2 new), Size of downloads: 7,563 KiB
Conflict: 1 block (1 unsatisfied)

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (media-plugins/alsa-plugins-1.2.2:0/0::gentoo, installed) pulled in by
    media-plugins/alsa-plugins required by @selected.

  (media-video/pipewire-0.3.28:0/0.3::gentoo, ebuild scheduled for merge) pulled in by
    >=media-video/pipewire-0.3:= required by (kde-plasma/plasma-workspace-5.21.5:5/5::gentoo, installed) USE="calculator calendar fontconfig handbook screencast semantic-desktop -appstream -debug -geolocation -gps -systemd -telemetry -test" ABI_X86="(64)"
    >=media-video/pipewire-0.3:= required by (sys-apps/xdg-desktop-portal-1.8.1:0/0::gentoo, installed) USE="screencast -geolocation" ABI_X86="(64)"
    >=media-video/pipewire-0.3:= required by (kde-plasma/kwin-5.21.5:5/5::gentoo, installed) USE="caps handbook plasma screencast -accessibility -debug -gles2-only -multimedia -test" ABI_X86="(64)"
    media-video/pipewire
    >=media-video/pipewire-0.3:0/0.3= required by (kde-plasma/plasma-workspace-5.21.5:5/5::gentoo, installed) USE="calculator calendar fontconfig handbook screencast semantic-desktop -appstream -debug -geolocation -gps -systemd -telemetry -test" ABI_X86="(64)"
    >=media-video/pipewire-0.3:0/0.3= required by (sys-apps/xdg-desktop-portal-1.8.1:0/0::gentoo, installed) USE="screencast -geolocation" ABI_X86="(64)"
    >=media-video/pipewire-0.3:0/0.3= required by (kde-plasma/kwin-5.21.5:5/5::gentoo, installed) USE="caps handbook plasma screencast -accessibility -debug -gles2-only -multimedia -test" ABI_X86="(64)"
    media-video/pipewire:0/0.3 required by (www-client/firefox-88.0:0/88::gentoo, installed) USE="clang dbus gmp-autoupdate hwaccel jack openh264 screencast system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-webp wayland wifi -debug -eme-free -geckodriver -hardened -lto -pgo -pulseaudio (-selinux) -system-libvpx" ABI_X86="(64)" L10N="de fr -ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -cak -cs -cy -da -dsb -el -en-CA -en-GB -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -ia -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mk -mr -ms -my -nb -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW"

Looking at the ebuild, it looks like the intent is to make media-video/pipewire[pipewire-alsa] and media-plugins/alsa-plugins[pulseaudio] mutually exclusive. However, this is not what portage comes up with ... so there seems to be a logical issue in the implementation.
I've patched the ebuild (see attachement) to rather have !media-libs/alsa-plugins[${MULTILIB_USEDEP},pulseaudio]. This yields

	pipewire-alsa? (
		>=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}]
		!media-libs/alsa-plugins[${MULTILIB_USEDEP},pulseaudio]
	)
	!pipewire-alsa? ( media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio] )

Now portage happily emerges media-video/pipewire-0.3.28, see below. This might also help with bug #785076.

# emerge --info media-plugins/alsa-plugins media-video/pipewire
Portage 3.0.18 (python 3.9.5-final-0, default/linux/amd64/17.1/desktop/plasma, gcc-10.3.0, glibc-2.33, 5.12.1-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.12.1-gentoo-x86_64-Intel-R-_Core-TM-_i7-8665U_CPU_@_1.90GHz-with-glibc2.33
KiB Mem:    32682072 total,  20218224 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Sat, 22 May 2021 08:30:01 +0000
Head commit of repository gentoo: f10e0971cc7d42a8c7caf96dc0966bf8a4e1522b
Head commit of repository flatpak-overlay: 4bf9a7815ca9361f86459c8a8e9bc403e3721704

Head commit of repository kdab-overlay: 7f7d39d40b5d0561c56201e7642796e99d0c99b6

sh bash 5.1_p8
ld GNU ld (Gentoo 2.35.2 p1) 2.35.2
app-shells/bash:          5.1_p8::gentoo
dev-java/java-config:     2.3.1::gentoo
dev-lang/perl:            5.34.0::gentoo
dev-lang/python:          2.7.18_p9::gentoo, 3.8.10_p1::gentoo, 3.9.5_p1::gentoo
dev-lang/rust-bin:        1.52.1::gentoo
dev-util/cmake:           3.20.2::gentoo
sys-apps/baselayout:      2.7-r2::gentoo
sys-apps/openrc:          0.43.3::gentoo
sys-apps/sandbox:         2.24::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.16.3-r1::gentoo
sys-devel/binutils:       2.35.2::gentoo, 2.36.1-r1::gentoo
sys-devel/gcc:            10.3.0::gentoo, 11.1.0::gentoo
sys-devel/gcc-config:     2.4::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.12::gentoo (virtual/os-headers)
sys-libs/glibc:           2.33::gentoo
Repositories:

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

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 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"
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 emboss 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 kipi kms kwallet lapack lapacke latex lcms libbsd libglvnd libnotify libsamplerate libtirpc lm-sensors 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 phonon 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 tcpd 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_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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-3 php7-4" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_8 python3_9" 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:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS

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

media-plugins/alsa-plugins-1.2.2::gentoo was built with the following:
USE="ffmpeg jack libsamplerate mix speex usb_stream -arcam_av -debug -oss -pulseaudio" ABI_X86="(64) -32 (-x32)"


media-video/pipewire-0.3.28::localrepo was built with the following:
USE="aac aptx bluetooth extra jack-client ldac pipewire-alsa v4l -doc -gstreamer -jack-sdk -systemd -test" ABI_X86="(64) -32 (-x32)"
FEATURES="multilib-strict assume-digests userfetch usersandbox distlocks binpkg-logs network-sandbox parallel-fetch qa-unresolved-soname-deps sandbox binpkg-multi-instance merge-sync usersync pid-sandbox news ebuild-locks strict binpkg-dostrip ipc-sandbox unmerge-orphans fixlafiles xattr protect-owned sfperms preserve-libs unmerge-logs config-protect-if-modified userpriv unknown-features-warn binpkg-docompress"
Comment 1 Niklāvs Koļesņikovs 2021-05-23 15:04:46 UTC
Assuming this still works as intended, I'm sorry for introducing this bug. As for MULTILIB_USEDEP there, it being set or not when blocking the PA plugin should not make a difference to PipeWire's functionality. The PW's ALSA plugins will be built and installed according to multilib USE flags for pipewire ebuild, and multilib'ing of other ALSA plugins is irrelevant. The only thing important is that PipeWire and PulseAudio plugins are not installed at the same time. If it was necessary for correct dependency resolution, that's fine, however.
Comment 2 Olivier Huber 2021-05-23 16:23:14 UTC
No worries, when I looked at the ebuild I guessed an intention and it seems that portage's dependency resolution algorithm sees it differently. I'm not an ebuild expert either.

The remaining question is whether the condition 

!pipewire-alsa? ( media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio]

is necessary? In essence, if the pipewire-alsa useflag is not active, do we need to pull a dependency on media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio] ?

From what I get, it is clear that if pipewire-alsa is enabled then media-plugins/alsa-plugins[-pulseaudio] is required. Is anything more required? If the user choose not to have pulseaudio-related functionalities at all, we might not want to force them on him/her?
Comment 3 Niklāvs Koļesņikovs 2021-05-23 21:20:55 UTC
That's just bug 785076 all over again and I expect the answer hasn't changed - Gentoo cares for decent out of the box experience and not someone's hate for ALSA or PulseAudio or (misguided) intentions to build a minimalist setup. Users are free to pursue them by using package.provided and other support voiding techniques but Gentoo as a project is under no obligation or intention of complicating ebuild logic or adding additional USE flags, or intentionally enabling known broken configurations just because someone feels entitled to that.
Comment 4 Olivier Huber 2021-05-24 09:10:31 UTC
So there is no technical argument for this dependency. The updated patch takes care of helping provide a good experience by having an IUSE default flag on pipewire-alsa
Comment 5 Olivier Huber 2021-05-24 09:12:15 UTC
Created attachment 711006 [details, diff]
ebuild patch

updated ebuild patch
Comment 6 Róbert Čerňanský 2021-08-24 05:40:45 UTC
Olivier, I think you accidentally posted the old patch instead of the updated one.
Comment 7 Olivier Huber 2021-08-29 14:53:02 UTC
Created attachment 736651 [details, diff]
patch for 0.3.34

Updated patch for 0.3.34.
Comment 8 Olivier Huber 2021-08-29 14:56:22 UTC
(In reply to Róbert Čerňanský from comment #6)
> Olivier, I think you accidentally posted the old patch instead of the
> updated one.

Sorry about that. The updated patch for 0.3.34 should be okay. Let me know if you run into any trouble.
Comment 9 Niklāvs Koļesņikovs 2021-09-02 13:05:02 UTC
Just as a quick reminder, media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio] *does not* depend on or link against media-pulse/pulseaudio, so the dependency is very small and lightweight, therefore it's really unreasonably to object to just because it has pulseaudio in the USE flag. Meanwhile not having it installed will break the user experience for far more people than the number who care about having a system without the word pulseaudio anywhere in its filesystem.
Comment 10 Niklāvs Koļesņikovs 2021-09-02 13:12:11 UTC
Correction, I was kinda wondering about this, so I did a quick check and turns out I was wrong and it does link against PulseAudio, so while the plugin itself is still just a few average size C files, it does pull in pulseaudio (though it should compile against media-sound/pulseaudio[-daemon]). Is it really not good enough to just turn pipewire-alsa USE flag on and not care that by default it will pull in a package that pulls in PulseAudio?
Comment 11 Larry the Git Cow gentoo-dev 2021-09-16 21:51:50 UTC
The bug has been referenced in the following commit(s):

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

commit bb2267c8c9f435c2623e924e3ae2ad4e444642b9
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-09-16 21:50:15 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-09-16 21:51:36 +0000

    media-video/pipewire: add 0.3.36
    
    Bug: https://bugs.gentoo.org/791499
    Bug: https://bugs.gentoo.org/813099
    Thanks-to: Niklāvs Koļesņikovs <89q1r14hd@relay.firefox.com> (pointing out the version bug)
    Signed-off-by: Sam James <sam@gentoo.org>

 media-video/pipewire/Manifest             | 1 +
 media-video/pipewire/pipewire-9999.ebuild | 7 ++-----
 2 files changed, 3 insertions(+), 5 deletions(-)
Comment 12 Larry the Git Cow gentoo-dev 2021-09-16 21:55:50 UTC
The bug has been referenced in the following commit(s):

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

commit 7d32da171523679474240d62b5dc7be927a6b218
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-09-16 21:54:50 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-09-16 21:55:36 +0000

    media-video/pipewire: add 0.3.36
    
    Bug: https://bugs.gentoo.org/791499
    Bug: https://bugs.gentoo.org/813099
    Fixes: bb2267c8c9f435c2623e924e3ae2ad4e444642b9
    Signed-off-by: Sam James <sam@gentoo.org>

 ...pewire-0.3.36-fix-crash-uaf-media-session.patch |  36 +++
 .../files/pipewire-0.3.36-fix-version.patch        |  25 ++
 media-video/pipewire/pipewire-0.3.36.ebuild        | 280 +++++++++++++++++++++
 media-video/pipewire/pipewire-9999.ebuild          |   2 +-
 4 files changed, 342 insertions(+), 1 deletion(-)