Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-video/pipewire/, media-video/pipewire/files/
Date: Sun, 31 Jul 2022 03:40:32
Message-Id: 1659238377.9fce003dab4f3b0086c49adc06d2717564aa4499.sam@gentoo
1 commit: 9fce003dab4f3b0086c49adc06d2717564aa4499
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jul 31 03:32:57 2022 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Sun Jul 31 03:32:57 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9fce003d
7
8 media-video/pipewire: drop 0.3.52-r1, 0.3.53_p20220705-r1, 0.3.55-r1
9
10 Signed-off-by: Sam James <sam <AT> gentoo.org>
11
12 media-video/pipewire/Manifest | 3 -
13 .../files/pipewire-0.3.52-pulse-path.patch | 78 ----
14 .../pipewire/files/pipewire-0.3.55-jack-mix.patch | 20 -
15 media-video/pipewire/pipewire-0.3.52-r1.ebuild | 366 ------------------
16 .../pipewire/pipewire-0.3.53_p20220705-r1.ebuild | 413 --------------------
17 media-video/pipewire/pipewire-0.3.55-r1.ebuild | 424 ---------------------
18 6 files changed, 1304 deletions(-)
19
20 diff --git a/media-video/pipewire/Manifest b/media-video/pipewire/Manifest
21 index 5e3c5005ee95..456202c6afb0 100644
22 --- a/media-video/pipewire/Manifest
23 +++ b/media-video/pipewire/Manifest
24 @@ -1,5 +1,2 @@
25 DIST pipewire-0.3.51.tar.gz 1789070 BLAKE2B 8538eb9f2178efa26365f30b324b707826e580caa1fd9c09b62c561c140c14186e0d2b04808fa78eb5642ddccf1a347def19934ecd654be06b215a693075b6fc SHA512 a762fd260b4b14ad9ef142be11ab1c22268da6726e2179559ffb254f0ce7daf7a502779e33c64313a9c6a9fc1bd15150b76be04ec81aa27c35dbb4333cecdb4a
26 -DIST pipewire-0.3.52.tar.gz 1810238 BLAKE2B bb75eff5fe7700d0a303fbfed7910aebd82346a5a21c4a0d17c06e6991bc90bb6d4f6b9559c25788494cb11faff957523dcd7f0c4c8a40be11b81c63a5a9e5ef SHA512 30e9cf74c92babafe386f02a03bb5c41a8ee5591a02f15845cca1ee44f091ce68eb14d48943d43b680cb525026a19e0290997670f9a82156eaa72e974fe6d01a
27 -DIST pipewire-0.3.53_p20220705.tar.bz2 1358645 BLAKE2B 365e81ab114fb9b4abbd5351145d0558c7c00bdbccefc2f7bacb965018c1e7009b7b26b8e95baf35534b74cf9ce49483604841aa7ba949d6a94e720e8ec4233c SHA512 631e737e3517cb4d4c3f84e9540acde2cf94bde472626c61e0223ff4ac5cc2118a35dae79d009558384e24b955cf002d209db1bcf1465056757234725213f152
28 -DIST pipewire-0.3.55.tar.gz 1801857 BLAKE2B ee8d75bffba5f6b2e6ccd4da518339aa8e00e6afd8a4e8b6839bc0e4422b587f7543916ef161c9995bb7bfdf20032af984ac2fe9238ac9ad6160ab5d5942f700 SHA512 a139e51bc0d4144ae3bd3511962e541ae5c8a76d344d472805819e5bda6e62ec9807489c2a9e9f42bd9a25eff243f8a794b71d629438bf732a5cd92b85eaa9fc
29 DIST pipewire-0.3.56.tar.gz 1856321 BLAKE2B 62fb5d5a83b3cfc0555f09da42c8d4fbe69f34432add57f91a9c001535340a84f54572af4a5ba138251888cba9be0c038317dfe929d2e2ef36ff62f4679c6ea0 SHA512 a1ba598c56130a30e573d3ce3ac5879d800d3005a47075c45353d968c97c12f74d85802cd171b61558c06c474a03bbe4885396ca430a0af6c5672ed00f43d108
30
31 diff --git a/media-video/pipewire/files/pipewire-0.3.52-pulse-path.patch b/media-video/pipewire/files/pipewire-0.3.52-pulse-path.patch
32 deleted file mode 100644
33 index 09d8ffff699f..000000000000
34 --- a/media-video/pipewire/files/pipewire-0.3.52-pulse-path.patch
35 +++ /dev/null
36 @@ -1,78 +0,0 @@
37 -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/4821c7ca2fe5e25ba018e9f5d4967f08d6bb816f
38 -
39 -From: Wim Taymans <wtaymans@××××××.com>
40 -Date: Thu, 9 Jun 2022 17:06:07 +0200
41 -Subject: [PATCH] pulse-server: don't append "/pulse" to PULSE_RUNTIME_PATH
42 -
43 -Fixes #2431
44 ---- a/src/modules/module-protocol-pulse/server.c
45 -+++ b/src/modules/module-protocol-pulse/server.c
46 -@@ -460,7 +460,7 @@ static int parse_unix_address(const char *address, struct sockaddr_storage *addr
47 - if (address[0] != '/') {
48 - char runtime_dir[PATH_MAX];
49 -
50 -- if ((res = get_runtime_dir(runtime_dir, sizeof(runtime_dir), "pulse")) < 0)
51 -+ if ((res = get_runtime_dir(runtime_dir, sizeof(runtime_dir))) < 0)
52 - return res;
53 -
54 - res = snprintf(addr.sun_path, sizeof(addr.sun_path),
55 ---- a/src/modules/module-protocol-pulse/utils.c
56 -+++ b/src/modules/module-protocol-pulse/utils.c
57 -@@ -50,27 +50,30 @@
58 - #include "log.h"
59 - #include "utils.h"
60 -
61 --int get_runtime_dir(char *buf, size_t buflen, const char *dir)
62 -+int get_runtime_dir(char *buf, size_t buflen)
63 - {
64 -- const char *runtime_dir;
65 -+ const char *runtime_dir, *dir = NULL;
66 - struct stat stat_buf;
67 - int res, size;
68 -
69 - runtime_dir = getenv("PULSE_RUNTIME_PATH");
70 -- if (runtime_dir == NULL)
71 -+ if (runtime_dir == NULL) {
72 - runtime_dir = getenv("XDG_RUNTIME_DIR");
73 --
74 -+ dir = "pulse";
75 -+ }
76 - if (runtime_dir == NULL) {
77 - pw_log_error("could not find a suitable runtime directory in"
78 - "$PULSE_RUNTIME_PATH and $XDG_RUNTIME_DIR");
79 - return -ENOENT;
80 - }
81 -
82 -- size = snprintf(buf, buflen, "%s/%s", runtime_dir, dir);
83 -+ size = snprintf(buf, buflen, "%s%s%s", runtime_dir,
84 -+ dir ? "/" : "", dir ? dir : "");
85 - if (size < 0)
86 - return -errno;
87 - if ((size_t) size >= buflen) {
88 -- pw_log_error("path %s/%s too long", runtime_dir, dir);
89 -+ pw_log_error("path %s%s%s too long", runtime_dir,
90 -+ dir ? "/" : "", dir ? dir : "");
91 - return -ENAMETOOLONG;
92 - }
93 -
94 -@@ -182,7 +185,7 @@ int create_pid_file(void) {
95 - FILE *f;
96 - int res;
97 -
98 -- if ((res = get_runtime_dir(pid_file, sizeof(pid_file), "pulse")) < 0)
99 -+ if ((res = get_runtime_dir(pid_file, sizeof(pid_file))) < 0)
100 - return res;
101 -
102 - if (strlen(pid_file) > PATH_MAX - sizeof("/pid")) {
103 ---- a/src/modules/module-protocol-pulse/utils.h
104 -+++ b/src/modules/module-protocol-pulse/utils.h
105 -@@ -31,7 +31,7 @@
106 - struct client;
107 - struct pw_context;
108 -
109 --int get_runtime_dir(char *buf, size_t buflen, const char *dir);
110 -+int get_runtime_dir(char *buf, size_t buflen);
111 - int check_flatpak(struct client *client, pid_t pid);
112 - pid_t get_client_pid(struct client *client, int client_fd);
113 - const char *get_server_name(struct pw_context *context);
114 -GitLab
115
116 diff --git a/media-video/pipewire/files/pipewire-0.3.55-jack-mix.patch b/media-video/pipewire/files/pipewire-0.3.55-jack-mix.patch
117 deleted file mode 100644
118 index 8667b3a6d167..000000000000
119 --- a/media-video/pipewire/files/pipewire-0.3.55-jack-mix.patch
120 +++ /dev/null
121 @@ -1,20 +0,0 @@
122 -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/40552a0e914c3aef48ce59ce1bfb9d80516aa893
123 -
124 -From 40552a0e914c3aef48ce59ce1bfb9d80516aa893 Mon Sep 17 00:00:00 2001
125 -From: Wim Taymans <wtaymans@××××××.com>
126 -Date: Tue, 12 Jul 2022 15:10:02 +0200
127 -Subject: [PATCH] jack: only mix when we have input to mix
128 -
129 -Avoids a crash when starting ardour6.
130 ---- a/pipewire-jack/src/pipewire-jack.c
131 -+++ b/pipewire-jack/src/pipewire-jack.c
132 -@@ -4449,7 +4449,7 @@ static void *get_buffer_input_float(struct port *p, jack_nframes_t frames)
133 - }
134 - if (n_ptr == 1) {
135 - ptr = mix_ptr[0];
136 -- } else {
137 -+ } else if (n_ptr > 1) {
138 - ptr = p->emptyptr;
139 - mix_function(ptr, mix_ptr, n_ptr, ptr_aligned, frames);
140 - p->zeroed = false;
141 -GitLab
142
143 diff --git a/media-video/pipewire/pipewire-0.3.52-r1.ebuild b/media-video/pipewire/pipewire-0.3.52-r1.ebuild
144 deleted file mode 100644
145 index c94a3f03a994..000000000000
146 --- a/media-video/pipewire/pipewire-0.3.52-r1.ebuild
147 +++ /dev/null
148 @@ -1,366 +0,0 @@
149 -# Copyright 1999-2022 Gentoo Authors
150 -# Distributed under the terms of the GNU General Public License v2
151 -
152 -EAPI=8
153 -
154 -PYTHON_COMPAT=( python3_{8..11} )
155 -
156 -inherit flag-o-matic meson-multilib optfeature prefix python-any-r1 systemd udev
157 -
158 -if [[ ${PV} == 9999 ]]; then
159 - EGIT_REPO_URI="https://gitlab.freedesktop.org/${PN}/${PN}.git"
160 - inherit git-r3
161 -else
162 - if [[ ${PV} == *_p* ]] ; then
163 - MY_COMMIT=""
164 - SRC_URI="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${MY_COMMIT}/pipewire-${MY_COMMIT}.tar.bz2 -> ${P}.tar.bz2"
165 - S="${WORKDIR}"/${PN}-${MY_COMMIT}
166 - else
167 - SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.gz"
168 - fi
169 -
170 - KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
171 -fi
172 -
173 -DESCRIPTION="Multimedia processing graphs"
174 -HOMEPAGE="https://pipewire.org/"
175 -
176 -LICENSE="MIT LGPL-2.1+ GPL-2"
177 -# ABI was broken in 0.3.42 for https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/49
178 -SLOT="0/0.4"
179 -IUSE="bluetooth doc echo-cancel extra gstreamer jack-client jack-sdk lv2 pipewire-alsa ssl system-service systemd test udev v4l X zeroconf"
180 -
181 -# Once replacing system JACK libraries is possible, it's likely that
182 -# jack-client IUSE will need blocking to avoid users accidentally
183 -# configuring their systems to send PW sink output to the emulated
184 -# JACK's sink - doing so is likely to yield no audio, cause a CPU
185 -# cycles consuming loop (and may even cause GUI crashes)!
186 -
187 -REQUIRED_USE="
188 - jack-sdk? ( !jack-client )
189 - system-service? ( systemd )
190 -"
191 -
192 -RESTRICT="!test? ( test )"
193 -
194 -BDEPEND="
195 - >=dev-util/meson-0.59
196 - virtual/pkgconfig
197 - ${PYTHON_DEPS}
198 - $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]')
199 - doc? (
200 - app-doc/doxygen
201 - media-gfx/graphviz
202 - )
203 -"
204 -RDEPEND="
205 - acct-group/audio
206 - media-libs/alsa-lib
207 - sys-apps/dbus[${MULTILIB_USEDEP}]
208 - sys-libs/readline:=
209 - sys-libs/ncurses:=[unicode(+)]
210 - virtual/libintl[${MULTILIB_USEDEP}]
211 - bluetooth? (
212 - media-libs/fdk-aac
213 - media-libs/libldac
214 - media-libs/libfreeaptx
215 - media-libs/sbc
216 - >=net-wireless/bluez-4.101:=
217 - virtual/libusb:1
218 - )
219 - echo-cancel? ( media-libs/webrtc-audio-processing:0 )
220 - extra? (
221 - >=media-libs/libsndfile-1.0.20
222 - )
223 - gstreamer? (
224 - >=dev-libs/glib-2.32.0:2
225 - >=media-libs/gstreamer-1.10.0:1.0
226 - media-libs/gst-plugins-base:1.0
227 - )
228 - jack-client? ( >=media-sound/jack2-1.9.10:2[dbus] )
229 - jack-sdk? (
230 - !media-sound/jack-audio-connection-kit
231 - !media-sound/jack2
232 - )
233 - lv2? ( media-libs/lilv )
234 - pipewire-alsa? (
235 - >=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}]
236 - )
237 - !pipewire-alsa? ( media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio] )
238 - ssl? ( dev-libs/openssl:= )
239 - systemd? ( sys-apps/systemd )
240 - system-service? (
241 - acct-user/pipewire
242 - acct-group/pipewire
243 - )
244 - udev? ( virtual/libudev[${MULTILIB_USEDEP}] )
245 - v4l? ( media-libs/libv4l )
246 - X? (
247 - media-libs/libcanberra
248 - x11-libs/libX11
249 - x11-libs/libXfixes
250 - )
251 - zeroconf? ( net-dns/avahi )
252 -"
253 -
254 -DEPEND="${RDEPEND}"
255 -
256 -# TODO: Consider use cases where pipewire is not used for driving audio
257 -# Doing so with WirePlumber currently involves editing Lua scripts
258 -PDEPEND=">=media-video/wireplumber-0.4.8-r3"
259 -
260 -# Present RDEPEND that are currently always disabled due to the PW
261 -# code using them being required to be disabled by Gentoo guidelines
262 -# (i.e. developer binaries not meant for users) and unready code
263 -# media-video/ffmpeg:=
264 -# media-libs/libsdl2
265 -# >=media-libs/vulkan-loader-1.1.69
266 -#
267 -# Ditto for DEPEND
268 -# >=dev-util/vulkan-headers-1.1.69
269 -
270 -DOCS=( {README,INSTALL}.md NEWS )
271 -
272 -PATCHES=(
273 - "${FILESDIR}"/${PN}-0.3.25-enable-failed-mlock-warning.patch
274 - "${FILESDIR}"/${P}-pulse-path.patch
275 -)
276 -
277 -# limitsdfile related code taken from =sys-auth/realtime-base-0.1
278 -# with changes as necessary.
279 -limitsdfile=40-${PN}.conf
280 -
281 -python_check_deps() {
282 - has_version -b "dev-python/docutils[${PYTHON_USEDEP}]"
283 -}
284 -
285 -src_prepare() {
286 - default
287 -
288 - einfo "Generating ${limitsdfile}"
289 - cat > ${limitsdfile} <<- EOF || die
290 - # Start of ${limitsdfile} from ${P}
291 -
292 - @audio - memlock 256
293 -
294 - $(use system-service && {
295 - echo @pipewire - rtprio 95
296 - echo @pipewire - nice -19
297 - echo @pipewire - memlock 4194304
298 - })
299 -
300 - # End of ${limitsdfile} from ${P}
301 - EOF
302 -}
303 -
304 -multilib_src_configure() {
305 - # https://bugs.gentoo.org/838301
306 - filter-flags -fno-semantic-interposition
307 -
308 - local emesonargs=(
309 - -Ddocdir="${EPREFIX}"/usr/share/doc/${PF}
310 -
311 - $(meson_native_use_feature zeroconf avahi)
312 - $(meson_native_use_feature doc docs)
313 - $(meson_native_enabled examples) # TODO: Figure out if this is still important now that media-session gone
314 - $(meson_native_enabled man)
315 - $(meson_feature test tests)
316 - -Dinstalled_tests=disabled # Matches upstream; Gentoo never installs tests
317 - $(meson_native_use_feature gstreamer)
318 - $(meson_native_use_feature gstreamer gstreamer-device-provider)
319 - $(meson_native_use_feature systemd)
320 -
321 - $(meson_native_use_feature system-service systemd-system-service)
322 - -Dsystemd-system-unit-dir="$(systemd_get_systemunitdir)"
323 - -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)"
324 -
325 - $(meson_native_use_feature systemd systemd-user-service)
326 - $(meson_feature pipewire-alsa) # Allows integrating ALSA apps into PW graph
327 - -Dspa-plugins=enabled
328 - -Dalsa=enabled # Allows using kernel ALSA for sound I/O (NOTE: media-session is gone so IUSE=alsa/spa_alsa/alsa-backend might be possible)
329 - -Daudiomixer=enabled # Matches upstream
330 - -Daudioconvert=enabled # Matches upstream
331 - $(meson_native_use_feature bluetooth bluez5)
332 - $(meson_native_use_feature bluetooth bluez5-backend-hsp-native)
333 - $(meson_native_use_feature bluetooth bluez5-backend-hfp-native)
334 - $(meson_native_use_feature bluetooth bluez5-backend-ofono)
335 - $(meson_native_use_feature bluetooth bluez5-backend-hsphfpd)
336 - $(meson_native_use_feature bluetooth bluez5-codec-aac)
337 - $(meson_native_use_feature bluetooth bluez5-codec-aptx)
338 - $(meson_native_use_feature bluetooth bluez5-codec-ldac)
339 - $(meson_native_use_feature bluetooth libusb) # At least for now only used by bluez5 native (quirk detection of adapters)
340 - $(meson_native_use_feature echo-cancel echo-cancel-webrtc) #807889
341 - # Not yet packaged.
342 - -Dbluez5-codec-lc3plus=disabled
343 - -Dcontrol=enabled # Matches upstream
344 - -Daudiotestsrc=enabled # Matches upstream
345 - -Dffmpeg=disabled # Disabled by upstream and no major developments to spa/plugins/ffmpeg/ since May 2020
346 - -Dpipewire-jack=enabled # Allows integrating JACK apps into PW graph
347 - $(meson_native_use_feature jack-client jack) # Allows PW to act as a JACK client
348 - $(meson_use jack-sdk jack-devel)
349 - $(usex jack-sdk "-Dlibjack-path=${EPREFIX}/usr/$(get_libdir)" '')
350 - -Dsupport=enabled # Miscellaneous/common plugins, such as null sink
351 - -Devl=disabled # Matches upstream
352 - -Dtest=disabled # fakesink and fakesource plugins
353 - $(meson_native_use_feature lv2)
354 - $(meson_native_use_feature v4l v4l2)
355 - -Dlibcamera=disabled # libcamera is not in Portage tree
356 - $(meson_native_use_feature ssl raop)
357 - -Dvideoconvert=enabled # Matches upstream
358 - -Dvideotestsrc=enabled # Matches upstream
359 - -Dvolume=enabled # Matches upstream
360 - -Dvulkan=disabled # Uses pre-compiled Vulkan compute shader to provide a CGI video source (dev thing; disabled by upstream)
361 - $(meson_native_use_feature extra pw-cat)
362 - $(meson_feature udev)
363 - -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d"
364 - -Dsdl2=disabled # Controls SDL2 dependent code (currently only examples when -Dinstalled_tests=enabled which we never install)
365 - $(meson_native_use_feature extra sndfile) # Enables libsndfile dependent code (currently only pw-cat)
366 - -Dsession-managers="[]" # All available session managers are now their own projects, so there's nothing to build
367 -
368 - # Just for bell sounds in X11 right now.
369 - $(meson_native_use_feature X x11)
370 - $(meson_native_use_feature X x11-xfixes)
371 - $(meson_native_use_feature X libcanberra)
372 - )
373 -
374 - meson_src_configure
375 -}
376 -
377 -multilib_src_install() {
378 - # Our custom DOCS do not exist in multilib source directory
379 - DOCS= meson_src_install
380 -}
381 -
382 -multilib_src_install_all() {
383 - einstalldocs
384 -
385 - insinto /etc/security/limits.d
386 - doins ${limitsdfile}
387 -
388 - if use pipewire-alsa; then
389 - dodir /etc/alsa/conf.d
390 -
391 - # Install pipewire conf loader hook
392 - insinto /usr/share/alsa/alsa.conf.d
393 - doins "${FILESDIR}"/99-pipewire-default-hook.conf
394 - eprefixify "${ED}"/usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf
395 -
396 - # These will break if someone has /etc that is a symbolic link to a subfolder! See #724222
397 - # And the current dosym8 -r implementation is likely affected by the same issue, too.
398 - dosym ../../../usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/50-pipewire.conf
399 - dosym ../../../usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf /etc/alsa/conf.d/99-pipewire-default-hook.conf
400 - fi
401 -
402 - if ! use systemd; then
403 - insinto /etc/xdg/autostart
404 - newins "${FILESDIR}"/pipewire.desktop-r1 pipewire.desktop
405 -
406 - exeinto /usr/bin
407 - newexe "${FILESDIR}"/gentoo-pipewire-launcher.in gentoo-pipewire-launcher
408 - eprefixify "${ED}"/usr/bin/gentoo-pipewire-launcher
409 - fi
410 -}
411 -
412 -pkg_postinst() {
413 - use udev && udev_reload
414 -
415 - elog "It is recommended to raise RLIMIT_MEMLOCK to 256 for users"
416 - elog "using PipeWire. Do it either manually or add yourself"
417 - elog "to the 'audio' group:"
418 - elog
419 - elog " usermod -aG audio <youruser>"
420 - elog
421 -
422 - if ! use jack-sdk; then
423 - elog "JACK emulation is incomplete and not all programs will work. PipeWire's"
424 - elog "alternative libraries have been installed to a non-default location."
425 - elog "To use them, put pw-jack <application> before every JACK application."
426 - elog "When using pw-jack, do not run jackd/jackdbus. However, a virtual/jack"
427 - elog "provider is still needed to compile the JACK applications themselves."
428 - elog
429 - fi
430 -
431 - if use systemd; then
432 - elog "When switching from PulseAudio, you may need to disable PulseAudio:"
433 - elog
434 - elog " systemctl --user disable pulseaudio.service pulseaudio.socket"
435 - elog
436 - elog "To use PipeWire, the user units must be manually enabled"
437 - elog "by running this command as each user you use for desktop activities:"
438 - elog
439 - elog " systemctl --user enable pipewire.socket pipewire-pulse.socket"
440 - elog
441 - elog "A reboot is recommended to avoid interferences from still running"
442 - elog "PulseAudio daemon."
443 - elog
444 - elog "Both new users and those upgrading need to enable WirePlumber"
445 - elog "for relevant users:"
446 - elog
447 - elog " systemctl --user disable pipewire-media-session.service"
448 - elog " systemctl --user --force enable wireplumber.service"
449 - elog
450 - elog "Root user may replace --user with --global to change system default"
451 - elog "configuration for all of the above commands."
452 - else
453 - ewarn "PipeWire daemon startup has been moved to a launcher script!"
454 - ewarn "Make sure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist or no"
455 - ewarn "longer is set to start a session manager or PulseAudio compatibility daemon (all"
456 - ewarn "lines similar to '{ path = /usr/bin/pipewire*' should be commented out)"
457 - ewarn
458 - ewarn "Those manually starting /usr/bin/pipewire via .xinitrc or similar _must_ from"
459 - ewarn "now on start ${EROOT}/usr/bin/gentoo-pipewire-launcher instead! It is highly"
460 - ewarn "advised that a D-Bus user session is set up before starting the script."
461 - ewarn
462 - if has_version 'media-sound/pulseaudio[daemon]' || has_version 'media-sound/pulseaudio-daemon'; then
463 - elog "This ebuild auto-enables PulseAudio replacement. Because of that, users"
464 - elog "are recommended to edit pulseaudio client configuration files:"
465 - elog "${EROOT}/etc/pulse/client.conf and ${EROOT}/etc/pulse/client.conf.d/enable-autospawn.conf"
466 - elog "if it exists, and disable autospawning of the original daemon by setting:"
467 - elog
468 - elog " autospawn = no"
469 - elog
470 - elog "Please note that the semicolon (;) must _NOT_ be at the beginning of the line!"
471 - elog
472 - elog "Alternatively, if replacing PulseAudio daemon is not desired, edit"
473 - elog "${EROOT}/usr/bin/gentoo-pipewire-launcher by commenting out the relevant"
474 - elog "command:"
475 - elog
476 - elog "#${EROOT}/usr/bin/pipewire -c pipewire-pulse.conf &"
477 - elog
478 - fi
479 - elog "NOTE:"
480 - elog "Starting with PipeWire-0.3.30, this package is no longer installing its config"
481 - elog "into ${EROOT}/etc/pipewire by default. In case you need to change"
482 - elog "its config, please start by copying default config from ${EROOT}/usr/share/pipewire"
483 - elog "and just override the sections you want to change."
484 - fi
485 - elog
486 -
487 - elog "For latest tips and tricks, troubleshooting information and documentation"
488 - elog "in general, please refer to https://wiki.gentoo.org/wiki/PipeWire"
489 - elog
490 -
491 - optfeature_header "The following can be installed for optional runtime features:"
492 - optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit
493 -
494 - if has_version 'net-misc/ofono' ; then
495 - ewarn "Native backend has become default. Please disable oFono via:"
496 - if systemd_is_booted ; then
497 - ewarn "systemctl disable ofono"
498 - else
499 - ewarn "rc-update delete ofono"
500 - fi
501 - ewarn
502 - fi
503 -
504 - if use system-service; then
505 - ewarn
506 - ewarn "WARNING: you have enabled the system-service USE flag, which installs"
507 - ewarn "the system-wide systemd units that enable PipeWire to run as a system"
508 - ewarn "service. This is more than likely NOT what you want. You are strongly"
509 - ewarn "advised not to enable this mode and instead stick with systemd user"
510 - ewarn "units. The default configuration files will likely not work out of"
511 - ewarn "box, and you are on your own with configuration."
512 - ewarn
513 - fi
514 -}
515
516 diff --git a/media-video/pipewire/pipewire-0.3.53_p20220705-r1.ebuild b/media-video/pipewire/pipewire-0.3.53_p20220705-r1.ebuild
517 deleted file mode 100644
518 index e8e364be1937..000000000000
519 --- a/media-video/pipewire/pipewire-0.3.53_p20220705-r1.ebuild
520 +++ /dev/null
521 @@ -1,413 +0,0 @@
522 -# Copyright 1999-2022 Gentoo Authors
523 -# Distributed under the terms of the GNU General Public License v2
524 -
525 -EAPI=8
526 -
527 -PYTHON_COMPAT=( python3_{8..11} )
528 -
529 -inherit flag-o-matic meson-multilib optfeature prefix python-any-r1 systemd udev
530 -
531 -if [[ ${PV} == 9999 ]]; then
532 - EGIT_REPO_URI="https://gitlab.freedesktop.org/${PN}/${PN}.git"
533 - inherit git-r3
534 -else
535 - if [[ ${PV} == *_p* ]] ; then
536 - MY_COMMIT="76350cebefe9bdabe24e9d043b83737547c225d8"
537 - SRC_URI="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${MY_COMMIT}/pipewire-${MY_COMMIT}.tar.bz2 -> ${P}.tar.bz2"
538 - S="${WORKDIR}"/${PN}-${MY_COMMIT}
539 - else
540 - SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.gz"
541 - fi
542 -
543 - KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
544 -fi
545 -
546 -DESCRIPTION="Multimedia processing graphs"
547 -HOMEPAGE="https://pipewire.org/"
548 -
549 -LICENSE="MIT LGPL-2.1+ GPL-2"
550 -# ABI was broken in 0.3.42 for https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/49
551 -SLOT="0/0.4"
552 -IUSE="bluetooth dbus doc echo-cancel extra gstreamer jack-client jack-sdk lv2
553 -pipewire-alsa sound-server ssl system-service systemd test udev v4l X zeroconf"
554 -
555 -# Once replacing system JACK libraries is possible, it's likely that
556 -# jack-client IUSE will need blocking to avoid users accidentally
557 -# configuring their systems to send PW sink output to the emulated
558 -# JACK's sink - doing so is likely to yield no audio, cause a CPU
559 -# cycles consuming loop (and may even cause GUI crashes)!
560 -
561 -# TODO: There should be "sound-server? ( || ( alsa bluetooth ) )" here, but ALSA is always enabled
562 -# TODO: Pulseaudio alsa plugin performs runtime check that pulseaudio server connection will work
563 -# which provides adequate guarantee that alsa-lib will be able to provide audio services.
564 -# If that works, pulseaudio defaults are loaded into alsa-lib runtime replacing default PCM and CTL.
565 -# When pipewire-alsa will be able to perform similar check, pipewire-alsa can be enabled unconditionally.
566 -REQUIRED_USE="
567 - jack-sdk? ( !jack-client )
568 - system-service? ( systemd )
569 - !sound-server? ( !pipewire-alsa )
570 - jack-client? ( dbus )
571 -"
572 -
573 -RESTRICT="!test? ( test )"
574 -
575 -BDEPEND="
576 - >=dev-util/meson-0.59
577 - virtual/pkgconfig
578 - ${PYTHON_DEPS}
579 - $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]')
580 - doc? (
581 - app-doc/doxygen
582 - media-gfx/graphviz
583 - )
584 -"
585 -RDEPEND="
586 - acct-group/audio
587 - media-libs/alsa-lib
588 - sys-libs/readline:=
589 - sys-libs/ncurses:=[unicode(+)]
590 - virtual/libintl[${MULTILIB_USEDEP}]
591 - bluetooth? (
592 - media-libs/fdk-aac
593 - media-libs/libldac
594 - media-libs/libfreeaptx
595 - media-libs/sbc
596 - >=net-wireless/bluez-4.101:=
597 - virtual/libusb:1
598 - )
599 - dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
600 - echo-cancel? ( media-libs/webrtc-audio-processing:0 )
601 - extra? (
602 - >=media-libs/libsndfile-1.0.20
603 - )
604 - gstreamer? (
605 - >=dev-libs/glib-2.32.0:2
606 - >=media-libs/gstreamer-1.10.0:1.0
607 - media-libs/gst-plugins-base:1.0
608 - )
609 - jack-client? ( >=media-sound/jack2-1.9.10:2[dbus] )
610 - jack-sdk? (
611 - !media-sound/jack-audio-connection-kit
612 - !media-sound/jack2
613 - )
614 - lv2? ( media-libs/lilv )
615 - pipewire-alsa? (
616 - >=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}]
617 - )
618 - sound-server? (
619 - !media-sound/pulseaudio[daemon(+)]
620 - !media-sound/pulseaudio-daemon
621 - )
622 - ssl? ( dev-libs/openssl:= )
623 - systemd? ( sys-apps/systemd )
624 - system-service? (
625 - acct-user/pipewire
626 - acct-group/pipewire
627 - )
628 - udev? ( virtual/libudev[${MULTILIB_USEDEP}] )
629 - v4l? ( media-libs/libv4l )
630 - X? (
631 - media-libs/libcanberra
632 - x11-libs/libX11
633 - x11-libs/libXfixes
634 - )
635 - zeroconf? ( net-dns/avahi )
636 -"
637 -
638 -DEPEND="${RDEPEND}"
639 -
640 -# TODO: Consider use cases where pipewire is not used for driving audio
641 -# Doing so with WirePlumber currently involves editing Lua scripts
642 -PDEPEND=">=media-video/wireplumber-0.4.8-r3"
643 -
644 -# Present RDEPEND that are currently always disabled due to the PW
645 -# code using them being required to be disabled by Gentoo guidelines
646 -# (i.e. developer binaries not meant for users) and unready code
647 -# media-video/ffmpeg:=
648 -# media-libs/libsdl2
649 -# >=media-libs/vulkan-loader-1.1.69
650 -#
651 -# Ditto for DEPEND
652 -# >=dev-util/vulkan-headers-1.1.69
653 -
654 -DOCS=( {README,INSTALL}.md NEWS )
655 -
656 -PATCHES=(
657 - "${FILESDIR}"/${PN}-0.3.25-enable-failed-mlock-warning.patch
658 -)
659 -
660 -# limitsdfile related code taken from =sys-auth/realtime-base-0.1
661 -# with changes as necessary.
662 -limitsdfile=40-${PN}.conf
663 -
664 -python_check_deps() {
665 - has_version -b "dev-python/docutils[${PYTHON_USEDEP}]"
666 -}
667 -
668 -src_prepare() {
669 - default
670 -
671 - einfo "Generating ${limitsdfile}"
672 - cat > ${limitsdfile} <<- EOF || die
673 - # Start of ${limitsdfile} from ${P}
674 -
675 - @audio - memlock 256
676 -
677 - $(use system-service && {
678 - echo @pipewire - rtprio 95
679 - echo @pipewire - nice -19
680 - echo @pipewire - memlock 4194304
681 - })
682 -
683 - # End of ${limitsdfile} from ${P}
684 - EOF
685 -}
686 -
687 -multilib_src_configure() {
688 - # https://bugs.gentoo.org/838301
689 - filter-flags -fno-semantic-interposition
690 -
691 - local emesonargs=(
692 - -Ddocdir="${EPREFIX}"/usr/share/doc/${PF}
693 -
694 - $(meson_feature dbus)
695 - $(meson_native_use_feature zeroconf avahi)
696 - $(meson_native_use_feature doc docs)
697 - $(meson_native_enabled examples) # TODO: Figure out if this is still important now that media-session gone
698 - $(meson_native_enabled man)
699 - $(meson_feature test tests)
700 - -Dinstalled_tests=disabled # Matches upstream; Gentoo never installs tests
701 - $(meson_native_use_feature gstreamer)
702 - $(meson_native_use_feature gstreamer gstreamer-device-provider)
703 - $(meson_native_use_feature systemd)
704 -
705 - $(meson_native_use_feature system-service systemd-system-service)
706 - -Dsystemd-system-unit-dir="$(systemd_get_systemunitdir)"
707 - -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)"
708 -
709 - $(meson_native_use_feature systemd systemd-user-service)
710 - $(meson_feature pipewire-alsa) # Allows integrating ALSA apps into PW graph
711 - -Dspa-plugins=enabled
712 - -Dalsa=enabled # Allows using kernel ALSA for sound I/O (NOTE: media-session is gone so IUSE=alsa/spa_alsa/alsa-backend might be possible)
713 - -Daudiomixer=enabled # Matches upstream
714 - -Daudioconvert=enabled # Matches upstream
715 - $(meson_native_use_feature bluetooth bluez5)
716 - $(meson_native_use_feature bluetooth bluez5-backend-hsp-native)
717 - $(meson_native_use_feature bluetooth bluez5-backend-hfp-native)
718 - $(meson_native_use_feature bluetooth bluez5-backend-ofono)
719 - $(meson_native_use_feature bluetooth bluez5-backend-hsphfpd)
720 - $(meson_native_use_feature bluetooth bluez5-codec-aac)
721 - $(meson_native_use_feature bluetooth bluez5-codec-aptx)
722 - $(meson_native_use_feature bluetooth bluez5-codec-ldac)
723 - $(meson_native_use_feature bluetooth libusb) # At least for now only used by bluez5 native (quirk detection of adapters)
724 - $(meson_native_use_feature echo-cancel echo-cancel-webrtc) #807889
725 - # Not yet packaged.
726 - -Dbluez5-codec-lc3plus=disabled
727 - -Dcontrol=enabled # Matches upstream
728 - -Daudiotestsrc=enabled # Matches upstream
729 - -Dffmpeg=disabled # Disabled by upstream and no major developments to spa/plugins/ffmpeg/ since May 2020
730 - -Dpipewire-jack=enabled # Allows integrating JACK apps into PW graph
731 - $(meson_native_use_feature jack-client jack) # Allows PW to act as a JACK client
732 - $(meson_use jack-sdk jack-devel)
733 - $(usex jack-sdk "-Dlibjack-path=${EPREFIX}/usr/$(get_libdir)" '')
734 - -Dsupport=enabled # Miscellaneous/common plugins, such as null sink
735 - -Devl=disabled # Matches upstream
736 - -Dtest=disabled # fakesink and fakesource plugins
737 - $(meson_native_use_feature lv2)
738 - $(meson_native_use_feature v4l v4l2)
739 - -Dlibcamera=disabled # libcamera is not in Portage tree
740 - $(meson_native_use_feature ssl raop)
741 - -Dvideoconvert=enabled # Matches upstream
742 - -Dvideotestsrc=enabled # Matches upstream
743 - -Dvolume=enabled # Matches upstream
744 - -Dvulkan=disabled # Uses pre-compiled Vulkan compute shader to provide a CGI video source (dev thing; disabled by upstream)
745 - $(meson_native_use_feature extra pw-cat)
746 - $(meson_feature udev)
747 - -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d"
748 - -Dsdl2=disabled # Controls SDL2 dependent code (currently only examples when -Dinstalled_tests=enabled which we never install)
749 - $(meson_native_use_feature extra sndfile) # Enables libsndfile dependent code (currently only pw-cat)
750 - -Dsession-managers="[]" # All available session managers are now their own projects, so there's nothing to build
751 -
752 - # Just for bell sounds in X11 right now.
753 - $(meson_native_use_feature X x11)
754 - $(meson_native_use_feature X x11-xfixes)
755 - $(meson_native_use_feature X libcanberra)
756 - )
757 -
758 - meson_src_configure
759 -}
760 -
761 -multilib_src_install() {
762 - # Our custom DOCS do not exist in multilib source directory
763 - DOCS= meson_src_install
764 -}
765 -
766 -multilib_src_install_all() {
767 - einstalldocs
768 -
769 - insinto /etc/security/limits.d
770 - doins ${limitsdfile}
771 -
772 - if use pipewire-alsa; then
773 - dodir /etc/alsa/conf.d
774 -
775 - # Install pipewire conf loader hook
776 - insinto /usr/share/alsa/alsa.conf.d
777 - doins "${FILESDIR}"/99-pipewire-default-hook.conf
778 - eprefixify "${ED}"/usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf
779 -
780 - # These will break if someone has /etc that is a symbolic link to a subfolder! See #724222
781 - # And the current dosym8 -r implementation is likely affected by the same issue, too.
782 - dosym ../../../usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/50-pipewire.conf
783 - dosym ../../../usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf /etc/alsa/conf.d/99-pipewire-default-hook.conf
784 - fi
785 -
786 - # Enable required wireplumber alsa and bluez monitors
787 - if use sound-server; then
788 - dodir /etc/wireplumber/main.lua.d
789 - echo "alsa_monitor.enabled = true" > "${ED}"/etc/wireplumber/main.lua.d/89-gentoo-sound-server-enable-alsa-monitor.lua || die
790 -
791 - dodir /etc/wireplumber/bluetooth.lua.d
792 - echo "bluez_monitor.enabled = true" > "${ED}"/etc/wireplumber/bluetooth.lua.d/89-gentoo-sound-server-enable-bluez-monitor.lua || die
793 - fi
794 -
795 - if ! use systemd; then
796 - insinto /etc/xdg/autostart
797 - newins "${FILESDIR}"/pipewire.desktop-r1 pipewire.desktop
798 -
799 - exeinto /usr/bin
800 - newexe "${FILESDIR}"/gentoo-pipewire-launcher.in gentoo-pipewire-launcher
801 -
802 - # Disable pipewire-pulse if sound-server is disabled.
803 - if ! use sound-server ; then
804 - sed -i -s '/pipewire -c pipewire-pulse.conf/s/^/#/' "${ED}"/usr/bin/gentoo-pipewire-launcher || die
805 - fi
806 -
807 - eprefixify "${ED}"/usr/bin/gentoo-pipewire-launcher
808 - fi
809 -}
810 -
811 -pkg_postrm() {
812 - use udev && udev_reload
813 -}
814 -
815 -pkg_postinst() {
816 - use udev && udev_reload
817 -
818 - elog "It is recommended to raise RLIMIT_MEMLOCK to 256 for users"
819 - elog "using PipeWire. Do it either manually or add yourself"
820 - elog "to the 'audio' group:"
821 - elog
822 - elog " usermod -aG audio <youruser>"
823 - elog
824 -
825 - local ver
826 - for ver in ${REPLACING_VERSIONS} ; do
827 - if ver_test ${ver} -le 0.3.53-r1 && ! use sound-server ; then
828 - ewarn "USE=sound-server is disabled! If you want PipeWire to provide"
829 - ewarn "your sound, please enable it. See the wiki at"
830 - ewarn "https://wiki.gentoo.org/wiki/PipeWire#Replacing_PulseAudio"
831 - ewarn "for more details."
832 -
833 - break
834 - fi
835 - done
836 -
837 - if ! use jack-sdk; then
838 - elog "JACK emulation is incomplete and not all programs will work. PipeWire's"
839 - elog "alternative libraries have been installed to a non-default location."
840 - elog "To use them, put pw-jack <application> before every JACK application."
841 - elog "When using pw-jack, do not run jackd/jackdbus. However, a virtual/jack"
842 - elog "provider is still needed to compile the JACK applications themselves."
843 - elog
844 - fi
845 -
846 - if use systemd; then
847 - elog "When switching from PulseAudio, you may need to disable PulseAudio:"
848 - elog
849 - elog " systemctl --user disable pulseaudio.service pulseaudio.socket"
850 - elog
851 - elog "To use PipeWire, the user units must be manually enabled"
852 - elog "by running this command as each user you use for desktop activities:"
853 - elog
854 - elog " systemctl --user enable pipewire.socket pipewire-pulse.socket"
855 - elog
856 - elog "A reboot is recommended to avoid interferences from still running"
857 - elog "PulseAudio daemon."
858 - elog
859 - elog "Both new users and those upgrading need to enable WirePlumber"
860 - elog "for relevant users:"
861 - elog
862 - elog " systemctl --user disable pipewire-media-session.service"
863 - elog " systemctl --user --force enable wireplumber.service"
864 - elog
865 - elog "Root user may replace --user with --global to change system default"
866 - elog "configuration for all of the above commands."
867 - else
868 - ewarn "PipeWire daemon startup has been moved to a launcher script!"
869 - ewarn "Make sure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist or no"
870 - ewarn "longer is set to start a session manager or PulseAudio compatibility daemon (all"
871 - ewarn "lines similar to '{ path = /usr/bin/pipewire*' should be commented out)"
872 - ewarn
873 - ewarn "Those manually starting /usr/bin/pipewire via .xinitrc or similar _must_ from"
874 - ewarn "now on start ${EROOT}/usr/bin/gentoo-pipewire-launcher instead! It is highly"
875 - ewarn "advised that a D-Bus user session is set up before starting the script."
876 - ewarn
877 -
878 - if use sound-server && ( has_version 'media-sound/pulseaudio[daemon]' || has_version 'media-sound/pulseaudio-daemon' ) ; then
879 - elog "This ebuild auto-enables PulseAudio replacement. Because of that, users"
880 - elog "are recommended to edit pulseaudio client configuration files:"
881 - elog "${EROOT}/etc/pulse/client.conf and ${EROOT}/etc/pulse/client.conf.d/enable-autospawn.conf"
882 - elog "if it exists, and disable autospawning of the original daemon by setting:"
883 - elog
884 - elog " autospawn = no"
885 - elog
886 - elog "Please note that the semicolon (;) must _NOT_ be at the beginning of the line!"
887 - elog
888 - elog "Alternatively, if replacing PulseAudio daemon is not desired, edit"
889 - elog "${EROOT}/usr/bin/gentoo-pipewire-launcher by commenting out the relevant"
890 - elog "command:"
891 - elog
892 - elog "#${EROOT}/usr/bin/pipewire -c pipewire-pulse.conf &"
893 - elog
894 - fi
895 - elog "NOTE:"
896 - elog "Starting with PipeWire-0.3.30, this package is no longer installing its config"
897 - elog "into ${EROOT}/etc/pipewire by default. In case you need to change"
898 - elog "its config, please start by copying default config from ${EROOT}/usr/share/pipewire"
899 - elog "and just override the sections you want to change."
900 - fi
901 - elog
902 -
903 - elog "For latest tips and tricks, troubleshooting information and documentation"
904 - elog "in general, please refer to https://wiki.gentoo.org/wiki/PipeWire"
905 - elog
906 -
907 - optfeature_header "The following can be installed for optional runtime features:"
908 - optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit
909 -
910 - if use sound-server && ! use pipewire-alsa; then
911 - optfeature "ALSA plugin to use PulseAudio interface for output" "media-plugins/alsa-plugins[pulseaudio]"
912 - fi
913 -
914 - if has_version 'net-misc/ofono' ; then
915 - ewarn "Native backend has become default. Please disable oFono via:"
916 - if systemd_is_booted ; then
917 - ewarn "systemctl disable ofono"
918 - else
919 - ewarn "rc-update delete ofono"
920 - fi
921 - ewarn
922 - fi
923 -
924 - if use system-service; then
925 - ewarn
926 - ewarn "WARNING: you have enabled the system-service USE flag, which installs"
927 - ewarn "the system-wide systemd units that enable PipeWire to run as a system"
928 - ewarn "service. This is more than likely NOT what you want. You are strongly"
929 - ewarn "advised not to enable this mode and instead stick with systemd user"
930 - ewarn "units. The default configuration files will likely not work out of"
931 - ewarn "box, and you are on your own with configuration."
932 - ewarn
933 - fi
934 -}
935
936 diff --git a/media-video/pipewire/pipewire-0.3.55-r1.ebuild b/media-video/pipewire/pipewire-0.3.55-r1.ebuild
937 deleted file mode 100644
938 index 5e6d7aa08a0a..000000000000
939 --- a/media-video/pipewire/pipewire-0.3.55-r1.ebuild
940 +++ /dev/null
941 @@ -1,424 +0,0 @@
942 -# Copyright 1999-2022 Gentoo Authors
943 -# Distributed under the terms of the GNU General Public License v2
944 -
945 -EAPI=8
946 -
947 -# 1. Please regularly check (even at the point of bumping) Fedora's packaging
948 -# for needed backports at https://src.fedoraproject.org/rpms/pipewire/tree/rawhide.
949 -#
950 -# 2. Upstream also sometimes amend release notes for the previous release to mention
951 -# needed patches, e.g. https://gitlab.freedesktop.org/pipewire/pipewire/-/tags/0.3.55#distros
952 -#
953 -# 3. Keep an eye on git master (for both PipeWire and WirePlumber) as things
954 -# continue to move quickly. It's not uncommon for fixes to be made shortly
955 -# after releases.
956 -
957 -PYTHON_COMPAT=( python3_{8..11} )
958 -
959 -inherit flag-o-matic meson-multilib optfeature prefix python-any-r1 systemd udev
960 -
961 -if [[ ${PV} == 9999 ]]; then
962 - EGIT_REPO_URI="https://gitlab.freedesktop.org/${PN}/${PN}.git"
963 - inherit git-r3
964 -else
965 - if [[ ${PV} == *_p* ]] ; then
966 - MY_COMMIT=""
967 - SRC_URI="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${MY_COMMIT}/pipewire-${MY_COMMIT}.tar.bz2 -> ${P}.tar.bz2"
968 - S="${WORKDIR}"/${PN}-${MY_COMMIT}
969 - else
970 - SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.gz"
971 - fi
972 -
973 - KEYWORDS="amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
974 -fi
975 -
976 -DESCRIPTION="Multimedia processing graphs"
977 -HOMEPAGE="https://pipewire.org/"
978 -
979 -LICENSE="MIT LGPL-2.1+ GPL-2"
980 -# ABI was broken in 0.3.42 for https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/49
981 -SLOT="0/0.4"
982 -IUSE="bluetooth dbus doc echo-cancel extra gstreamer jack-client jack-sdk lv2
983 -pipewire-alsa sound-server ssl system-service systemd test udev v4l X zeroconf"
984 -
985 -# Once replacing system JACK libraries is possible, it's likely that
986 -# jack-client IUSE will need blocking to avoid users accidentally
987 -# configuring their systems to send PW sink output to the emulated
988 -# JACK's sink - doing so is likely to yield no audio, cause a CPU
989 -# cycles consuming loop (and may even cause GUI crashes)!
990 -
991 -# TODO: There should be "sound-server? ( || ( alsa bluetooth ) )" here, but ALSA is always enabled
992 -# TODO: Pulseaudio alsa plugin performs runtime check that pulseaudio server connection will work
993 -# which provides adequate guarantee that alsa-lib will be able to provide audio services.
994 -# If that works, pulseaudio defaults are loaded into alsa-lib runtime replacing default PCM and CTL.
995 -# When pipewire-alsa will be able to perform similar check, pipewire-alsa can be enabled unconditionally.
996 -REQUIRED_USE="
997 - jack-sdk? ( !jack-client )
998 - system-service? ( systemd )
999 - !sound-server? ( !pipewire-alsa )
1000 - jack-client? ( dbus )
1001 -"
1002 -
1003 -RESTRICT="!test? ( test )"
1004 -
1005 -BDEPEND="
1006 - >=dev-util/meson-0.59
1007 - virtual/pkgconfig
1008 - ${PYTHON_DEPS}
1009 - $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]')
1010 - doc? (
1011 - app-doc/doxygen
1012 - media-gfx/graphviz
1013 - )
1014 -"
1015 -RDEPEND="
1016 - acct-group/audio
1017 - media-libs/alsa-lib
1018 - sys-libs/readline:=
1019 - sys-libs/ncurses:=[unicode(+)]
1020 - virtual/libintl[${MULTILIB_USEDEP}]
1021 - bluetooth? (
1022 - media-libs/fdk-aac
1023 - media-libs/libldac
1024 - media-libs/libfreeaptx
1025 - media-libs/sbc
1026 - >=net-wireless/bluez-4.101:=
1027 - virtual/libusb:1
1028 - )
1029 - dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
1030 - echo-cancel? ( media-libs/webrtc-audio-processing:0 )
1031 - extra? (
1032 - >=media-libs/libsndfile-1.0.20
1033 - )
1034 - gstreamer? (
1035 - >=dev-libs/glib-2.32.0:2
1036 - >=media-libs/gstreamer-1.10.0:1.0
1037 - media-libs/gst-plugins-base:1.0
1038 - )
1039 - jack-client? ( >=media-sound/jack2-1.9.10:2[dbus] )
1040 - jack-sdk? (
1041 - !media-sound/jack-audio-connection-kit
1042 - !media-sound/jack2
1043 - )
1044 - lv2? ( media-libs/lilv )
1045 - pipewire-alsa? (
1046 - >=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}]
1047 - )
1048 - sound-server? (
1049 - !media-sound/pulseaudio[daemon(+)]
1050 - !media-sound/pulseaudio-daemon
1051 - )
1052 - ssl? ( dev-libs/openssl:= )
1053 - systemd? ( sys-apps/systemd )
1054 - system-service? (
1055 - acct-user/pipewire
1056 - acct-group/pipewire
1057 - )
1058 - udev? ( virtual/libudev[${MULTILIB_USEDEP}] )
1059 - v4l? ( media-libs/libv4l )
1060 - X? (
1061 - media-libs/libcanberra
1062 - x11-libs/libX11
1063 - x11-libs/libXfixes
1064 - )
1065 - zeroconf? ( net-dns/avahi )
1066 -"
1067 -
1068 -DEPEND="${RDEPEND}"
1069 -
1070 -# TODO: Consider use cases where pipewire is not used for driving audio
1071 -# Doing so with WirePlumber currently involves editing Lua scripts
1072 -PDEPEND=">=media-video/wireplumber-0.4.8-r3"
1073 -
1074 -# Present RDEPEND that are currently always disabled due to the PW
1075 -# code using them being required to be disabled by Gentoo guidelines
1076 -# (i.e. developer binaries not meant for users) and unready code
1077 -# media-video/ffmpeg:=
1078 -# media-libs/libsdl2
1079 -# >=media-libs/vulkan-loader-1.1.69
1080 -#
1081 -# Ditto for DEPEND
1082 -# >=dev-util/vulkan-headers-1.1.69
1083 -
1084 -DOCS=( {README,INSTALL}.md NEWS )
1085 -
1086 -PATCHES=(
1087 - "${FILESDIR}"/${PN}-0.3.25-enable-failed-mlock-warning.patch
1088 - "${FILESDIR}"/${P}-jack-mix.patch
1089 -)
1090 -
1091 -# limitsdfile related code taken from =sys-auth/realtime-base-0.1
1092 -# with changes as necessary.
1093 -limitsdfile=40-${PN}.conf
1094 -
1095 -python_check_deps() {
1096 - has_version -b "dev-python/docutils[${PYTHON_USEDEP}]"
1097 -}
1098 -
1099 -src_prepare() {
1100 - default
1101 -
1102 - einfo "Generating ${limitsdfile}"
1103 - cat > ${limitsdfile} <<- EOF || die
1104 - # Start of ${limitsdfile} from ${P}
1105 -
1106 - @audio - memlock 256
1107 -
1108 - $(use system-service && {
1109 - echo @pipewire - rtprio 95
1110 - echo @pipewire - nice -19
1111 - echo @pipewire - memlock 4194304
1112 - })
1113 -
1114 - # End of ${limitsdfile} from ${P}
1115 - EOF
1116 -}
1117 -
1118 -multilib_src_configure() {
1119 - # https://bugs.gentoo.org/838301
1120 - filter-flags -fno-semantic-interposition
1121 -
1122 - local emesonargs=(
1123 - -Ddocdir="${EPREFIX}"/usr/share/doc/${PF}
1124 -
1125 - $(meson_feature dbus)
1126 - $(meson_native_use_feature zeroconf avahi)
1127 - $(meson_native_use_feature doc docs)
1128 - $(meson_native_enabled examples) # TODO: Figure out if this is still important now that media-session gone
1129 - $(meson_native_enabled man)
1130 - $(meson_feature test tests)
1131 - -Dinstalled_tests=disabled # Matches upstream; Gentoo never installs tests
1132 - $(meson_native_use_feature gstreamer)
1133 - $(meson_native_use_feature gstreamer gstreamer-device-provider)
1134 - $(meson_native_use_feature systemd)
1135 -
1136 - $(meson_native_use_feature system-service systemd-system-service)
1137 - -Dsystemd-system-unit-dir="$(systemd_get_systemunitdir)"
1138 - -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)"
1139 -
1140 - $(meson_native_use_feature systemd systemd-user-service)
1141 - $(meson_feature pipewire-alsa) # Allows integrating ALSA apps into PW graph
1142 - -Dspa-plugins=enabled
1143 - -Dalsa=enabled # Allows using kernel ALSA for sound I/O (NOTE: media-session is gone so IUSE=alsa/spa_alsa/alsa-backend might be possible)
1144 - -Daudiomixer=enabled # Matches upstream
1145 - -Daudioconvert=enabled # Matches upstream
1146 - $(meson_native_use_feature bluetooth bluez5)
1147 - $(meson_native_use_feature bluetooth bluez5-backend-hsp-native)
1148 - $(meson_native_use_feature bluetooth bluez5-backend-hfp-native)
1149 - $(meson_native_use_feature bluetooth bluez5-backend-ofono)
1150 - $(meson_native_use_feature bluetooth bluez5-backend-hsphfpd)
1151 - $(meson_native_use_feature bluetooth bluez5-codec-aac)
1152 - $(meson_native_use_feature bluetooth bluez5-codec-aptx)
1153 - $(meson_native_use_feature bluetooth bluez5-codec-ldac)
1154 - $(meson_native_use_feature bluetooth libusb) # At least for now only used by bluez5 native (quirk detection of adapters)
1155 - $(meson_native_use_feature echo-cancel echo-cancel-webrtc) #807889
1156 - # Not yet packaged.
1157 - -Dbluez5-codec-lc3plus=disabled
1158 - -Dcontrol=enabled # Matches upstream
1159 - -Daudiotestsrc=enabled # Matches upstream
1160 - -Dffmpeg=disabled # Disabled by upstream and no major developments to spa/plugins/ffmpeg/ since May 2020
1161 - -Dpipewire-jack=enabled # Allows integrating JACK apps into PW graph
1162 - $(meson_native_use_feature jack-client jack) # Allows PW to act as a JACK client
1163 - $(meson_use jack-sdk jack-devel)
1164 - $(usex jack-sdk "-Dlibjack-path=${EPREFIX}/usr/$(get_libdir)" '')
1165 - -Dsupport=enabled # Miscellaneous/common plugins, such as null sink
1166 - -Devl=disabled # Matches upstream
1167 - -Dtest=disabled # fakesink and fakesource plugins
1168 - $(meson_native_use_feature lv2)
1169 - $(meson_native_use_feature v4l v4l2)
1170 - -Dlibcamera=disabled # libcamera is not in Portage tree
1171 - $(meson_native_use_feature ssl raop)
1172 - -Dvideoconvert=enabled # Matches upstream
1173 - -Dvideotestsrc=enabled # Matches upstream
1174 - -Dvolume=enabled # Matches upstream
1175 - -Dvulkan=disabled # Uses pre-compiled Vulkan compute shader to provide a CGI video source (dev thing; disabled by upstream)
1176 - $(meson_native_use_feature extra pw-cat)
1177 - $(meson_feature udev)
1178 - -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d"
1179 - -Dsdl2=disabled # Controls SDL2 dependent code (currently only examples when -Dinstalled_tests=enabled which we never install)
1180 - $(meson_native_use_feature extra sndfile) # Enables libsndfile dependent code (currently only pw-cat)
1181 - -Dsession-managers="[]" # All available session managers are now their own projects, so there's nothing to build
1182 -
1183 - # Just for bell sounds in X11 right now.
1184 - $(meson_native_use_feature X x11)
1185 - $(meson_native_use_feature X x11-xfixes)
1186 - $(meson_native_use_feature X libcanberra)
1187 - )
1188 -
1189 - meson_src_configure
1190 -}
1191 -
1192 -multilib_src_install() {
1193 - # Our custom DOCS do not exist in multilib source directory
1194 - DOCS= meson_src_install
1195 -}
1196 -
1197 -multilib_src_install_all() {
1198 - einstalldocs
1199 -
1200 - insinto /etc/security/limits.d
1201 - doins ${limitsdfile}
1202 -
1203 - if use pipewire-alsa; then
1204 - dodir /etc/alsa/conf.d
1205 -
1206 - # Install pipewire conf loader hook
1207 - insinto /usr/share/alsa/alsa.conf.d
1208 - doins "${FILESDIR}"/99-pipewire-default-hook.conf
1209 - eprefixify "${ED}"/usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf
1210 -
1211 - # These will break if someone has /etc that is a symbolic link to a subfolder! See #724222
1212 - # And the current dosym8 -r implementation is likely affected by the same issue, too.
1213 - dosym ../../../usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/50-pipewire.conf
1214 - dosym ../../../usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf /etc/alsa/conf.d/99-pipewire-default-hook.conf
1215 - fi
1216 -
1217 - # Enable required wireplumber alsa and bluez monitors
1218 - if use sound-server; then
1219 - dodir /etc/wireplumber/main.lua.d
1220 - echo "alsa_monitor.enabled = true" > "${ED}"/etc/wireplumber/main.lua.d/89-gentoo-sound-server-enable-alsa-monitor.lua || die
1221 -
1222 - dodir /etc/wireplumber/bluetooth.lua.d
1223 - echo "bluez_monitor.enabled = true" > "${ED}"/etc/wireplumber/bluetooth.lua.d/89-gentoo-sound-server-enable-bluez-monitor.lua || die
1224 - fi
1225 -
1226 - if ! use systemd; then
1227 - insinto /etc/xdg/autostart
1228 - newins "${FILESDIR}"/pipewire.desktop-r1 pipewire.desktop
1229 -
1230 - exeinto /usr/bin
1231 - newexe "${FILESDIR}"/gentoo-pipewire-launcher.in gentoo-pipewire-launcher
1232 -
1233 - # Disable pipewire-pulse if sound-server is disabled.
1234 - if ! use sound-server ; then
1235 - sed -i -s '/pipewire -c pipewire-pulse.conf/s/^/#/' "${ED}"/usr/bin/gentoo-pipewire-launcher || die
1236 - fi
1237 -
1238 - eprefixify "${ED}"/usr/bin/gentoo-pipewire-launcher
1239 - fi
1240 -}
1241 -
1242 -pkg_postrm() {
1243 - use udev && udev_reload
1244 -}
1245 -
1246 -pkg_postinst() {
1247 - use udev && udev_reload
1248 -
1249 - elog "It is recommended to raise RLIMIT_MEMLOCK to 256 for users"
1250 - elog "using PipeWire. Do it either manually or add yourself"
1251 - elog "to the 'audio' group:"
1252 - elog
1253 - elog " usermod -aG audio <youruser>"
1254 - elog
1255 -
1256 - local ver
1257 - for ver in ${REPLACING_VERSIONS} ; do
1258 - if ver_test ${ver} -le 0.3.53-r1 && ! use sound-server ; then
1259 - ewarn "USE=sound-server is disabled! If you want PipeWire to provide"
1260 - ewarn "your sound, please enable it. See the wiki at"
1261 - ewarn "https://wiki.gentoo.org/wiki/PipeWire#Replacing_PulseAudio"
1262 - ewarn "for more details."
1263 -
1264 - break
1265 - fi
1266 - done
1267 -
1268 - if ! use jack-sdk; then
1269 - elog "JACK emulation is incomplete and not all programs will work. PipeWire's"
1270 - elog "alternative libraries have been installed to a non-default location."
1271 - elog "To use them, put pw-jack <application> before every JACK application."
1272 - elog "When using pw-jack, do not run jackd/jackdbus. However, a virtual/jack"
1273 - elog "provider is still needed to compile the JACK applications themselves."
1274 - elog
1275 - fi
1276 -
1277 - if use systemd; then
1278 - elog "When switching from PulseAudio, you may need to disable PulseAudio:"
1279 - elog
1280 - elog " systemctl --user disable pulseaudio.service pulseaudio.socket"
1281 - elog
1282 - elog "To use PipeWire, the user units must be manually enabled"
1283 - elog "by running this command as each user you use for desktop activities:"
1284 - elog
1285 - elog " systemctl --user enable pipewire.socket pipewire-pulse.socket"
1286 - elog
1287 - elog "A reboot is recommended to avoid interferences from still running"
1288 - elog "PulseAudio daemon."
1289 - elog
1290 - elog "Both new users and those upgrading need to enable WirePlumber"
1291 - elog "for relevant users:"
1292 - elog
1293 - elog " systemctl --user disable pipewire-media-session.service"
1294 - elog " systemctl --user --force enable wireplumber.service"
1295 - elog
1296 - elog "Root user may replace --user with --global to change system default"
1297 - elog "configuration for all of the above commands."
1298 - else
1299 - ewarn "PipeWire daemon startup has been moved to a launcher script!"
1300 - ewarn "Make sure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist or no"
1301 - ewarn "longer is set to start a session manager or PulseAudio compatibility daemon (all"
1302 - ewarn "lines similar to '{ path = /usr/bin/pipewire*' should be commented out)"
1303 - ewarn
1304 - ewarn "Those manually starting /usr/bin/pipewire via .xinitrc or similar _must_ from"
1305 - ewarn "now on start ${EROOT}/usr/bin/gentoo-pipewire-launcher instead! It is highly"
1306 - ewarn "advised that a D-Bus user session is set up before starting the script."
1307 - ewarn
1308 -
1309 - if use sound-server && ( has_version 'media-sound/pulseaudio[daemon]' || has_version 'media-sound/pulseaudio-daemon' ) ; then
1310 - elog "This ebuild auto-enables PulseAudio replacement. Because of that, users"
1311 - elog "are recommended to edit pulseaudio client configuration files:"
1312 - elog "${EROOT}/etc/pulse/client.conf and ${EROOT}/etc/pulse/client.conf.d/enable-autospawn.conf"
1313 - elog "if it exists, and disable autospawning of the original daemon by setting:"
1314 - elog
1315 - elog " autospawn = no"
1316 - elog
1317 - elog "Please note that the semicolon (;) must _NOT_ be at the beginning of the line!"
1318 - elog
1319 - elog "Alternatively, if replacing PulseAudio daemon is not desired, edit"
1320 - elog "${EROOT}/usr/bin/gentoo-pipewire-launcher by commenting out the relevant"
1321 - elog "command:"
1322 - elog
1323 - elog "#${EROOT}/usr/bin/pipewire -c pipewire-pulse.conf &"
1324 - elog
1325 - fi
1326 - elog "NOTE:"
1327 - elog "Starting with PipeWire-0.3.30, this package is no longer installing its config"
1328 - elog "into ${EROOT}/etc/pipewire by default. In case you need to change"
1329 - elog "its config, please start by copying default config from ${EROOT}/usr/share/pipewire"
1330 - elog "and just override the sections you want to change."
1331 - fi
1332 - elog
1333 -
1334 - elog "For latest tips and tricks, troubleshooting information and documentation"
1335 - elog "in general, please refer to https://wiki.gentoo.org/wiki/PipeWire"
1336 - elog
1337 -
1338 - optfeature_header "The following can be installed for optional runtime features:"
1339 - optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit
1340 -
1341 - if use sound-server && ! use pipewire-alsa; then
1342 - optfeature "ALSA plugin to use PulseAudio interface for output" "media-plugins/alsa-plugins[pulseaudio]"
1343 - fi
1344 -
1345 - if has_version 'net-misc/ofono' ; then
1346 - ewarn "Native backend has become default. Please disable oFono via:"
1347 - if systemd_is_booted ; then
1348 - ewarn "systemctl disable ofono"
1349 - else
1350 - ewarn "rc-update delete ofono"
1351 - fi
1352 - ewarn
1353 - fi
1354 -
1355 - if use system-service; then
1356 - ewarn
1357 - ewarn "WARNING: you have enabled the system-service USE flag, which installs"
1358 - ewarn "the system-wide systemd units that enable PipeWire to run as a system"
1359 - ewarn "service. This is more than likely NOT what you want. You are strongly"
1360 - ewarn "advised not to enable this mode and instead stick with systemd user"
1361 - ewarn "units. The default configuration files will likely not work out of"
1362 - ewarn "box, and you are on your own with configuration."
1363 - ewarn
1364 - fi
1365 -}