diff --git a/media-video/pipewire/Manifest b/media-video/pipewire/Manifest deleted file mode 100644 index d1440dc..0000000 --- a/media-video/pipewire/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST pipewire-0.3.51.tar.gz 1789070 BLAKE2B 8538eb9f2178efa26365f30b324b707826e580caa1fd9c09b62c561c140c14186e0d2b04808fa78eb5642ddccf1a347def19934ecd654be06b215a693075b6fc SHA512 a762fd260b4b14ad9ef142be11ab1c22268da6726e2179559ffb254f0ce7daf7a502779e33c64313a9c6a9fc1bd15150b76be04ec81aa27c35dbb4333cecdb4a diff --git a/media-video/pipewire/files/99-pipewire-default-hook.conf b/media-video/pipewire/files/99-pipewire-default-hook.conf deleted file mode 100644 index 7145acc..0000000 --- a/media-video/pipewire/files/99-pipewire-default-hook.conf +++ /dev/null @@ -1,17 +0,0 @@ -# Load pipewire configuration at conf hook processing time. This allows to -# override pulseaudio defaults configuration which is also applied via hook. -# -# Note since hooks are run after @GENTOO_PORTAGE_EPREFIX@/etc/asound.conf and ~/.asoundrc are applied, -# we load these again here make sure that user configuration takes precedence. - -@hooks [ - { - func load - files [ - "@GENTOO_PORTAGE_EPREFIX@/usr/share/alsa/alsa.conf.d/99-pipewire-default.conf" - "@GENTOO_PORTAGE_EPREFIX@/etc/asound.conf" - "~/.asoundrc" - ] - errors false - } -] diff --git a/media-video/pipewire/files/gentoo-pipewire-launcher.in b/media-video/pipewire/files/gentoo-pipewire-launcher.in deleted file mode 100644 index 495c47f..0000000 --- a/media-video/pipewire/files/gentoo-pipewire-launcher.in +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -# PipeWire launcher script for XDG compliant desktops on OpenRC. -# -# systemd users are very _STRONGLY_ advised to use the much -# more reliable and predictable user units instead. - -# WARNING: This script assumes being run inside XDG compliant session, -# which means D-Bus session instance is expected to be correctly set up -# prior to this script starting. If that is not true, things may break! - -# Best to reap any existing daemons and only then try to start a new set. -pkill -u "${USER}" -x pipewire\|wireplumber 1>/dev/null 2>&1 - -# The core daemon which by itself does probably nothing. -@GENTOO_PORTAGE_EPREFIX@/usr/bin/pipewire & - -# The so called pipewire-pulse daemon used for PulseAudio compatibility. -# Commenting this out will stop the PA proxying daemon from starting, -# however ALSA (with pipewire-alsa), JACK (with jack-sdk) and PW API using -# clients will still have access to audio and may end up clashing with -# non-PW apps over HW control (most notably, /usr/bin/pulseaudio daemon). -@GENTOO_PORTAGE_EPREFIX@/usr/bin/pipewire -c pipewire-pulse.conf & - -# Hack for bug #822498 -sleep 1 - -# Finally a session manager is required for PipeWire to do anything. -exec @GENTOO_PORTAGE_EPREFIX@/usr/bin/wireplumber diff --git a/media-video/pipewire/files/pipewire-0.3.25-enable-failed-mlock-warning.patch b/media-video/pipewire/files/pipewire-0.3.25-enable-failed-mlock-warning.patch deleted file mode 100644 index bdb43fe..0000000 --- a/media-video/pipewire/files/pipewire-0.3.25-enable-failed-mlock-warning.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in ---- a/src/daemon/pipewire.conf.in -+++ b/src/daemon/pipewire.conf.in -@@ -6,7 +6,7 @@ context.properties = { - #support.dbus = true - #link.max-buffers = 64 - link.max-buffers = 16 # version < 3 clients can't handle more -- #mem.warn-mlock = false -+ mem.warn-mlock = true # Gentoo should have good RLIMITs now - #mem.allow-mlock = true - #mem.mlock-all = false - #clock.power-of-two-quantum = true diff --git a/media-video/pipewire/files/pipewire-0.3.56-big-endian.patch b/media-video/pipewire/files/pipewire-0.3.56-big-endian.patch deleted file mode 100644 index d7742d2..0000000 --- a/media-video/pipewire/files/pipewire-0.3.56-big-endian.patch +++ /dev/null @@ -1,55 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/aaa015d0c0c66b64c7198a34ad3c4b43445667d2 -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/1a5ec4452fa21592eaeeb823ad95a1db6eb60376 -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/f857fd46262b1a90ad94f86e34216a1a886d9463 - -From aaa015d0c0c66b64c7198a34ad3c4b43445667d2 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Tue, 19 Jul 2022 13:06:52 +0200 -Subject: [PATCH] avb: fix compilation on big endian - ---- a/spa/plugins/avb/avbtp/packets.h -+++ b/spa/plugins/avb/avbtp/packets.h -@@ -116,7 +116,7 @@ struct spa_avbtp_packet_aaf { - unsigned gv:1; - unsigned tv:1; - -- uint8_t seq_number; -+ uint8_t seq_num; - - unsigned _r2:7; - unsigned tu:1; -GitLab -From 1a5ec4452fa21592eaeeb823ad95a1db6eb60376 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Tue, 19 Jul 2022 13:49:42 +0200 -Subject: [PATCH] avb: fix compilation on big endian - ---- a/src/modules/module-avb/aaf.h -+++ b/src/modules/module-avb/aaf.h -@@ -35,7 +35,7 @@ struct avb_packet_aaf { - unsigned gv:1; - unsigned tv:1; - -- uint8_t seq_number; -+ uint8_t seq_num; - - unsigned _r2:7; - unsigned tu:1; -GitLab -From f857fd46262b1a90ad94f86e34216a1a886d9463 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Tue, 19 Jul 2022 14:07:16 +0200 -Subject: [PATCH] avb: fix compilation on big endian - ---- a/src/modules/module-avb/iec61883.h -+++ b/src/modules/module-avb/iec61883.h -@@ -37,7 +37,7 @@ struct avb_packet_iec61883 { - unsigned gv:1; - unsigned tv:1; - -- uint8_t seq_number; -+ uint8_t seq_num; - - unsigned _r2:7; - unsigned tu:1; -GitLab diff --git a/media-video/pipewire/files/pipewire-0.3.59-filter-chain-alloc-port-data-handle.patch b/media-video/pipewire/files/pipewire-0.3.59-filter-chain-alloc-port-data-handle.patch deleted file mode 100644 index bd066e3..0000000 --- a/media-video/pipewire/files/pipewire-0.3.59-filter-chain-alloc-port-data-handle.patch +++ /dev/null @@ -1,87 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/94a857550b566472e5ab51191e1b34098e5a9506 - -From 94a857550b566472e5ab51191e1b34098e5a9506 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Mon, 3 Oct 2022 09:44:32 +0200 -Subject: [PATCH] filter-chain: alloc port data per handle. - ---- a/src/modules/module-filter-chain.c -+++ b/src/modules/module-filter-chain.c -@@ -1501,7 +1501,6 @@ static int load_node(struct graph *graph, struct spa_json *json) - bool have_config = false; - uint32_t i; - int res; -- float *data; - - while (spa_json_get_string(json, key, sizeof(key)) > 0) { - if (spa_streq("type", key)) { -@@ -1576,14 +1575,6 @@ static int load_node(struct graph *graph, struct spa_json *json) - port->idx = i; - port->external = SPA_ID_INVALID; - port->p = desc->output[i]; -- if ((data = port->audio_data[i]) == NULL) { -- data = calloc(1, MAX_SAMPLES * sizeof(float)); -- if (data == NULL) { -- pw_log_error("cannot create port data: %m"); -- return -errno; -- } -- } -- port->audio_data[i] = data; - spa_list_init(&port->link_list); - } - for (i = 0; i < desc->n_control; i++) { -@@ -1629,6 +1620,26 @@ static void node_cleanup(struct node *node) - } - } - -+static int port_ensure_data(struct port *port, uint32_t i) -+{ -+ float *data; -+ if ((data = port->audio_data[i]) == NULL) { -+ data = calloc(1, MAX_SAMPLES * sizeof(float)); -+ if (data == NULL) { -+ pw_log_error("cannot create port data: %m"); -+ return -errno; -+ } -+ } -+ port->audio_data[i] = data; -+ return 0; -+} -+ -+static void port_free_data(struct port *port, uint32_t i) -+{ -+ free(port->audio_data[i]); -+ port->audio_data[i] = NULL; -+} -+ - static void node_free(struct node *node) - { - uint32_t i, j; -@@ -1636,7 +1647,7 @@ static void node_free(struct node *node) - spa_list_remove(&node->link); - for (i = 0; i < node->n_hndl; i++) { - for (j = 0; j < node->desc->n_output; j++) -- free(node->output_port[j].audio_data[i]); -+ port_free_data(&node->output_port[j], i); - } - node_cleanup(node); - descriptor_unref(node->desc); -@@ -1688,6 +1699,8 @@ static int graph_instantiate(struct graph *graph) - - spa_list_for_each(link, &port->link_list, input_link) { - struct port *peer = link->output; -+ if ((res = port_ensure_data(peer, i)) < 0) -+ goto error; - pw_log_info("connect input port %s[%d]:%s %p", - node->name, i, d->ports[port->p].name, - peer->audio_data[i]); -@@ -1696,6 +1709,8 @@ static int graph_instantiate(struct graph *graph) - } - for (j = 0; j < desc->n_output; j++) { - port = &node->output_port[j]; -+ if ((res = port_ensure_data(port, i)) < 0) -+ goto error; - pw_log_info("connect output port %s[%d]:%s %p", - node->name, i, d->ports[port->p].name, - port->audio_data[i]); -GitLab diff --git a/media-video/pipewire/files/pipewire.desktop b/media-video/pipewire/files/pipewire.desktop deleted file mode 100644 index d3786e7..0000000 --- a/media-video/pipewire/files/pipewire.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name[de]=PipeWire Mediensystem -Name=PipeWire Media System -Comment[de]=Das PipeWire Mediensystem starten -Comment=Start the PipeWire Media System -Exec=/usr/libexec/pipewire-launcher -Terminal=false -Type=Application -X-GNOME-HiddenUnderSystemd=true -X-KDE-HiddenUnderSystemd=true -X-systemd-skip=true diff --git a/media-video/pipewire/files/pipewire.desktop-r1 b/media-video/pipewire/files/pipewire.desktop-r1 deleted file mode 100644 index d950312..0000000 --- a/media-video/pipewire/files/pipewire.desktop-r1 +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name[de]=PipeWire Mediensystem -Name=PipeWire Media System -Comment[de]=Das PipeWire Mediensystem starten -Comment=Start the PipeWire Media System -Exec=/usr/bin/gentoo-pipewire-launcher -Terminal=false -Type=Application -X-GNOME-HiddenUnderSystemd=true -X-KDE-HiddenUnderSystemd=true -X-systemd-skip=true diff --git a/media-video/pipewire/metadata.xml b/media-video/pipewire/metadata.xml deleted file mode 100644 index e067487..0000000 --- a/media-video/pipewire/metadata.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - gnome@gentoo.org - Gentoo GNOME Desktop - - - sam@gentoo.org - Sam James - - - https://gitlab.freedesktop.org/pipewire/pipewire/-/issues - https://gitlab.freedesktop.org/pipewire/pipewire/-/releases - https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home - - - Enable WebRTC-based echo canceller via media-libs/webrtc-audio-processing - Build pw-cat/pw-play/pw-record - Enable Flatpak support - Install a plugin for running PipeWire as a JACK client - Use PipeWire as JACK replacement - Allow loading LV2 plugins via media-libs/lv2 - Replace PulseAudio's ALSA plugin with PipeWire's plugin - Enable raop-sink support (needs dev-libs/openssl) - Install systemd unit files for running as a system service. Not recommended. - Enable audible bell for X11 - Provide sound server using ALSA and bluetooth devices - - diff --git a/media-video/pipewire/pipewire-0.3.51-r2.ebuild b/media-video/pipewire/pipewire-0.3.51-r2.ebuild deleted file mode 100644 index 861f7c4..0000000 --- a/media-video/pipewire/pipewire-0.3.51-r2.ebuild +++ /dev/null @@ -1,363 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{8..10} ) - -inherit flag-o-matic meson-multilib optfeature prefix python-any-r1 systemd udev - -if [[ ${PV} == 9999 ]]; then - EGIT_REPO_URI="https://gitlab.freedesktop.org/${PN}/${PN}.git" - inherit git-r3 -else - if [[ ${PV} == *_p* ]] ; then - MY_COMMIT="" - SRC_URI="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${MY_COMMIT}/pipewire-${MY_COMMIT}.tar.bz2 -> ${P}.tar.bz2" - S="${WORKDIR}"/${PN}-${MY_COMMIT} - else - SRC_URI="https://gitlab.freedesktop.org/${PN}/${PN}/-/archive/${PV}/${P}.tar.gz" - fi - - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86" -fi - -DESCRIPTION="Multimedia processing graphs" -HOMEPAGE="https://pipewire.org/" - -LICENSE="MIT LGPL-2.1+ GPL-2" -# ABI was broken in 0.3.42 for https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/49 -SLOT="0/0.4" -IUSE="bluetooth doc echo-cancel extra gstreamer jack-client jack-sdk lv2 pipewire-alsa ssl system-service systemd test udev v4l X zeroconf" - -# Once replacing system JACK libraries is possible, it's likely that -# jack-client IUSE will need blocking to avoid users accidentally -# configuring their systems to send PW sink output to the emulated -# JACK's sink - doing so is likely to yield no audio, cause a CPU -# cycles consuming loop (and may even cause GUI crashes)! - -REQUIRED_USE=" - jack-sdk? ( !jack-client ) - system-service? ( systemd ) -" - -RESTRICT="!test? ( test )" - -BDEPEND=" - >=dev-util/meson-0.59 - virtual/pkgconfig - ${PYTHON_DEPS} - $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]') - doc? ( - app-doc/doxygen - media-gfx/graphviz - ) -" -RDEPEND=" - acct-group/audio - media-libs/alsa-lib - sys-apps/dbus[${MULTILIB_USEDEP}] - sys-libs/readline:= - sys-libs/ncurses:=[unicode(+)] - virtual/libintl[${MULTILIB_USEDEP}] - bluetooth? ( - media-libs/fdk-aac - media-libs/libldac - media-libs/libfreeaptx - media-libs/sbc - >=net-wireless/bluez-4.101:= - virtual/libusb:1 - ) - echo-cancel? ( media-libs/webrtc-audio-processing:0 ) - extra? ( - >=media-libs/libsndfile-1.0.20 - ) - gstreamer? ( - >=dev-libs/glib-2.32.0:2 - >=media-libs/gstreamer-1.10.0:1.0 - media-libs/gst-plugins-base:1.0 - ) - jack-client? ( >=media-sound/jack2-1.9.10:2[dbus] ) - jack-sdk? ( - !media-sound/jack-audio-connection-kit - !media-sound/jack2 - ) - lv2? ( media-libs/lilv ) - pipewire-alsa? ( - >=media-libs/alsa-lib-1.1.7[${MULTILIB_USEDEP}] - ) - !pipewire-alsa? ( media-plugins/alsa-plugins[${MULTILIB_USEDEP},pulseaudio] ) - ssl? ( dev-libs/openssl:= ) - systemd? ( sys-apps/systemd ) - system-service? ( - acct-user/pipewire - acct-group/pipewire - ) - udev? ( virtual/libudev[${MULTILIB_USEDEP}] ) - v4l? ( media-libs/libv4l ) - X? ( - media-libs/libcanberra - x11-libs/libX11 - x11-libs/libXfixes - ) - zeroconf? ( net-dns/avahi ) -" - -DEPEND="${RDEPEND}" - -# TODO: Consider use cases where pipewire is not used for driving audio -# Doing so with WirePlumber currently involves editing Lua scripts -PDEPEND=">=media-video/wireplumber-0.4.8-r3" - -# Present RDEPEND that are currently always disabled due to the PW -# code using them being required to be disabled by Gentoo guidelines -# (i.e. developer binaries not meant for users) and unready code -# media-video/ffmpeg:= -# media-libs/libsdl2 -# >=media-libs/vulkan-loader-1.1.69 -# -# Ditto for DEPEND -# >=dev-util/vulkan-headers-1.1.69 - -DOCS=( {README,INSTALL}.md NEWS ) - -PATCHES=( - "${FILESDIR}"/${PN}-0.3.25-enable-failed-mlock-warning.patch -) - -# limitsdfile related code taken from =sys-auth/realtime-base-0.1 -# with changes as necessary. -limitsdfile=40-${PN}.conf - -python_check_deps() { - python_has_version "dev-python/docutils[${PYTHON_USEDEP}]" -} - -src_prepare() { - default - - einfo "Generating ${limitsdfile}" - cat > ${limitsdfile} <<- EOF || die - # Start of ${limitsdfile} from ${P} - - @audio - memlock 256 - - $(use system-service && { - echo @pipewire - rtprio 95 - echo @pipewire - nice -19 - echo @pipewire - memlock 4194304 - }) - - # End of ${limitsdfile} from ${P} - EOF -} - -multilib_src_configure() { - # https://bugs.gentoo.org/838301 - filter-flags -fno-semantic-interposition - - local emesonargs=( - -Ddocdir="${EPREFIX}"/usr/share/doc/${PF} - - $(meson_native_use_feature zeroconf avahi) - $(meson_native_use_feature doc docs) - $(meson_native_enabled examples) # TODO: Figure out if this is still important now that media-session gone - $(meson_native_enabled man) - $(meson_feature test tests) - -Dinstalled_tests=disabled # Matches upstream; Gentoo never installs tests - $(meson_native_use_feature gstreamer) - $(meson_native_use_feature gstreamer gstreamer-device-provider) - $(meson_native_use_feature systemd) - - $(meson_native_use_feature system-service systemd-system-service) - -Dsystemd-system-unit-dir="$(systemd_get_systemunitdir)" - -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)" - - $(meson_native_use_feature systemd systemd-user-service) - $(meson_feature pipewire-alsa) # Allows integrating ALSA apps into PW graph - -Dspa-plugins=enabled - -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) - -Daudiomixer=enabled # Matches upstream - -Daudioconvert=enabled # Matches upstream - $(meson_native_use_feature bluetooth bluez5) - $(meson_native_use_feature bluetooth bluez5-backend-hsp-native) - $(meson_native_use_feature bluetooth bluez5-backend-hfp-native) - $(meson_native_use_feature bluetooth bluez5-backend-ofono) - $(meson_native_use_feature bluetooth bluez5-backend-hsphfpd) - $(meson_native_use_feature bluetooth bluez5-codec-aac) - $(meson_native_use_feature bluetooth bluez5-codec-aptx) - $(meson_native_use_feature bluetooth bluez5-codec-ldac) - $(meson_native_use_feature bluetooth libusb) # At least for now only used by bluez5 native (quirk detection of adapters) - $(meson_native_use_feature echo-cancel echo-cancel-webrtc) #807889 - -Dcontrol=enabled # Matches upstream - -Daudiotestsrc=enabled # Matches upstream - -Dffmpeg=disabled # Disabled by upstream and no major developments to spa/plugins/ffmpeg/ since May 2020 - -Dpipewire-jack=enabled # Allows integrating JACK apps into PW graph - $(meson_native_use_feature jack-client jack) # Allows PW to act as a JACK client - $(meson_use jack-sdk jack-devel) - $(usex jack-sdk "-Dlibjack-path=${EPREFIX}/usr/$(get_libdir)" '') - -Dsupport=enabled # Miscellaneous/common plugins, such as null sink - -Devl=disabled # Matches upstream - -Dtest=disabled # fakesink and fakesource plugins - $(meson_native_use_feature lv2) - $(meson_native_use_feature v4l v4l2) - -Dlibcamera=disabled # libcamera is not in Portage tree - $(meson_native_use_feature ssl raop) - -Dvideoconvert=enabled # Matches upstream - -Dvideotestsrc=enabled # Matches upstream - -Dvolume=enabled # Matches upstream - -Dvulkan=disabled # Uses pre-compiled Vulkan compute shader to provide a CGI video source (dev thing; disabled by upstream) - $(meson_native_use_feature extra pw-cat) - $(meson_feature udev) - -Dudevrulesdir="${EPREFIX}$(get_udevdir)/rules.d" - -Dsdl2=disabled # Controls SDL2 dependent code (currently only examples when -Dinstalled_tests=enabled which we never install) - $(meson_native_use_feature extra sndfile) # Enables libsndfile dependent code (currently only pw-cat) - -Dsession-managers="[]" # All available session managers are now their own projects, so there's nothing to build - - # Just for bell sounds in X11 right now. - $(meson_native_use_feature X x11) - $(meson_native_use_feature X x11-xfixes) - $(meson_native_use_feature X libcanberra) - ) - - meson_src_configure -} - -multilib_src_install() { - # Our custom DOCS do not exist in multilib source directory - DOCS= meson_src_install -} - -multilib_src_install_all() { - einstalldocs - - insinto /etc/security/limits.d - doins ${limitsdfile} - - if use pipewire-alsa; then - dodir /etc/alsa/conf.d - - # Install pipewire conf loader hook - insinto /usr/share/alsa/alsa.conf.d - doins "${FILESDIR}"/99-pipewire-default-hook.conf - eprefixify "${ED}"/usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf - - # These will break if someone has /etc that is a symbolic link to a subfolder! See #724222 - # And the current dosym8 -r implementation is likely affected by the same issue, too. - dosym ../../../usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/50-pipewire.conf - dosym ../../../usr/share/alsa/alsa.conf.d/99-pipewire-default-hook.conf /etc/alsa/conf.d/99-pipewire-default-hook.conf - fi - - if ! use systemd; then - insinto /etc/xdg/autostart - newins "${FILESDIR}"/pipewire.desktop-r1 pipewire.desktop - - exeinto /usr/bin - newexe "${FILESDIR}"/gentoo-pipewire-launcher.in gentoo-pipewire-launcher - eprefixify "${ED}"/usr/bin/gentoo-pipewire-launcher - fi -} - -pkg_postinst() { - use udev && udev_reload - - elog "It is recommended to raise RLIMIT_MEMLOCK to 256 for users" - elog "using PipeWire. Do it either manually or add yourself" - elog "to the 'audio' group:" - elog - elog " usermod -aG audio " - elog - - if ! use jack-sdk; then - elog "JACK emulation is incomplete and not all programs will work. PipeWire's" - elog "alternative libraries have been installed to a non-default location." - elog "To use them, put pw-jack before every JACK application." - elog "When using pw-jack, do not run jackd/jackdbus. However, a virtual/jack" - elog "provider is still needed to compile the JACK applications themselves." - elog - fi - - if use systemd; then - elog "When switching from PulseAudio, you may need to disable PulseAudio:" - elog - elog " systemctl --user disable pulseaudio.service pulseaudio.socket" - elog - elog "To use PipeWire, the user units must be manually enabled" - elog "by running this command as each user you use for desktop activities:" - elog - elog " systemctl --user enable pipewire.socket pipewire-pulse.socket" - elog - elog "A reboot is recommended to avoid interferences from still running" - elog "PulseAudio daemon." - elog - elog "Both new users and those upgrading need to enable WirePlumber" - elog "for relevant users:" - elog - elog " systemctl --user disable pipewire-media-session.service" - elog " systemctl --user --force enable wireplumber.service" - elog - elog "Root user may replace --user with --global to change system default" - elog "configuration for all of the above commands." - else - ewarn "PipeWire daemon startup has been moved to a launcher script!" - ewarn "Make sure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist or no" - ewarn "longer is set to start a session manager or PulseAudio compatibility daemon (all" - ewarn "lines similar to '{ path = /usr/bin/pipewire*' should be commented out)" - ewarn - ewarn "Those manually starting /usr/bin/pipewire via .xinitrc or similar _must_ from" - ewarn "now on start ${EROOT}/usr/bin/gentoo-pipewire-launcher instead! It is highly" - ewarn "advised that a D-Bus user session is set up before starting the script." - ewarn - if has_version 'media-sound/pulseaudio[daemon]' || has_version 'media-sound/pulseaudio-daemon'; then - elog "This ebuild auto-enables PulseAudio replacement. Because of that, users" - elog "are recommended to edit pulseaudio client configuration files:" - elog "${EROOT}/etc/pulse/client.conf and ${EROOT}/etc/pulse/client.conf.d/enable-autospawn.conf" - elog "if it exists, and disable autospawning of the original daemon by setting:" - elog - elog " autospawn = no" - elog - elog "Please note that the semicolon (;) must _NOT_ be at the beginning of the line!" - elog - elog "Alternatively, if replacing PulseAudio daemon is not desired, edit" - elog "${EROOT}/usr/bin/gentoo-pipewire-launcher by commenting out the relevant" - elog "command:" - elog - elog "#${EROOT}/usr/bin/pipewire -c pipewire-pulse.conf &" - elog - fi - elog "NOTE:" - elog "Starting with PipeWire-0.3.30, this package is no longer installing its config" - elog "into ${EROOT}/etc/pipewire by default. In case you need to change" - elog "its config, please start by copying default config from ${EROOT}/usr/share/pipewire" - elog "and just override the sections you want to change." - fi - elog - - elog "For latest tips and tricks, troubleshooting information and documentation" - elog "in general, please refer to https://wiki.gentoo.org/wiki/PipeWire" - elog - - optfeature_header "The following can be installed for optional runtime features:" - optfeature "restricted realtime capabilities via D-Bus" sys-auth/rtkit - - if has_version 'net-misc/ofono' ; then - ewarn "Native backend has become default. Please disable oFono via:" - if systemd_is_booted ; then - ewarn "systemctl disable ofono" - else - ewarn "rc-update delete ofono" - fi - ewarn - fi - - if use system-service; then - ewarn - ewarn "WARNING: you have enabled the system-service USE flag, which installs" - ewarn "the system-wide systemd units that enable PipeWire to run as a system" - ewarn "service. This is more than likely NOT what you want. You are strongly" - ewarn "advised not to enable this mode and instead stick with systemd user" - ewarn "units. The default configuration files will likely not work out of" - ewarn "box, and you are on your own with configuration." - ewarn - fi -} diff --git a/media-video/wireplumber/Manifest b/media-video/wireplumber/Manifest deleted file mode 100644 index ece045d..0000000 --- a/media-video/wireplumber/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST wireplumber-0.4.10.tar.gz 395588 BLAKE2B 6df1af17d1e53ab1449a2f6f9af5a0c4f7b1cd981e07556e5ea3c6b4d5d624e66b97ce4f945f7ccccebbf72b75d35d10990fac11b5228275f27e5320885ff1ec SHA512 342e8bba2cf00faab71ef39bb361b5ada66ff3a68ccf7a756ea1ca402da6e94784eece277ca02992bc7573c51cb8b1bad33aa9c593b3d1bfe0bb0286e2f4506f diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch b/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch deleted file mode 100644 index 610db0e..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch +++ /dev/null @@ -1,117 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c00c5a6675b6640db13111c808eaa3251917c412 - -From c00c5a6675b6640db13111c808eaa3251917c412 Mon Sep 17 00:00:00 2001 -From: Julian Bouzas -Date: Wed, 18 May 2022 10:51:41 -0400 -Subject: [PATCH] alsa.lua: fix device name deduplication when reservation is - enabled - -Fixes #241 ---- - src/scripts/monitors/alsa.lua | 47 +++++++++++++++++++---------------- - 1 file changed, 25 insertions(+), 22 deletions(-) - -diff --git a/src/scripts/monitors/alsa.lua b/src/scripts/monitors/alsa.lua -index 01d241db..7beed3a8 100644 ---- a/src/scripts/monitors/alsa.lua -+++ b/src/scripts/monitors/alsa.lua -@@ -11,6 +11,10 @@ local config = ... or {} - -- ensure config.properties is not nil - config.properties = config.properties or {} - -+-- unique device/node name tables -+device_names_table = nil -+node_names_table = nil -+ - -- preprocess rules and create Interest objects - for _, r in ipairs(config.rules or {}) do - r.interests = {} -@@ -41,16 +45,6 @@ function rulesApplyProperties(properties) - end - end - --function findDuplicate(parent, id, property, value) -- for i = 0, id - 1, 1 do -- local obj = parent:get_managed_object(i) -- if obj and obj.properties[property] == value then -- return true -- end -- end -- return false --end -- - function nonempty(str) - return str ~= "" and str or nil - end -@@ -125,11 +119,11 @@ function createNode(parent, id, type, factory, properties) - - -- deduplicate nodes with the same name - for counter = 2, 99, 1 do -- if findDuplicate(parent, id, "node.name", properties["node.name"]) then -- properties["node.name"] = name .. "." .. counter -- else -+ if node_names_table[properties["node.name"]] ~= true then -+ node_names_table[properties["node.name"]] = true - break - end -+ properties["node.name"] = name .. "." .. counter - end - end - -@@ -186,6 +180,10 @@ function createDevice(parent, id, factory, properties) - local device = SpaDevice(factory, properties) - if device then - device:connect("create-object", createNode) -+ device:connect("object-removed", function (parent, id) -+ local node = parent:get_managed_object(id) -+ node_names_table[node.properties["node.name"]] = nil -+ end) - device:activate(Feature.SpaDevice.ENABLED | Feature.Proxy.BOUND) - parent:store_managed_object(id, device) - else -@@ -205,11 +203,11 @@ function prepareDevice(parent, id, type, factory, properties) - - -- deduplicate devices with the same name - for counter = 2, 99, 1 do -- if findDuplicate(parent, id, "device.name", properties["device.name"]) then -- properties["device.name"] = name .. "." .. counter -- else -+ if device_names_table[properties["device.name"]] ~= true then -+ device_names_table[properties["device.name"]] = true - break - end -+ properties["device.name"] = name .. "." .. counter - end - - -- ensure the device has a description -@@ -337,16 +335,21 @@ function createMonitor () - -- handle create-object to prepare device - m:connect("create-object", prepareDevice) - -- -- if dbus reservation, handle object-removed to destroy device reservations -- if rd_plugin then -- m:connect("object-removed", function (parent, id) -- local device = parent:get_managed_object(id) -+ -- handle object-removed to destroy device reservations and recycle device name -+ m:connect("object-removed", function (parent, id) -+ local device = parent:get_managed_object(id) -+ if rd_plugin then - local rd_name = device.properties["api.dbus.ReserveDevice1"] - if rd_name then - rd_plugin:call("destroy-reservation", rd_name) - end -- end) -- end -+ end -+ device_names_table[device.properties["device.name"]] = nil -+ end) -+ -+ -- reset the name tables to make sure names are recycled -+ device_names_table = {} -+ node_names_table = {} - - -- activate monitor - Log.info("Activating ALSA monitor") --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-config-disable-sound-server-parts.patch b/media-video/wireplumber/files/wireplumber-0.4.10-config-disable-sound-server-parts.patch deleted file mode 100644 index a8bf6f1..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-config-disable-sound-server-parts.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 3d86f51d2c43fd76be2450a8c27836fdd8619cfa -Author: Igor V. Kovalenko -Date: Sun May 15 18:19:03 2022 +0300 - - config: Disable alsa and bluez monitors by default - -diff --git a/src/config/bluetooth.lua.d/50-bluez-config.lua b/src/config/bluetooth.lua.d/50-bluez-config.lua -index d5727d3..938eae0 100644 ---- a/src/config/bluetooth.lua.d/50-bluez-config.lua -+++ b/src/config/bluetooth.lua.d/50-bluez-config.lua -@@ -1,4 +1,4 @@ --bluez_monitor.enabled = true -+bluez_monitor.enabled = false - - bluez_monitor.properties = { - -- These features do not work on all headsets, so they are enabled -diff --git a/src/config/main.lua.d/50-alsa-config.lua b/src/config/main.lua.d/50-alsa-config.lua -index 3468333..d4c065b 100644 ---- a/src/config/main.lua.d/50-alsa-config.lua -+++ b/src/config/main.lua.d/50-alsa-config.lua -@@ -1,4 +1,4 @@ --alsa_monitor.enabled = true -+alsa_monitor.enabled = false - - alsa_monitor.properties = { - -- Create a JACK device. This is not enabled by default because diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch b/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch deleted file mode 100644 index 40a4866..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch +++ /dev/null @@ -1,129 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/1f045309208ab5d927883b5adc2b7d1623fae162 - -From 1f045309208ab5d927883b5adc2b7d1623fae162 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Thu, 12 May 2022 12:19:38 +0300 -Subject: [PATCH] config: fix enabled property to default to "true" when not - defined - -Fixes backwards compatibility with older config files - -Fixes: #254 ---- - src/config/bluetooth.lua.d/30-bluez-monitor.lua | 2 +- - src/config/main.lua.d/20-default-access.lua | 2 +- - src/config/main.lua.d/30-alsa-monitor.lua | 2 +- - src/config/main.lua.d/30-libcamera-monitor.lua | 2 +- - src/config/main.lua.d/30-v4l2-monitor.lua | 2 +- - src/config/main.lua.d/40-device-defaults.lua | 2 +- - src/config/main.lua.d/40-stream-defaults.lua | 2 +- - src/config/policy.lua.d/10-default-policy.lua | 2 +- - 8 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/config/bluetooth.lua.d/30-bluez-monitor.lua b/src/config/bluetooth.lua.d/30-bluez-monitor.lua -index b40026c2..a870aa5d 100644 ---- a/src/config/bluetooth.lua.d/30-bluez-monitor.lua -+++ b/src/config/bluetooth.lua.d/30-bluez-monitor.lua -@@ -3,7 +3,7 @@ bluez_monitor.properties = {} - bluez_monitor.rules = {} - - function bluez_monitor.enable() -- if not bluez_monitor.enabled then -+ if bluez_monitor.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/20-default-access.lua b/src/config/main.lua.d/20-default-access.lua -index a6ffb2ee..0a7eb955 100644 ---- a/src/config/main.lua.d/20-default-access.lua -+++ b/src/config/main.lua.d/20-default-access.lua -@@ -3,7 +3,7 @@ default_access.properties = {} - default_access.rules = {} - - function default_access.enable() -- if not default_access.enabled then -+ if default_access.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/30-alsa-monitor.lua b/src/config/main.lua.d/30-alsa-monitor.lua -index da0b2c70..8e45e434 100644 ---- a/src/config/main.lua.d/30-alsa-monitor.lua -+++ b/src/config/main.lua.d/30-alsa-monitor.lua -@@ -3,7 +3,7 @@ alsa_monitor.properties = {} - alsa_monitor.rules = {} - - function alsa_monitor.enable() -- if not alsa_monitor.enabled then -+ if alsa_monitor.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/30-libcamera-monitor.lua b/src/config/main.lua.d/30-libcamera-monitor.lua -index 4a8257ff..cd820a83 100644 ---- a/src/config/main.lua.d/30-libcamera-monitor.lua -+++ b/src/config/main.lua.d/30-libcamera-monitor.lua -@@ -3,7 +3,7 @@ libcamera_monitor.properties = {} - libcamera_monitor.rules = {} - - function libcamera_monitor.enable() -- if not libcamera_monitor.enabled then -+ if libcamera_monitor.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/30-v4l2-monitor.lua b/src/config/main.lua.d/30-v4l2-monitor.lua -index 7cfd4bcd..3fbdc9e7 100644 ---- a/src/config/main.lua.d/30-v4l2-monitor.lua -+++ b/src/config/main.lua.d/30-v4l2-monitor.lua -@@ -3,7 +3,7 @@ v4l2_monitor.properties = {} - v4l2_monitor.rules = {} - - function v4l2_monitor.enable() -- if not v4l2_monitor.enabled then -+ if v4l2_monitor.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/40-device-defaults.lua b/src/config/main.lua.d/40-device-defaults.lua -index 55aafe85..2204c4ac 100644 ---- a/src/config/main.lua.d/40-device-defaults.lua -+++ b/src/config/main.lua.d/40-device-defaults.lua -@@ -38,7 +38,7 @@ device_defaults.persistent_profiles = { - } - - function device_defaults.enable() -- if not device_defaults.enabled then -+ if device_defaults.enabled == false then - return - end - -diff --git a/src/config/main.lua.d/40-stream-defaults.lua b/src/config/main.lua.d/40-stream-defaults.lua -index 2975f4f6..307d83df 100644 ---- a/src/config/main.lua.d/40-stream-defaults.lua -+++ b/src/config/main.lua.d/40-stream-defaults.lua -@@ -25,7 +25,7 @@ stream_defaults.rules = { - } - - function stream_defaults.enable() -- if not stream_defaults.enabled then -+ if stream_defaults.enabled == false then - return - end - -diff --git a/src/config/policy.lua.d/10-default-policy.lua b/src/config/policy.lua.d/10-default-policy.lua -index 7b00e94e..edfdeb1c 100644 ---- a/src/config/policy.lua.d/10-default-policy.lua -+++ b/src/config/policy.lua.d/10-default-policy.lua -@@ -38,7 +38,7 @@ bluetooth_policy.policy = { - } - - function default_policy.enable() -- if not default_policy.enabled then -+ if default_policy.enabled == false then - return - end - --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch deleted file mode 100644 index d9c5148..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch +++ /dev/null @@ -1,187 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/392cce2136e81ac3146078eacbbae85b694c917a - -From 392cce2136e81ac3146078eacbbae85b694c917a Mon Sep 17 00:00:00 2001 -From: Julian Bouzas -Date: Fri, 20 May 2022 07:38:24 -0400 -Subject: [PATCH] m-default-nodes: don't check if all device nodes are ready - when finding default node - -This check was originally added to avoid a small audio glitch when changing -default nodes while also changing the device profile (eg Gnome Sound Settings). -The check is removed because it causes issues when disabling alsa nodes. There -are plans to fix the audio glitch issue in the future with the planned -event-dispatcher architecture. - -Fixes #279 ---- - modules/module-default-nodes.c | 136 --------------------------------- - 1 file changed, 136 deletions(-) - -diff --git a/modules/module-default-nodes.c b/modules/module-default-nodes.c -index 0fdaed5..577f9bb 100644 ---- a/modules/module-default-nodes.c -+++ b/modules/module-default-nodes.c -@@ -345,135 +345,6 @@ reevaluate_default_node (WpDefaultNodes * self, WpMetadata *m, gint node_t) - } - } - --static guint --get_device_total_nodes (WpPipewireObject * proxy) --{ -- g_autoptr (WpIterator) profiles = NULL; -- g_auto (GValue) item = G_VALUE_INIT; -- -- profiles = wp_pipewire_object_enum_params_sync (proxy, "Profile", NULL); -- if (!profiles) -- return 0; -- -- for (; wp_iterator_next (profiles, &item); g_value_unset (&item)) { -- WpSpaPod *pod = g_value_get_boxed (&item); -- gint idx = -1; -- const gchar *name = NULL; -- g_autoptr (WpSpaPod) classes = NULL; -- -- /* Parse */ -- if (!wp_spa_pod_get_object (pod, NULL, -- "index", "i", &idx, -- "name", "s", &name, -- "classes", "?P", &classes, -- NULL)) -- continue; -- if (!classes) -- continue; -- -- /* Parse profile classes */ -- { -- g_autoptr (WpIterator) it = wp_spa_pod_new_iterator (classes); -- g_auto (GValue) v = G_VALUE_INIT; -- gint total_nodes = 0; -- for (; wp_iterator_next (it, &v); g_value_unset (&v)) { -- WpSpaPod *entry = g_value_get_boxed (&v); -- g_autoptr (WpSpaPodParser) pp = NULL; -- const gchar *media_class = NULL; -- gint n_nodes = 0; -- g_return_val_if_fail (entry, 0); -- if (!wp_spa_pod_is_struct (entry)) -- continue; -- pp = wp_spa_pod_parser_new_struct (entry); -- g_return_val_if_fail (pp, 0); -- g_return_val_if_fail (wp_spa_pod_parser_get_string (pp, &media_class), 0); -- g_return_val_if_fail (wp_spa_pod_parser_get_int (pp, &n_nodes), 0); -- wp_spa_pod_parser_end (pp); -- -- total_nodes += n_nodes; -- } -- -- if (total_nodes > 0) -- return total_nodes; -- } -- } -- -- return 0; --} -- --static gboolean --nodes_ready (WpDefaultNodes * self) --{ -- g_autoptr (WpIterator) it = NULL; -- g_auto (GValue) val = G_VALUE_INIT; -- -- /* Get the total number of nodes for each device and make sure they exist -- * and have at least 1 port */ -- it = wp_object_manager_new_filtered_iterator (self->rescan_om, -- WP_TYPE_DEVICE, NULL); -- for (; wp_iterator_next (it, &val); g_value_unset (&val)) { -- WpPipewireObject *device = g_value_get_object (&val); -- guint total_nodes = get_device_total_nodes (device); -- if (total_nodes > 0) { -- guint32 device_id = wp_proxy_get_bound_id (WP_PROXY (device)); -- g_autoptr (WpIterator) node_it = NULL; -- g_auto (GValue) node_val = G_VALUE_INIT; -- guint ready_nodes = 0; -- -- node_it = wp_object_manager_new_filtered_iterator (self->rescan_om, -- WP_TYPE_NODE, WP_CONSTRAINT_TYPE_PW_PROPERTY, -- PW_KEY_DEVICE_ID, "=i", device_id, NULL); -- for (; wp_iterator_next (node_it, &node_val); g_value_unset (&node_val)) { -- WpPipewireObject *node = g_value_get_object (&node_val); -- g_autoptr (WpPort) port = -- wp_object_manager_lookup (self->rescan_om, -- WP_TYPE_PORT, WP_CONSTRAINT_TYPE_PW_PROPERTY, -- PW_KEY_NODE_ID, "=u", wp_proxy_get_bound_id (WP_PROXY (node)), -- NULL); -- if (port) -- ready_nodes++; -- } -- -- if (ready_nodes < total_nodes) { -- const gchar *device_name = wp_pipewire_object_get_property ( -- WP_PIPEWIRE_OBJECT (device), PW_KEY_DEVICE_NAME); -- wp_debug_object (self, "device '%s' is not ready (%d/%d)", device_name, -- ready_nodes, total_nodes); -- return FALSE; -- } -- } -- } -- -- /* Make sure Audio and Video virtual sources have ports */ -- { -- g_autoptr (WpIterator) node_it = NULL; -- g_auto (GValue) node_val = G_VALUE_INIT; -- node_it = wp_object_manager_new_filtered_iterator (self->rescan_om, -- WP_TYPE_NODE, WP_CONSTRAINT_TYPE_PW_PROPERTY, PW_KEY_DEVICE_ID, "-", -- NULL); -- for (; wp_iterator_next (node_it, &node_val); g_value_unset (&node_val)) { -- WpPipewireObject *node = g_value_get_object (&node_val); -- const gchar *media_class = wp_pipewire_object_get_property ( -- WP_PIPEWIRE_OBJECT (node), PW_KEY_MEDIA_CLASS); -- g_autoptr (WpPort) port = -- wp_object_manager_lookup (self->rescan_om, -- WP_TYPE_PORT, WP_CONSTRAINT_TYPE_PW_PROPERTY, -- PW_KEY_NODE_ID, "=u", wp_proxy_get_bound_id (WP_PROXY (node)), -- NULL); -- if (!port && -- (g_strcmp0 ("Audio/Source/Virtual", media_class) == 0 || -- g_strcmp0 ("Video/Source/Virtual", media_class) == 0)) { -- const gchar *node_name = wp_pipewire_object_get_property ( -- WP_PIPEWIRE_OBJECT (node), PW_KEY_NODE_NAME); -- wp_debug_object (self, "virtual node '%s' is not ready", node_name); -- return FALSE; -- } -- } -- } -- -- return TRUE; --} -- - static void - sync_rescan (WpCore * core, GAsyncResult * res, WpDefaultNodes * self) - { -@@ -491,10 +362,6 @@ sync_rescan (WpCore * core, GAsyncResult * res, WpDefaultNodes * self) - if (!metadata) - return; - -- /* Make sure nodes are ready for current profile */ -- if (!nodes_ready (self)) -- return; -- - wp_trace_object (self, "re-evaluating defaults"); - reevaluate_default_node (self, metadata, AUDIO_SINK); - reevaluate_default_node (self, metadata, AUDIO_SOURCE); -@@ -584,13 +451,10 @@ on_metadata_added (WpObjectManager *om, WpMetadata *metadata, gpointer d) - self->rescan_om = wp_object_manager_new (); - wp_object_manager_add_interest (self->rescan_om, WP_TYPE_DEVICE, NULL); - wp_object_manager_add_interest (self->rescan_om, WP_TYPE_NODE, NULL); -- wp_object_manager_add_interest (self->rescan_om, WP_TYPE_PORT, NULL); - wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_DEVICE, - WP_OBJECT_FEATURES_ALL); - wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_NODE, - WP_OBJECT_FEATURES_ALL); -- wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_PORT, -- WP_OBJECT_FEATURES_ALL); - g_signal_connect_object (self->rescan_om, "objects-changed", - G_CALLBACK (schedule_rescan), self, G_CONNECT_SWAPPED); - g_signal_connect_object (self->rescan_om, "object-added", --- -2.35.1 - diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch deleted file mode 100644 index c319ac4..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch +++ /dev/null @@ -1,36 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c2f31bb550755acba31da2e9f5bbdf646ed5e805 - -From c2f31bb550755acba31da2e9f5bbdf646ed5e805 Mon Sep 17 00:00:00 2001 -From: Julian Bouzas -Date: Mon, 16 May 2022 15:41:10 -0400 -Subject: [PATCH] m-lua-scripting: allow converting GValue holding NULL objects - to Lua - ---- - modules/module-lua-scripting/wplua/value.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/modules/module-lua-scripting/wplua/value.c b/modules/module-lua-scripting/wplua/value.c -index 133051a4..e31ae4ac 100644 ---- a/modules/module-lua-scripting/wplua/value.c -+++ b/modules/module-lua-scripting/wplua/value.c -@@ -314,9 +314,14 @@ wplua_gvalue_to_lua (lua_State *L, const GValue *v) - wplua_pushboxed (L, G_VALUE_TYPE (v), g_value_dup_boxed (v)); - break; - case G_TYPE_OBJECT: -- case G_TYPE_INTERFACE: -- wplua_pushobject (L, g_value_dup_object (v)); -+ case G_TYPE_INTERFACE: { -+ GObject *object = g_value_dup_object (v); -+ if (object) -+ wplua_pushobject (L, g_value_dup_object (v)); -+ else -+ lua_pushnil (L); - break; -+ } - case G_TYPE_ENUM: - wplua_enum_to_lua (L, g_value_get_enum (v), G_VALUE_TYPE (v)); - break; --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch deleted file mode 100644 index 0b86979..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch +++ /dev/null @@ -1,32 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/7908b8d7be2a2992c57cd549054eda7ce46e4b44 - -From 13b85bd4a25ab374f5e5e90b7288e6987996856e Mon Sep 17 00:00:00 2001 -From: Michael Olbrich -Date: Tue, 24 May 2022 11:35:15 +0200 -Subject: [PATCH] m-lua-scripting: fix object refcounting - -7908b8d7be2a2992c57cd549054eda7ce46e4b44 ("m-lua-scripting: allow -converting GValue holding NULL objects to Lua") accidentally added a second -refcount. As a result, the objects are never freeded. - -Remove the second refcount to fix this. ---- - modules/module-lua-scripting/wplua/value.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/modules/module-lua-scripting/wplua/value.c b/modules/module-lua-scripting/wplua/value.c -index e31ae4a..a7927dc 100644 ---- a/modules/module-lua-scripting/wplua/value.c -+++ b/modules/module-lua-scripting/wplua/value.c -@@ -317,7 +317,7 @@ wplua_gvalue_to_lua (lua_State *L, const GValue *v) - case G_TYPE_INTERFACE: { - GObject *object = g_value_dup_object (v); - if (object) -- wplua_pushobject (L, g_value_dup_object (v)); -+ wplua_pushobject (L, object); - else - lua_pushnil (L); - break; --- -2.35.1 - diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch b/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch deleted file mode 100644 index 3bc8bbd..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c16e637c329bc9dda8544b18f5bd47a8d63ee253 - -From c16e637c329bc9dda8544b18f5bd47a8d63ee253 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Thu, 7 Jul 2022 20:58:36 +0300 -Subject: [PATCH] alsa: use "obj_type" as a variable name to avoid shadowing - lua's "type" function - -This causes a crash when running in a VM because the code tries to -execute lua's "type()" and ends up executing the local string variable... - -Fixes: #303 ---- a/src/scripts/monitors/alsa.lua -+++ b/src/scripts/monitors/alsa.lua -@@ -49,7 +49,7 @@ function nonempty(str) - return str ~= "" and str or nil - end - --function createNode(parent, id, type, factory, properties) -+function createNode(parent, id, obj_type, factory, properties) - local dev_props = parent.properties - - -- set the device id and spa factory name; REQUIRED, do not change -@@ -199,7 +199,7 @@ function createDevice(parent, id, factory, properties) - end - end - --function prepareDevice(parent, id, type, factory, properties) -+function prepareDevice(parent, id, obj_type, factory, properties) - -- ensure the device has an appropriate name - local name = "alsa_card." .. - (properties["device.name"] or -GitLab diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch b/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch deleted file mode 100644 index 6098ed1..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch +++ /dev/null @@ -1,45 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/eb406bdb2cbbcd49c55c71285f8f2eddb624d24b - -From eb406bdb2cbbcd49c55c71285f8f2eddb624d24b Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Wed, 13 Jul 2022 13:38:14 +0300 -Subject: [PATCH] dbus: fix crash when trying to reconnect - -When coming from on_sync_reconnect, data points to the WpDBus object -instead of the activation transition. - -Fixes: #305 ---- a/lib/wp/dbus.c -+++ b/lib/wp/dbus.c -@@ -58,14 +58,26 @@ wp_dbus_set_state (WpDbus *self, WpDBusState new_state) - static void - on_got_bus (GObject * obj, GAsyncResult * res, gpointer data) - { -- WpTransition *transition = WP_TRANSITION (data); -- WpDbus *self = wp_transition_get_source_object (transition); -+ WpTransition *transition; -+ WpDbus *self; - g_autoptr (GError) error = NULL; - -+ if (WP_IS_TRANSITION (data)) { -+ // coming from wp_dbus_enable -+ transition = WP_TRANSITION (data); -+ self = wp_transition_get_source_object (transition); -+ } else { -+ // coming from on_sync_reconnect -+ transition = NULL; -+ self = WP_DBUS (data); -+ } -+ - self->connection = g_dbus_connection_new_for_address_finish (res, &error); - if (!self->connection) { -- g_prefix_error (&error, "Failed to connect to bus: "); -- wp_transition_return_error (transition, g_steal_pointer (&error)); -+ if (transition) { -+ g_prefix_error (&error, "Failed to connect to bus: "); -+ wp_transition_return_error (transition, g_steal_pointer (&error)); -+ } - return; - } - -GitLab diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch b/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch deleted file mode 100644 index 75e2baf..0000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch +++ /dev/null @@ -1,147 +0,0 @@ -https://bugs.gentoo.org/866551 -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/37c839b9308cd3d6580bf01077db8cb29ec2aa2f -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/370b692933634675213110048fcda6dff52eb52b - -From: Pauli Virtanen -Date: Tue, 19 Jul 2022 20:39:06 +0300 -Subject: [PATCH] policy-node: fix potential rescan loop - -SiLink activation might be delayed indefinitely under some error -conditions. Currently, policy-node schedules a rescan when it sees a -non-activated link on a stream to be moved, which produces busy loop if -the si-link doesn't activate. - -Instead of rescheduling on non-active si-links, just remove and emit a -warning. The si-link then gets removed once it gets activated. - -Reproducer: - -1. Play audio from Rhythmbox and pause. -2. Switch default output with pactl between two different outputs -3. Links from the paused stream stay at "init" ---- a/src/scripts/policy-node.lua -+++ b/src/scripts/policy-node.lua -@@ -694,16 +694,15 @@ function handleLinkable (si) - local link = lookupLink (si_id, si_flags[si_id].peer_id) - if reconnect then - if link ~= nil then -- -- remove old link if active, otherwise schedule rescan -- if ((link:get_active_features() & Feature.SessionItem.ACTIVE) ~= 0) then -- si_flags[si_id].peer_id = nil -- link:remove () -- Log.info (si, "... moving to new target") -- else -- scheduleRescan() -- Log.info (si, "... scheduled rescan") -- return -+ -- remove old link -+ if ((link:get_active_features() & Feature.SessionItem.ACTIVE) == 0) then -+ -- remove also not yet activated links: they might never become active, -+ -- and we should not loop waiting for them -+ Log.warning (link, "Link was not activated before removing") - end -+ si_flags[si_id].peer_id = nil -+ link:remove () -+ Log.info (si, "... moving to new target") - end - else - if link ~= nil then -GitLab - -From: Pauli Virtanen -Date: Tue, 19 Jul 2022 20:01:10 +0300 -Subject: [PATCH] m-si-link: don't wait for establish before activation + - cleanup links - -SiLink should not wait for WpLinks becoming ESTABLISHED, before -activation. That flag shows whether a link has moved away from the -"init" state, however, links to e.g. Pulseaudio corked streams can stay -in "init" state until uncorking. This causes trouble for policies, -which needlessly wait for such links to establish. - -The WpLink objects may also be kept alive by other referents, and -just unrefing them does not necessarily destroy the PW objects. - -Activate SiLink even if the WpLink is still in "init" state. It's enough -that the link otherwise successfully establishes. - -At dispose time, explicitly request destroying the WpLinks that were -created by the SiLink, to ensure they are removed even if there's -something else referring to them. ---- a/modules/module-si-standard-link.c -+++ b/modules/module-si-standard-link.c -@@ -132,6 +132,27 @@ si_standard_link_get_associated_proxy (WpSessionItem * item, GType proxy_type) - return NULL; - } - -+static void -+request_destroy_link (gpointer data, gpointer user_data) -+{ -+ WpLink *link = WP_LINK (data); -+ -+ wp_global_proxy_request_destroy (WP_GLOBAL_PROXY (link)); -+} -+ -+static void -+clear_node_links (GPtrArray **node_links_p) -+{ -+ /* -+ * Something else (eg. object managers) may be keeping the WpLink -+ * objects alive. Deactive the links now, to destroy the PW objects. -+ */ -+ if (*node_links_p) -+ g_ptr_array_foreach (*node_links_p, request_destroy_link, NULL); -+ -+ g_clear_pointer (node_links_p, g_ptr_array_unref); -+} -+ - static void - si_standard_link_disable_active (WpSessionItem *si) - { -@@ -154,7 +175,8 @@ si_standard_link_disable_active (WpSessionItem *si) - WP_SI_LINKABLE (si_in)); - } - -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); -+ - self->n_active_links = 0; - self->n_failed_links = 0; - self->n_async_ops_wait = 0; -@@ -168,7 +190,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res, - WpTransition * transition) - { - WpSiStandardLink *self = wp_transition_get_source_object (transition); -- guint len = self->node_links->len; -+ guint len = self->node_links ? self->node_links->len : 0; - - /* Count the number of failed and active links */ - if (wp_object_activate_finish (proxy, res, NULL)) -@@ -182,7 +204,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res, - - /* We only active feature if all links activated successfully */ - if (self->n_failed_links > 0) { -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); - wp_transition_return_error (transition, g_error_new ( - WP_DOMAIN_LIBRARY, WP_LIBRARY_ERROR_OPERATION_FAILED, - "%d of %d PipeWire links failed to activate", -@@ -251,7 +273,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition, - /* Clear old links if any */ - self->n_active_links = 0; - self->n_failed_links = 0; -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); - - /* tuple format: - uint32 node_id; -@@ -327,7 +349,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition, - - /* activate to ensure it is created without errors */ - wp_object_activate_closure (WP_OBJECT (link), -- WP_OBJECT_FEATURES_ALL, NULL, -+ WP_OBJECT_FEATURES_ALL & ~WP_LINK_FEATURE_ESTABLISHED, NULL, - g_cclosure_new_object ( - (GCallback) on_link_activated, G_OBJECT (transition))); - } -GitLab diff --git a/media-video/wireplumber/metadata.xml b/media-video/wireplumber/metadata.xml deleted file mode 100644 index ff32fcd..0000000 --- a/media-video/wireplumber/metadata.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - sam@gentoo.org - Sam James - - - https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues - https://gitlab.freedesktop.org/pipewire/wireplumber/-/releases - - - - Install systemd unit files for running as a system service. Not recommended. - - diff --git a/media-video/wireplumber/wireplumber-0.4.10-r4.ebuild b/media-video/wireplumber/wireplumber-0.4.10-r4.ebuild deleted file mode 100644 index 820d1ed..0000000 --- a/media-video/wireplumber/wireplumber-0.4.10-r4.ebuild +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -LUA_COMPAT=( lua5-{3,4} ) - -inherit lua-single meson systemd - -if [[ ${PV} == 9999 ]]; then - EGIT_REPO_URI="https://gitlab.freedesktop.org/pipewire/${PN}.git" - EGIT_BRANCH="master" - inherit git-r3 -else - SRC_URI="https://gitlab.freedesktop.org/pipewire/${PN}/-/archive/${PV}/${P}.tar.gz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86" -fi - -DESCRIPTION="Replacement for pipewire-media-session" -HOMEPAGE="https://gitlab.freedesktop.org/pipewire/wireplumber" - -LICENSE="MIT" -SLOT="0/0.4" -IUSE="elogind system-service systemd test" - -REQUIRED_USE=" - ${LUA_REQUIRED_USE} - ?? ( elogind systemd ) - system-service? ( systemd ) -" - -RESTRICT="!test? ( test )" - -# introspection? ( dev-libs/gobject-introspection ) is valid but likely only used for doc building -BDEPEND=" - dev-libs/glib - dev-util/gdbus-codegen - dev-util/glib-utils - sys-devel/gettext -" - -DEPEND=" - ${LUA_DEPS} - >=dev-libs/glib-2.62 - >=media-video/pipewire-0.3.48:= - virtual/libintl - elogind? ( sys-auth/elogind ) - systemd? ( sys-apps/systemd ) -" - -# Any dev-lua/* deps get declared like this inside RDEPEND: -# $(lua_gen_cond_dep ' -# dev-lua/[${LUA_USEDEP}] -# ') -RDEPEND="${DEPEND} - system-service? ( - acct-user/pipewire - acct-group/pipewire - ) -" - -DOCS=( {NEWS,README}.rst ) - -PATCHES=( - "${FILESDIR}"/${P}-config-fix-enabled-property-to-default-to-true-when.patch - "${FILESDIR}"/${P}-m-lua-scripting-allow-converting-GValue-holding-NUL.patch - "${FILESDIR}"/${P}-alsa.lua-fix-device-name-deduplication-when-reserva.patch - "${FILESDIR}"/${P}-m-default-nodes-don-t-check-if-all-device-nodes-are.patch - "${FILESDIR}"/${P}-m-lua-scripting-fix-object-refcounting.patch -) - -src_configure() { - local emesonargs=( - -Ddoc=disabled # Ebuild not wired up yet (Sphinx, Doxygen?) - -Dintrospection=disabled # Only used for Sphinx doc generation - -Dsystem-lua=true # We always unbundle everything we can - -Dsystem-lua-version=$(ver_cut 1-2 $(lua_get_version)) - $(meson_feature elogind) - $(meson_feature systemd) - $(meson_use system-service systemd-system-service) - $(meson_use systemd systemd-user-service) - -Dsystemd-system-unit-dir=$(systemd_get_systemunitdir) - -Dsystemd-user-unit-dir=$(systemd_get_userunitdir) - $(meson_use test tests) - ) - - meson_src_configure -} - -src_install() { - meson_src_install - - # We copy the default config, so that Gentoo tools can pick up on any - # updates and /etc does not end up with stale overrides. - # If a reflinking CoW filesystem is used (e.g. Btrfs), then the files - # will not actually get stored twice until modified. - insinto /etc - doins -r "${ED}"/usr/share/wireplumber -} - -pkg_postinst() { - if systemd_is_booted ; then - ewarn "pipewire-media-session.service is no longer installed. You must switch" - ewarn "to wireplumber.service user unit before your next logout/reboot:" - ewarn "systemctl --user disable pipewire-media-session.service" - ewarn "systemctl --user --force enable wireplumber.service" - else - ewarn "Switch to WirePlumber will happen the next time gentoo-pipewire-launcher" - ewarn "is started (a replacement for directly calling pipewire binary)." - ewarn - ewarn "Please ensure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist" - ewarn "or, if it does exist, that any reference to" - ewarn "${EROOT}/usr/bin/pipewire-media-session is commented out (begins with a #)." - fi - if use system-service; then - ewarn - ewarn "WARNING: you have enabled the system-service USE flag, which installs" - ewarn "the system-wide systemd units that enable WirePlumber to run as a system" - ewarn "service. This is more than likely NOT what you want. You are strongly" - ewarn "advised not to enable this mode and instead stick with systemd user" - ewarn "units. The default configuration files will likely not work out of" - ewarn "box, and you are on your own with configuration." - ewarn - fi -}