From f95ba6d0742a550c43ede57f04baeb6a6b98538a Mon Sep 17 00:00:00 2001 From: Markus Volk Date: Wed, 6 Dec 2023 20:01:08 +0100 Subject: wireplumber: update 0.4.15 -> 0.4.17 WirePlumber 0.4.17 Fixes: Fixed a reference counting issue in the object managers that could cause crashes due to memory corruption (#534) Fixed an issue with filters linking to wrong targets, often with two sets of links (#536) Fixed a crash in the endpoints policy that would show up when log messages were enabled at level 3 or higher WirePlumber 0.4.16 Additions: Added a new "sm-objects" script that allows loading objects on demand via metadata entries that describe the object to load; this can be used to load pipewire modules, such as filters or network sources/sinks, on demand Added a mechanism to override device profile priorities in the configuration, mainly as a way to re-prioritize Bluetooth codecs, but this also can be used for other devices Added a mechanism in the endpoints policy to allow connecting filters between a certain endpoint's virtual sink and the device sink; this is specifically intended to allow plugging a filter-chain to act as equalizer on the Multimedia endpoint Added wp_core_get_own_bound_id() method in WpCore Changes: PipeWire 0.3.68 is now required policy-dsp now has the ability to hide hardware nodes behind the DSP sink to prevent hardware misuse or damage JSON parsing in Lua now allows keys inside objects to be without quotes Added optional argument in the Lua JSON parse() method to limit recursions, making it possible to partially parse a JSON object It is now possible to pass nil in Lua object constructors that expect an optional properties object; previously, omitting the argument was the only way to skip the properties The endpoints policy now marks the endpoint nodes as "passive" instead of marking their links, adjusting for the behavior change in PipeWire 0.3.68 Removed the "passive" property from si-standard-link, since only nodes are marked as passive now Fixes: Fixed the wpctl clear-default command to completely clear all the default nodes state instead of only the last set default Reduced the amount of globals that initially match the interest in the object manager Used an idle callback instead of pw_core_sync() in the object manager to expose tmp globals Signed-off-by: Markus Volk Signed-off-by: Khem Raj --- .../wireplumber/wireplumber_0.4.15.bb | 145 --------------------- .../wireplumber/wireplumber_0.4.17.bb | 145 +++++++++++++++++++++ 2 files changed, 145 insertions(+), 145 deletions(-) delete mode 100644 meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.15.bb create mode 100644 meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb diff --git a/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.15.bb b/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.15.bb deleted file mode 100644 index 5a180d1e07..0000000000 --- a/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.15.bb +++ /dev/null @@ -1,145 +0,0 @@ -SUMMARY = "Session / policy manager implementation for PipeWire" -HOMEPAGE = "https://gitlab.freedesktop.org/pipewire/wireplumber" -BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/wireplumber/issues" -SECTION = "multimedia" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=17d1fe479cdec331eecbc65d26bc7e77" - -DEPENDS = "glib-2.0 glib-2.0-native lua pipewire \ - ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "python3-native python3-lxml-native doxygen-native", "", d)} \ -" - -SRCREV = "d67b48e595cb4612fd7fd47f97df6b8883ef7f60" -SRC_URI = " \ - git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \ - file://90-OE-disable-session-dbus-dependent-features.lua \ -" - -S = "${WORKDIR}/git" - -inherit meson pkgconfig gobject-introspection systemd - -GIR_MESON_ENABLE_FLAG = 'enabled' -GIR_MESON_DISABLE_FLAG = 'disabled' - -# Enable system-lua to let wireplumber use OE's lua. -# Documentation needs python-sphinx, which is not in oe-core or meta-python2 for now. -# elogind is not (yet) available in OE, so disable support. -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Dsystem-lua=true \ - -Delogind=disabled \ - -Dsystemd-system-unit-dir=${systemd_system_unitdir} \ - -Dsystemd-user-unit-dir=${systemd_user_unitdir} \ - -Dtests=false \ -" - -PACKAGECONFIG ??= " dbus \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \ -" - -PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd" -PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=true,-Dsystemd-system-service=false,systemd" -# "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=true,-Dsystemd-user-service=false,systemd" -PACKAGECONFIG[dbus] = "" - -PACKAGESPLITFUNCS:prepend = " split_dynamic_packages " -PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends " - -WP_MODULE_SUBDIR = "wireplumber-0.4" - -do_install:append() { - if ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'false', 'true', d)}; then - install -m 0644 ${WORKDIR}/90-OE-disable-session-dbus-dependent-features.lua ${D}${datadir}/wireplumber/main.lua.d - fi -} - -python split_dynamic_packages () { - # Create packages for each WirePlumber module. - wp_module_libdir = d.expand('${libdir}/${WP_MODULE_SUBDIR}') - do_split_packages(d, wp_module_libdir, r'^libwireplumber-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'WirePlumber %s module', extra_depends='', recursive=False) -} - -python set_dynamic_metapkg_rdepends () { - import os - import oe.utils - - # Go through all generated WirePlumber module packages - # (excluding the main package and the -meta package itself) - # and add them to the -meta package as RDEPENDS. - - base_pn = d.getVar('PN') - - wp_module_pn = base_pn + '-modules' - wp_module_metapkg = wp_module_pn + '-meta' - - d.setVar('ALLOW_EMPTY:' + wp_module_metapkg, "1") - d.setVar('FILES:' + wp_module_metapkg, "") - - blacklist = [ wp_module_pn, wp_module_metapkg ] - wp_module_metapkg_rdepends = [] - pkgdest = d.getVar('PKGDEST') - - for pkg in oe.utils.packages_filter_out_system(d): - if pkg in blacklist: - continue - - is_wp_module_pkg = pkg.startswith(wp_module_pn) - if not is_wp_module_pkg: - continue - - if pkg in wp_module_metapkg_rdepends: - continue - - # See if the package is empty by looking at the contents of its - # PKGDEST subdirectory. If this subdirectory is empty, then then - # package is empty as well. Empty packages do not get added to - # the meta package's RDEPENDS. - pkgdir = os.path.join(pkgdest, pkg) - if os.path.exists(pkgdir): - dir_contents = os.listdir(pkgdir) or [] - else: - dir_contents = [] - is_empty = len(dir_contents) == 0 - if not is_empty: - if is_wp_module_pkg: - wp_module_metapkg_rdepends.append(pkg) - - d.setVar('RDEPENDS:' + wp_module_metapkg, ' '.join(wp_module_metapkg_rdepends)) - d.setVar('DESCRIPTION:' + wp_module_metapkg, wp_module_pn + ' meta package') -} - -PACKAGES =+ "\ - libwireplumber \ - ${PN}-default-config \ - ${PN}-scripts \ - ${PN}-modules \ - ${PN}-modules-meta \ -" - -PACKAGES_DYNAMIC = "^${PN}-modules.*" - -CONFFILES:${PN} += " \ - ${datadir}/wireplumber/wireplumber.conf \ - ${datadir}/wireplumber/*.lua.d/* \ -" -# Add pipewire to RRECOMMENDS, since WirePlumber expects a PipeWire daemon to -# be present. While in theory any application that uses libpipewire can configure -# itself to become a daemon, in practice, the PipeWire daemon is used. -RRECOMMENDS:${PN} += "pipewire ${PN}-scripts ${PN}-modules-meta" - -FILES:${PN} += "${systemd_user_unitdir} ${systemd_system_unitdir} ${datadir}/zsh" - -FILES:libwireplumber = " \ - ${libdir}/libwireplumber-*.so.* \ -" - -FILES:${PN}-scripts += "${datadir}/wireplumber/scripts/*" - -# Dynamic packages (see set_dynamic_metapkg_rdepends). -FILES:${PN}-modules = "" -RRECOMMENDS:${PN}-modules += "${PN}-modules-meta" diff --git a/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb b/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb new file mode 100644 index 0000000000..3959cd7f81 --- /dev/null +++ b/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb @@ -0,0 +1,145 @@ +SUMMARY = "Session / policy manager implementation for PipeWire" +HOMEPAGE = "https://gitlab.freedesktop.org/pipewire/wireplumber" +BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/wireplumber/issues" +SECTION = "multimedia" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=17d1fe479cdec331eecbc65d26bc7e77" + +DEPENDS = "glib-2.0 glib-2.0-native lua pipewire \ + ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "python3-native python3-lxml-native doxygen-native", "", d)} \ +" + +SRCREV = "d3eb77b292655cef333a8f4cab4e861415bc37c2" +SRC_URI = " \ + git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \ + file://90-OE-disable-session-dbus-dependent-features.lua \ +" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig gobject-introspection systemd + +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' + +# Enable system-lua to let wireplumber use OE's lua. +# Documentation needs python-sphinx, which is not in oe-core or meta-python2 for now. +# elogind is not (yet) available in OE, so disable support. +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dsystem-lua=true \ + -Delogind=disabled \ + -Dsystemd-system-unit-dir=${systemd_system_unitdir} \ + -Dsystemd-user-unit-dir=${systemd_user_unitdir} \ + -Dtests=false \ +" + +PACKAGECONFIG ??= " dbus \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \ +" + +PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd" +PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=true,-Dsystemd-system-service=false,systemd" +# "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=true,-Dsystemd-user-service=false,systemd" +PACKAGECONFIG[dbus] = "" + +PACKAGESPLITFUNCS:prepend = " split_dynamic_packages " +PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends " + +WP_MODULE_SUBDIR = "wireplumber-0.4" + +do_install:append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'false', 'true', d)}; then + install -m 0644 ${WORKDIR}/90-OE-disable-session-dbus-dependent-features.lua ${D}${datadir}/wireplumber/main.lua.d + fi +} + +python split_dynamic_packages () { + # Create packages for each WirePlumber module. + wp_module_libdir = d.expand('${libdir}/${WP_MODULE_SUBDIR}') + do_split_packages(d, wp_module_libdir, r'^libwireplumber-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'WirePlumber %s module', extra_depends='', recursive=False) +} + +python set_dynamic_metapkg_rdepends () { + import os + import oe.utils + + # Go through all generated WirePlumber module packages + # (excluding the main package and the -meta package itself) + # and add them to the -meta package as RDEPENDS. + + base_pn = d.getVar('PN') + + wp_module_pn = base_pn + '-modules' + wp_module_metapkg = wp_module_pn + '-meta' + + d.setVar('ALLOW_EMPTY:' + wp_module_metapkg, "1") + d.setVar('FILES:' + wp_module_metapkg, "") + + blacklist = [ wp_module_pn, wp_module_metapkg ] + wp_module_metapkg_rdepends = [] + pkgdest = d.getVar('PKGDEST') + + for pkg in oe.utils.packages_filter_out_system(d): + if pkg in blacklist: + continue + + is_wp_module_pkg = pkg.startswith(wp_module_pn) + if not is_wp_module_pkg: + continue + + if pkg in wp_module_metapkg_rdepends: + continue + + # See if the package is empty by looking at the contents of its + # PKGDEST subdirectory. If this subdirectory is empty, then then + # package is empty as well. Empty packages do not get added to + # the meta package's RDEPENDS. + pkgdir = os.path.join(pkgdest, pkg) + if os.path.exists(pkgdir): + dir_contents = os.listdir(pkgdir) or [] + else: + dir_contents = [] + is_empty = len(dir_contents) == 0 + if not is_empty: + if is_wp_module_pkg: + wp_module_metapkg_rdepends.append(pkg) + + d.setVar('RDEPENDS:' + wp_module_metapkg, ' '.join(wp_module_metapkg_rdepends)) + d.setVar('DESCRIPTION:' + wp_module_metapkg, wp_module_pn + ' meta package') +} + +PACKAGES =+ "\ + libwireplumber \ + ${PN}-default-config \ + ${PN}-scripts \ + ${PN}-modules \ + ${PN}-modules-meta \ +" + +PACKAGES_DYNAMIC = "^${PN}-modules.*" + +CONFFILES:${PN} += " \ + ${datadir}/wireplumber/wireplumber.conf \ + ${datadir}/wireplumber/*.lua.d/* \ +" +# Add pipewire to RRECOMMENDS, since WirePlumber expects a PipeWire daemon to +# be present. While in theory any application that uses libpipewire can configure +# itself to become a daemon, in practice, the PipeWire daemon is used. +RRECOMMENDS:${PN} += "pipewire ${PN}-scripts ${PN}-modules-meta" + +FILES:${PN} += "${systemd_user_unitdir} ${systemd_system_unitdir} ${datadir}/zsh" + +FILES:libwireplumber = " \ + ${libdir}/libwireplumber-*.so.* \ +" + +FILES:${PN}-scripts += "${datadir}/wireplumber/scripts/*" + +# Dynamic packages (see set_dynamic_metapkg_rdepends). +FILES:${PN}-modules = "" +RRECOMMENDS:${PN}-modules += "${PN}-modules-meta" -- cgit v1.2.3-54-g00ecf