summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-09-01 11:31:31 +0100
committerSam James <sam@gentoo.org>2023-09-01 11:31:31 +0100
commit0d9e842266d72c4d9172e3867e0132fe077358e0 (patch)
tree852804d1b0955967f8370f10f0549f73c9f4af3d /media-video
parentnet-dialup/xl2tpd: 1.3.18-r1 custom patches. (diff)
downloadgentoo-0d9e842266d72c4d9172e3867e0132fe077358e0.tar.gz
gentoo-0d9e842266d72c4d9172e3867e0132fe077358e0.tar.bz2
gentoo-0d9e842266d72c4d9172e3867e0132fe077358e0.zip
media-video/pipewire: backport UB fix + musl module dir fix
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-video')
-rw-r--r--media-video/pipewire/files/0.3.79/0001-meson-better-check-dlopen-dir.patch33
-rw-r--r--media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch30
-rw-r--r--media-video/pipewire/pipewire-0.3.79-r1.ebuild (renamed from media-video/pipewire/pipewire-0.3.79.ebuild)0
3 files changed, 63 insertions, 0 deletions
diff --git a/media-video/pipewire/files/0.3.79/0001-meson-better-check-dlopen-dir.patch b/media-video/pipewire/files/0.3.79/0001-meson-better-check-dlopen-dir.patch
new file mode 100644
index 000000000000..1bcddd4277cb
--- /dev/null
+++ b/media-video/pipewire/files/0.3.79/0001-meson-better-check-dlopen-dir.patch
@@ -0,0 +1,33 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/9f7d960c66a2d5732958ee29934c7aef6decc0cb
+
+From 9f7d960c66a2d5732958ee29934c7aef6decc0cb Mon Sep 17 00:00:00 2001
+From: q66 <q66@chimera-linux.org>
+Date: Thu, 31 Aug 2023 03:42:40 +0200
+Subject: [PATCH] meson: better check for module dlopen dir
+
+The ${LIB} token is a glibc extension, so it is incorrect to
+use it on all Linux. Doing so will break e.g. with musl libc.
+--- a/meson.build
++++ b/meson.build
+@@ -49,7 +49,9 @@ pipewire_configdir = pipewire_sysconfdir / 'pipewire'
+ pipewire_confdatadir = pipewire_datadir / 'pipewire'
+ modules_install_dir = pipewire_libdir / pipewire_name
+
+-if host_machine.system() == 'linux'
++cc = meson.get_compiler('c')
++
++if cc.has_header('features.h') and cc.get_define('__GLIBC__', prefix: '#include <features.h>') != ''
+ # glibc ld.so interprets ${LIB} in a library loading path with an
+ # appropriate value for the current architecture, typically something
+ # like lib, lib64 or lib/x86_64-linux-gnu.
+@@ -72,8 +74,6 @@ pipewire_headers_dir = pipewire_name / 'pipewire'
+
+ pkgconfig = import('pkgconfig')
+
+-cc = meson.get_compiler('c')
+-
+ common_flags = [
+ '-fvisibility=hidden',
+ '-fno-strict-aliasing',
+--
+GitLab
diff --git a/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch b/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch
new file mode 100644
index 000000000000..767c399bd515
--- /dev/null
+++ b/media-video/pipewire/files/0.3.79/0002-alsa-non-portable-isinf-use.patch
@@ -0,0 +1,30 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/aa11dbe10c0f2319a5c4c8dcfff1d5dccc03589e
+
+From aa11dbe10c0f2319a5c4c8dcfff1d5dccc03589e Mon Sep 17 00:00:00 2001
+From: q66 <q66@chimera-linux.org>
+Date: Thu, 31 Aug 2023 03:17:54 +0200
+Subject: [PATCH] alsa: get rid of non-portable isinf use
+
+The isinf function returns -1 for negative infinity on glibc, but
+the standard guarantees no such behavior (e.g. in C++ it always
+returns a bool, on musl libc it's a macro that expands to a bool
+expression), saying just that it returns a non-zero value.
+
+This was added in pulseaudio around 15 years ago, and was never
+fixed; pipewire then got the code from it. However, we can portably
+check against -INFINITY instead (from math.h, already included).
+
+Ref https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/045c1d6
+--- a/spa/plugins/alsa/acp/volume.h
++++ b/spa/plugins/alsa/acp/volume.h
+@@ -83,7 +83,7 @@ static inline pa_volume_t pa_sw_volume_from_linear(double v)
+
+ static inline pa_volume_t pa_sw_volume_from_dB(double dB)
+ {
+- if (isinf(dB) < 0 || dB <= PA_DECIBEL_MININFTY)
++ if (dB == -INFINITY || dB <= PA_DECIBEL_MININFTY)
+ return PA_VOLUME_MUTED;
+ return pa_sw_volume_from_linear(pa_volume_dB_to_linear(dB));
+ }
+--
+GitLab
diff --git a/media-video/pipewire/pipewire-0.3.79.ebuild b/media-video/pipewire/pipewire-0.3.79-r1.ebuild
index 608eb135e010..608eb135e010 100644
--- a/media-video/pipewire/pipewire-0.3.79.ebuild
+++ b/media-video/pipewire/pipewire-0.3.79-r1.ebuild