Summary: | media-sound/pulseaudio - split off media-libs/libpulse from media-sound/pulseaudio | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Manuel Ullmann <labre> |
Component: | Current packages | Assignee: | Gentoo Linux Gnome Desktop Team <gnome> |
Status: | RESOLVED FIXED | ||
Severity: | enhancement | CC: | 89q1r14hd, asturm, dschridde+gentoobugs, emilien.mottet, igor.v.kovalenko, lucas.yamanishi, luke, sam |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | AMD64 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 744622 |
Description
Manuel Ullmann
2015-01-16 15:52:07 UTC
We don't generally split packages unless there is an advantage that surpasses the cost of extra maintenance. Well, I assume then, that it depends on how high the advantage of support for binary packages hard linking to libpulse is measured. As these binary packages are usually proprietary, thus not in the portage tree, where USE flags could change the libpulse dependency, I guess, that this advantage is not measured too high. I wouldn´t mind a resolve as won´t fix, but still think, that this is actually a valid request. Should there be lots of binaries (e.g. Steam games optionally supporting pulseaudio) linking to libpulse in the future, the advantage might be reconsidered. For now it would be fine by me leaving a crippled pulseaudio package installed. I just thought there might be interest in this, because the libpulse package is available in Debian and Redhat repositories and the users could use such a package for similar use cases. Binary distributions can split packages a lot more easily than we do. Would it be satisfactory as a middle ground to provide static-libs from the pulseaudio ebuild directly ? That would be fine. Thanks. With upcoming 15.0 version you can build pulseaudio with "-daemon" USE flag to disable pulseaudio daemon part, have a look at pulseaudio-14.99.2_pre Upstream issue https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1185 Upstream change (Meson build system) https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/540 That's great, but for a clean split package we also need a way to build the daemon without libpulse (making it link to an already available system-lib of libpulse if needed); not just libpulse without daemon. The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9d6f88e10e942ae8e3a475e1e842ce1c423d70ec commit 9d6f88e10e942ae8e3a475e1e842ce1c423d70ec Author: Mart Raudsepp <leio@gentoo.org> AuthorDate: 2021-09-24 18:08:30 +0000 Commit: Mart Raudsepp <leio@gentoo.org> CommitDate: 2021-09-24 18:15:57 +0000 media-sound/pulseaudio: Add metapackage for pulseaudio split packages Bug: https://bugs.gentoo.org/536780 Package-Manager: Portage-3.0.20, Repoman-3.0.2 Signed-off-by: Mart Raudsepp <leio@gentoo.org> media-sound/pulseaudio/pulseaudio-15.0-r100.ebuild | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=26646b27529e13f7beb0c78fac339e1d78bf07d4 commit 26646b27529e13f7beb0c78fac339e1d78bf07d4 Author: Mart Raudsepp <leio@gentoo.org> AuthorDate: 2021-09-24 18:07:09 +0000 Commit: Mart Raudsepp <leio@gentoo.org> CommitDate: 2021-09-24 18:15:57 +0000 media-sound/pulseaudio-daemon: Add split package for pulseaudio daemon Bug: https://bugs.gentoo.org/536780 Package-Manager: Portage-3.0.20, Repoman-3.0.2 Signed-off-by: Mart Raudsepp <leio@gentoo.org> media-sound/pulseaudio-daemon/Manifest | 1 + .../pulseaudio-daemon/files/15.0-daemon-only.patch | 277 ++++++++++++++++++ ...pulseaudio-15.0-xice-xsm-xtst-daemon-only.patch | 25 ++ .../pulseaudio-daemon/files/pulseaudio.conf.d | 6 + .../pulseaudio-daemon/files/pulseaudio.init.d-5 | 80 ++++++ .../pulseaudio-daemon/files/pulseaudio.service | 10 + .../pulseaudio-daemon/files/pulseaudio.tmpfiles | 1 + media-sound/pulseaudio-daemon/metadata.xml | 66 +++++ .../pulseaudio-daemon-15.0.ebuild | 320 +++++++++++++++++++++ 9 files changed, 786 insertions(+) https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dfd146a6aceb118f1d4f9751ae071f13a7624ffb commit dfd146a6aceb118f1d4f9751ae071f13a7624ffb Author: Mart Raudsepp <leio@gentoo.org> AuthorDate: 2021-09-24 18:00:27 +0000 Commit: Mart Raudsepp <leio@gentoo.org> CommitDate: 2021-09-24 18:15:56 +0000 media-libs/libpulse: Add split package for pulseaudio libraries Bug: https://bugs.gentoo.org/536780 Package-Manager: Portage-3.0.20, Repoman-3.0.2 Signed-off-by: Mart Raudsepp <leio@gentoo.org> media-libs/libpulse/Manifest | 1 + media-libs/libpulse/files/15.0-no-aec.patch | 45 +++++ ...pulseaudio-15.0-xice-xsm-xtst-daemon-only.patch | 25 +++ media-libs/libpulse/libpulse-15.0.ebuild | 189 +++++++++++++++++++++ media-libs/libpulse/metadata.xml | 17 ++ profiles/package.mask | 6 + 6 files changed, 283 insertions(+) Now we have proper libpulse/pulseaudio-daemon split with 15.99.1 version. Once that is unmasked, what's left to do here? Now that we have a modern PipeWire version available, I think, there's only one thing that remains after media-libs/libpulse, media-sound/pulseaudio-daemon and the now meta package media-sound/pulseaudio is unmasked. That is, preferably but not necessarily ensure that either media-video/pipewire or media-sound/pulseaudio-daemon is actually installed along with media-libs/libpulse, so that it's actually working out of the box. And for PipeWire by default media-video/pipewire would of course be the first choice of the two. This could most obviously and least intrusively be done via >=media-sound/pulseaudio-15.99.1 by adding || ( media-video/pipewire[bluetooth?] >=media-sound/pulseaudio-daemon-${PV}[bluetooth?,glib?,jack?,native-headset?,ofono-headset?] ) and removing the daemon IUSE entirely or by making PipeWire required when when daemon IUSE is disabled. Or it could be turned into daemon? ( || ( media-video/pipewire[bluetooth?] >=media-sound/pulseaudio-daemon-${PV}[bluetooth?,glib?,jack?,native-headset?,ofono-headset?] ) ) Personally I think it would be acceptable to just remove the daemon IUSE and if someone really does not want either daemon, they can use package.provided but perhaps that's too drastic, since packgae.provided is assumed to mean that it's not Gentoo supported configuration. Finally, if someone wanted to be fancy, ofono-headset IUSE could be mapped to pulling net-misc/ofono as a dependency along media-video/pipewire but I'm not sure if a correct assumption that just because someone used oFono with PulseAudio, they still need it with PipeWire as well. And jack IUSE could be mapped to media-video/pipewire[jack-client] but it should be noted that upstream has recently declared that backend as at least feature frozen if not essentially unmaintained, so it's not currently certain if we will not end up masking that flag. (In reply to Niklāvs Koļesņikovs from comment #9) ... > That is, preferably but not necessarily ensure that either > media-video/pipewire or media-sound/pulseaudio-daemon is actually installed > along with media-libs/libpulse, so that it's actually working out of the > box. And for PipeWire by default media-video/pipewire would of course be the > first choice of the two. This is still a problem if you want audio with pulseaudio-daemon and screen capture with pipewire. Is there any way around that? I don't think it is worth pursuing that option for the effort required. OK another use case I can think of is alsa-only audio with pipewire for screen capture only, can this be done? pipewire-pulse supports pasuspender for situations when one really wants to run on bare ALSA but, in stark contrast to PulseAudio, PipeWire already releases devices it's not using at that moment, so just not using audio via PipeWire will allow ALSA to directly open the /dev/snd/* nodes. On top of that one could INSTALL_MASK=/etc/alsa/conf.d/99-pipewire-default.conf and then even ALSA default will not be the PipeWire plugin (or, if pipewire-alsa IUSE is not set, then one would need to mask the PulseAudio's plugin with it's very similarly named plugin). Well no, I mean a user with strong preference for pure alsa, but with a desire to have screen capture working. This probably has nothing to do with pasuspender workflow, since the tool will not be available as well. IIRC pipewire will still somehow interact with mixer devices even if it will not use PCMs for playback, so guess an option to disable this completely will be useful? Sorry just noticed this is wrong place to discuss audio use cases, probably this one fits https://bugs.gentoo.org/744622 It might be enough to use pavucontrol or another similar tool once to put the device(s) into the Pro Audio profile which will among other things stop PipeWire from changing ALSA mixer controls. It can even be done from CLI (which I expect you'd have ask about next) though the operation is probably a bit of a ritual without the nice GUI tools. Also I was under the impression that the particular issue was pretty much limited to /usr/bin/pipewire and /usr/bin/pulseaudio clashing with one another (which itself is not a smart or probably even supported configuration). The only type of application that I would expect to clash in a similar fashion would be a DAW and those are predominantly either JACK (pw-jack) or PulseAudio (pipewire-pulse) based. And, again, I believe using the Pro Audio profile would be sufficient to stop it from happening. The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d4c081daccde5db94acf5894ba2653188ad6cea0 commit d4c081daccde5db94acf5894ba2653188ad6cea0 Author: Sam James <sam@gentoo.org> AuthorDate: 2022-04-29 00:57:06 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-04-29 00:57:06 +0000 profiles: unmask split pulseaudio packages This is a move towards making it easier for users to choose between pulseaudio and pipewire for their audio needs. We now have: - media-sound/pulseaudio (a transitory metapackage, installs no files, just enforces deps with USE flags); - media-libs/libpulse (the pulseaudio libraries, needed by clients using pulseaudio's protocol to speak to pipewire, but is not the pulseaudio daemon) - media-sound/pulseaudio-daemon (the pulseaudio daemon, to be used instead of pipewire if desired) While these are technically RC/pre-releases (and I have a strong reluctance against keywording those usually), we have a good relationship with upstream who report they've been quiet developmentwise since these tags, these versions have been tested & work well, and this will help to improve the experience for Gentoo users in choosing which audio server they want. So, all in all, a win. Bug: https://bugs.gentoo.org/536780 Bug: https://bugs.gentoo.org/744622 Bug: https://bugs.gentoo.org/827546 Bug: https://bugs.gentoo.org/841494 Signed-off-by: Sam James <sam@gentoo.org> profiles/package.mask | 6 ------ 1 file changed, 6 deletions(-) |