diff --git a/multimedia/pipewire/Makefile b/multimedia/pipewire/Makefile index de71441b82de..5405377017a3 100644 --- a/multimedia/pipewire/Makefile +++ b/multimedia/pipewire/Makefile @@ -1,69 +1,69 @@ PORTNAME= pipewire DISTVERSION= 0.3.36 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= multimedia MAINTAINER= arrowd@FreeBSD.org COMMENT= Server and user space API to deal with multimedia pipelines LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat LIB_DEPENDS= libasound.so:audio/alsa-lib \ libdbus-1.so:devel/dbus \ libinotify.so:devel/libinotify \ libepoll-shim.so:devel/libepoll-shim \ libudev.so:devel/libudev-devd \ libwebrtc_audio_processing.so:audio/webrtc-audio-processing0 USES= compiler:c11 gettext-tools gnome localbase:ldflags meson \ pkgconfig python:3.6+,build USE_GNOME= glib20 USE_LDCONFIG= yes USE_GITHUB= yes GH_ACCOUNT= PipeWire OPTIONS_DEFINE= GSTREAMER MANPAGES MEDIASESSION PULSEAUDIO VULKAN OPTIONS_DEFAULT= GSTREAMER MANPAGES MEDIASESSION OPTIONS_SUB= yes GSTREAMER_MESON_ENABLED=gstreamer GSTREAMER_LIB_DEPENDS= libgstreamer-1.0.so:multimedia/gstreamer1 \ libgstaudio-1.0.so:multimedia/gstreamer1-plugins MANPAGES_BUILD_DEPENDS= rst2man:textproc/py-docutils MANPAGES_MESON_ENABLED= man MEDIASESSION_DESC= Session manager support MEDIASESSION_MESON_ENABLED= alsa pipewire-alsa pw-cat MEDIASESSION_MESON_ON= -Dsession-managers=media-session MEDIASESSION_MESON_OFF= -Dsession-managers='' MEDIASESSION_LIB_DEPENDS= libsndfile.so:audio/libsndfile PULSEAUDIO_MESON_ENABLED= libpulse PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio \ libavahi-common.so:net/avahi-app \ libavahi-client.so:net/avahi-app VULKAN_DESC= Enable Vulkan integration VULKAN_MESON_ENABLED= vulkan VULKAN_BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader MESON_ARGS= -D bluez5=disabled \ -D jack=disabled -D pipewire-jack=disabled \ -D systemd=disabled \ -D sdl2=disabled \ -D udevrulesdir="${LOCALBASE}/lib/udev/rules.d" post-patch-MEDIASESSION-on: # alsa-seq is not supported & causes SIGSEGV with media session @${REINPLACE_CMD} 's| alsa-seq|\ #alsa-seq|g' \ ${WRKSRC}/src/daemon/media-session.d/media-session.conf # start media session by default @${REINPLACE_CMD} '/manager_args/ s/@sm_comment@//g' \ ${WRKSRC}/src/daemon/pipewire.conf.in .include diff --git a/multimedia/pipewire/files/patch-src_pipewire_pipewire_init b/multimedia/pipewire/files/patch-src_pipewire_pipewire_init new file mode 100644 index 000000000000..3f94963d19c0 --- /dev/null +++ b/multimedia/pipewire/files/patch-src_pipewire_pipewire_init @@ -0,0 +1,67 @@ +PipeWire exports a function named "pw_init". FreeBSD also has the libutil.so +library, which exports a function with the same name. To workaround the +conflict, rename the PipeWire init function into "pipewire_init". + +Upstream issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1819 + +--- src/pipewire/pipewire.c.orig 2021-11-11 12:21:29 UTC ++++ src/pipewire/pipewire.c +@@ -583,7 +583,7 @@ out: + * + */ + SPA_EXPORT +-void pw_init(int *argc, char **argv[]) ++void pipewire_init(int *argc, char **argv[]) + { + const char *str; + struct spa_dict_item items[6]; +@@ -672,8 +672,9 @@ done: + pthread_mutex_unlock(&init_lock); + } + ++ + SPA_EXPORT +-void pw_deinit(void) ++void pipewire_deinit(void) + { + struct support *support = &global_support; + struct registry *registry = &support->registry; +@@ -696,6 +697,21 @@ void pw_deinit(void) + pthread_mutex_unlock(&init_lock); + + } ++ ++#if !defined(__FreeBSD__) ++#undef pw_init ++SPA_EXPORT ++void pw_init(int *argc, char **argv[]) ++{ ++ pipewire_init(argc, argv); ++} ++#undef pw_deinit ++SPA_EXPORT ++void pw_deinit(void) ++{ ++ pipewire_deinit(); ++} ++#endif + + /** Check if a debug category is enabled + * +--- src/pipewire/pipewire.h.orig 2021-11-11 12:21:29 UTC ++++ src/pipewire/pipewire.h +@@ -69,9 +69,12 @@ extern "C" { + * \{ + */ + void +-pw_init(int *argc, char **argv[]); ++pipewire_init(int *argc, char **argv[]); ++void pipewire_deinit(void); + +-void pw_deinit(void); ++/* BSD has pw_init already */ ++#define pw_init pipewire_init ++#define pw_deinit pipewire_deinit + + bool + pw_debug_is_category_enabled(const char *name);