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"
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.
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?
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.
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
Created attachment 711006 [details, diff] ebuild patch updated ebuild patch
Olivier, I think you accidentally posted the old patch instead of the updated one.
Created attachment 736651 [details, diff] patch for 0.3.34 Updated patch for 0.3.34.
(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.
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.
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?
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(-)
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(-)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=431a2f1ce462c3b915184beac83eb73181fcf2cd commit 431a2f1ce462c3b915184beac83eb73181fcf2cd Author: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> AuthorDate: 2022-04-30 16:18:09 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-05-01 19:48:53 +0000 media-video/pipewire: Drop alsa-plugins[pulseaudio] blocker Currently alsa-plugins[pulseaudio] installs pulse plugin which is only enabled in alsa lib configuration if plugin can access pulseaudio server in runtime. This is implemented using a runtime conf hook in 51-pulseaudio-probe.conf Alsa lib runtime conf hooks are run after all static configuration is applied. This causes a problem to coexistence of pipewire-alsa and pulse plugin: - normally, pipewire-pulse is enabled which provides pulseaudio server connection to libpulse users - since pulseaudio server is accessible, pulse conf hook will override alsa pcm.!default and ctl.!default to use pulse plugin. To work around this, change pipewire-alsa plugin configuration from static conf to conf hook which will run after pulse conf hook. To make sure user can still override default device, make sure this new conf hook will also load /etc/asound.conf and ~/.asoundrc again like it is done by pulse conf hook. Since pipewire plugin will take precedence now if pipewire-alsa is installed, drop the blocker with media-sound/alsa-plugins[pulseaudio] Closes: https://bugs.gentoo.org/799881 Closes: https://bugs.gentoo.org/791499 Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/25269 Signed-off-by: Sam James <sam@gentoo.org> .../pipewire/files/99-pipewire-default-hook.conf | 17 +++++++++++++++++ ...pipewire-0.3.51.ebuild => pipewire-0.3.51-r1.ebuild} | 8 ++++++-- 2 files changed, 23 insertions(+), 2 deletions(-)