[oe-core,RFC,1/2] pipewire: fix build

Message ID 20220520125313.4115361-1-f_l_k@t-online.de
State Under Review
Headers show
Series [oe-core,RFC,1/2] pipewire: fix build | expand

Commit Message

Markus Volk May 20, 2022, 12:53 p.m. UTC
-after updating to poky master i get issues picking the right udev provider
-add a backport patch to fix libsdl2 build with pipewire enabled
-allow native/nativesdk build

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 .../0001-spa-fix-c90-header-include.patch     | 47 +++++++++++++++++++
 .../pipewire/pipewire_0.3.50.bb               | 16 +++++--
 2 files changed, 58 insertions(+), 5 deletions(-)
 create mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-spa-fix-c90-header-include.patch

Comments

Scott Murray May 21, 2022, 6:58 a.m. UTC | #1
On Fri, 20 May 2022, Markus Volk wrote:

> -after updating to poky master i get issues picking the right udev provider
> -add a backport patch to fix libsdl2 build with pipewire enabled
> -allow native/nativesdk build
[snip]

I'm curious what your usecase is for native/nativesdk?  There's no
preprocessor or similiar tools in pipewire that I'm aware of.

Scott
Markus Volk May 21, 2022, 8:03 a.m. UTC | #2
I didn't have a specific use case. I was just trying to build libsdl2 
identical for target and native. And since libsdl2 can be built for 
nativesdk, the consequence would be that pipewire-nativesdk is needed to 
be built as well.

Am 21.05.22 um 08:58 schrieb Scott Murray:
> On Fri, 20 May 2022, Markus Volk wrote:
>
>> -after updating to poky master i get issues picking the right udev provider
>> -add a backport patch to fix libsdl2 build with pipewire enabled
>> -allow native/nativesdk build
> [snip]
>
> I'm curious what your usecase is for native/nativesdk?  There's no
> preprocessor or similiar tools in pipewire that I'm aware of.
>
> Scott
>
Carlos Rafael Giani July 29, 2022, 7:01 a.m. UTC | #3
It is my impression that libsdl2 is built natively for QEMU, and for 
nothing else, which means that having pipewire-nativesdk would not be 
necessary..?


On 21.05.22 10:03, Markus Volk wrote:
> I didn't have a specific use case. I was just trying to build libsdl2 
> identical for target and native. And since libsdl2 can be built for 
> nativesdk, the consequence would be that pipewire-nativesdk is needed 
> to be built as well.
>
> Am 21.05.22 um 08:58 schrieb Scott Murray:
>> On Fri, 20 May 2022, Markus Volk wrote:
>>
>>> -after updating to poky master i get issues picking the right udev 
>>> provider
>>> -add a backport patch to fix libsdl2 build with pipewire enabled
>>> -allow native/nativesdk build
>> [snip]
>>
>> I'm curious what your usecase is for native/nativesdk?  There's no
>> preprocessor or similiar tools in pipewire that I'm aware of.
>>
>> Scott
>>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#97217):https://lists.openembedded.org/g/openembedded-devel/message/97217
> Mute This Topic:https://lists.openembedded.org/mt/91230094/3617253
> Group Owner:openembedded-devel+owner@lists.openembedded.org
> Unsubscribe:https://lists.openembedded.org/g/openembedded-devel/unsub  [crg7475@mailbox.org]
> -=-=-=-=-=-=-=-=-=-=-=-
>

Patch

diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-spa-fix-c90-header-include.patch b/meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-spa-fix-c90-header-include.patch
new file mode 100644
index 000000000..ad6448a10
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-spa-fix-c90-header-include.patch
@@ -0,0 +1,47 @@ 
+From d3ea3142e1a4de206e616bc18f63a529e6b4986a Mon Sep 17 00:00:00 2001
+From: psykose <alice@ayaya.dev>
+Date: Wed, 13 Apr 2022 21:57:49 +0000
+Subject: [PATCH 001/154] spa: fix c90 header include
+
+placing declarations after code is invalid under ISO c90
+
+Fixes !1211
+
+Patch-Status: Backport
+---
+ spa/include/spa/utils/string.h | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/spa/include/spa/utils/string.h b/spa/include/spa/utils/string.h
+index e80434537..43d19616c 100644
+--- a/spa/include/spa/utils/string.h
++++ b/spa/include/spa/utils/string.h
+@@ -276,10 +276,11 @@ static inline int spa_scnprintf(char *buffer, size_t size, const char *format, .
+ static inline float spa_strtof(const char *str, char **endptr)
+ {
+ 	static locale_t locale = NULL;
++	locale_t prev;
+ 	float v;
+ 	if (SPA_UNLIKELY(locale == NULL))
+ 		locale = newlocale(LC_ALL_MASK, "C", NULL);
+-	locale_t prev = uselocale(locale);
++	prev = uselocale(locale);
+ 	v = strtof(str, endptr);
+ 	uselocale(prev);
+ 	return v;
+@@ -319,10 +320,11 @@ static inline bool spa_atof(const char *str, float *val)
+ static inline double spa_strtod(const char *str, char **endptr)
+ {
+ 	static locale_t locale = NULL;
++	locale_t prev;
+ 	double v;
+ 	if (SPA_UNLIKELY(locale == NULL))
+ 		locale = newlocale(LC_ALL_MASK, "C", NULL);
+-	locale_t prev = uselocale(locale);
++	prev = uselocale(locale);
+ 	v = strtod(str, endptr);
+ 	uselocale(prev);
+ 	return v;
+-- 
+2.25.1
+
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb
index 0d725b9ee..850c5a7c8 100644
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb
@@ -14,7 +14,10 @@  LIC_FILES_CHKSUM = " \
 DEPENDS = "dbus ncurses"
 
 SRCREV = "64cf5e80e6240284e6b757907b900507fe56f1b5"
-SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
+SRC_URI = " \
+	git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https \
+	file://0001-spa-fix-c90-header-include.patch \
+"
 
 S = "${WORKDIR}/git"
 
@@ -76,13 +79,14 @@  PACKAGECONFIG ??= "\
     ${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)} \
     gstreamer jack libusb pw-cat raop sndfile v4l2 \
 "
+UDEV_PROVIDER = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'eudev', d)}"
 
 # "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
 # since "jack" imports libjack, and "pipewire-jack" generates
 # libjack.so* files, thus colliding with the libpack package. This
 # is why these two are marked in their respective packageconfigs
 # as being in conflict.
-PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev"
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib ${UDEV_PROVIDER}"
 PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
 PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
 PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac"
@@ -100,13 +104,13 @@  PACKAGECONFIG[raop] = "-Draop=enabled,-Draop=disabled,openssl"
 PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
 PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
 PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
-PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd"
+PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled"
 # "systemd-user-service" packageconfig will only install service
 # files to rootfs but not enable them as systemd.bbclass
 # currently lacks the feature of enabling user services.
-PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd"
+PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled"
 # pw-cat needs sndfile packageconfig to be enabled
-PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
+PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,${UDEV_PROVIDER}"
 PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing"
 
 PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
@@ -335,3 +339,5 @@  FILES:${PN}-v4l2 += " \
 FILES:gstreamer1.0-pipewire = " \
     ${libdir}/gstreamer-1.0/* \
 "
+
+BBCLASSEXTEND = "native nativesdk"