diff --git a/pulseaudio-15.99.1.tar.xz b/pulseaudio-15.99.1.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..3ee7e44d200823d2a958868a4b2c09438146f75e Binary files /dev/null and b/pulseaudio-15.99.1.tar.xz differ diff --git a/pulseaudio.spec b/pulseaudio.spec new file mode 100644 index 0000000000000000000000000000000000000000..607449906a3986cf88bc150e4c0523ef142f6040 --- /dev/null +++ b/pulseaudio.spec @@ -0,0 +1,547 @@ +%global pa_major 15.99 +%global pa_minor 1 + +# webrtc bits go wonky without this +# see also https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/JQQ66XJSIT2FGTK2YQY7AXMEH5IXMPUX/ +%undefine _strict_symbol_defs_build +%global with_webrtc 1 + +%global enable_lirc 1 +%global enable_jack 1 + +# https://bugzilla.redhat.com/983606 +%global _hardened_build 1 + +## support systemd activation +%global systemd 1 + +## comment to disable tests +%global tests 1 + +Name: pulseaudio +Summary: Improved Linux Sound Server +Version: %{pa_major}%{?pa_minor:.%{pa_minor}} +Release: 1%{?dist} +License: LGPLv2+ +URL: http://www.freedesktop.org/wiki/Software/PulseAudio +Source0: http://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz + +# revert upstream commit to rely solely on autospawn for autostart, instead +# include a fallback to manual launch when autospawn fails, like when +# user disables autospawn, or logging in as root +# valid even when using systemd socket activation too + +BuildRequires: meson >= 0.50.0 +BuildRequires: gcc +BuildRequires: g++ +BuildRequires: pkgconfig(bash-completion) +%global bash_completionsdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null || echo '/etc/bash_completion.d') +BuildRequires: m4 +BuildRequires: libtool-ltdl-devel +BuildRequires: intltool +BuildRequires: pkgconfig +BuildRequires: doxygen +BuildRequires: xmltoman +BuildRequires: libsndfile-devel +BuildRequires: alsa-lib-devel +BuildRequires: glib2-devel +BuildRequires: gtk2-devel +BuildRequires: avahi-devel +BuildRequires: libatomic_ops-static, libatomic_ops-devel +BuildRequires: pkgconfig(bluez) >= 5.0 +BuildRequires: sbc-devel +BuildRequires: libXt-devel +BuildRequires: xorg-x11-proto-devel +BuildRequires: libXtst-devel +BuildRequires: libXi-devel +BuildRequires: libSM-devel +BuildRequires: libX11-devel +BuildRequires: libICE-devel +BuildRequires: xcb-util-devel +BuildRequires: openssl-devel +BuildRequires: orc-devel +BuildRequires: libtdb-devel +BuildRequires: pkgconfig(soxr) +BuildRequires: pkgconfig(speexdsp) >= 1.2 +BuildRequires: libasyncns-devel +BuildRequires: systemd-devel >= 184 +BuildRequires: systemd +BuildRequires: dbus-devel +BuildRequires: libcap-devel +BuildRequires: pkgconfig(fftw3f) +BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2 +%if 0%{?tests} +BuildRequires: pkgconfig(check) +%endif +BuildRequires: pkgconfig(gstreamer-1.0) >= 1.16.0 +BuildRequires: pkgconfig(gstreamer-app-1.0) >= 1.16.0 +BuildRequires: pkgconfig(gstreamer-rtp-1.0) >= 1.16.0 + +# retired along with -libs-zeroconf, add Obsoletes here for lack of anything better +Obsoletes: padevchooser < 1.0 +Requires(pre): shadow-utils +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: rtkit + +# Virtual Provides to support swapping between PipeWire-PA and PA +Provides: pulseaudio-daemon +Conflicts: pulseaudio-daemon + +# Packages removed in 15.0 +Obsoletes: pulseaudio-esound-compat < 15.0 +Obsoletes: pulseaudio-module-gconf < 15.0 + +%description +PulseAudio is a sound server for Linux and other Unix like operating +systems. It is intended to be an improved drop-in replacement for the +Enlightened Sound Daemon (ESOUND). + +%package qpaeq +Summary: Pulseaudio equalizer interface +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python3-qt5-base +Requires: python3-dbus +%description qpaeq +qpaeq is a equalizer interface for pulseaudio's equalizer sinks. + +%if 0%{?enable_lirc} +%package module-lirc +Summary: LIRC support for the PulseAudio sound server +BuildRequires: lirc-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +%description module-lirc +LIRC volume control module for the PulseAudio sound server. +%endif + +%package module-x11 +Summary: X11 support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-utils + +%description module-x11 +X11 bell and security modules for the PulseAudio sound server. + +%package module-zeroconf +Summary: Zeroconf support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-utils + +%description module-zeroconf +Zeroconf publishing module for the PulseAudio sound server. + +%package module-bluetooth +Summary: Bluetooth support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: bluez >= 5.0 + +%description module-bluetooth +Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server. + +%if 0%{?enable_jack} +%package module-jack +Summary: JACK support for the PulseAudio sound server +BuildRequires: jack-audio-connection-kit-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +%description module-jack +JACK sink and source modules for the PulseAudio sound server. +%endif + +%package module-gsettings +Summary: Gsettings support for the PulseAudio sound server +Requires: %{name}%{?_isa} = %{version}-%{release} +%description module-gsettings +GSettings configuration backend for the PulseAudio sound server. + +%package libs +Summary: Libraries for PulseAudio clients +License: LGPLv2+ +Obsoletes: pulseaudio-libs-zeroconf < 1.1 + +%description libs +This package contains the runtime libraries for any application that wishes +to interface with a PulseAudio sound server. + +%package libs-glib2 +Summary: GLIB 2.x bindings for PulseAudio clients +License: LGPLv2+ +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description libs-glib2 +This package contains bindings to integrate the PulseAudio client library with +a GLIB 2.x based application. + +%package libs-devel +Summary: Headers and libraries for PulseAudio client development +License: LGPLv2+ +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-libs-glib2%{?_isa} = %{version}-%{release} +%description libs-devel +Headers and libraries for developing applications that can communicate with +a PulseAudio sound server. + +%package utils +Summary: PulseAudio sound server utilities +License: LGPLv2+ +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Obsoletes: pulseaudio-utils < 3.0-3 + +%description utils +This package contains command line utilities for the PulseAudio sound server. + +%if 0%{?gdm_hooks} +%package gdm-hooks +Summary: PulseAudio GDM integration +License: LGPLv2+ +Requires: gdm >= 1:2.22.0 +# for the gdm user +Requires(pre): gdm + +%description gdm-hooks +This package contains GDM integration hooks for the PulseAudio sound server. +%endif + + +%prep +%setup -q -T -b0 -n %{name}-%{version}%{?gitrel:-%{gitrel}-g%{shortcommit}} + +## upstream patches + +## upstreamable patches + +sed -i.no_consolekit -e \ + 's/^load-module module-console-kit/#load-module module-console-kit/' \ + src/daemon/default.pa.in + +%if 0%{?gitrel:1} +# fixup PACKAGE_VERSION that leaks into pkgconfig files and friends +sed -i.PACKAGE_VERSION -e "s|^PACKAGE_VERSION=.*|PACKAGE_VERSION=\'%{version}\'|" configure +%else + +#if "%{_libdir}" != "/usr/lib" +#sed -i -e 's|"/lib /usr/lib|"/%{_lib} %{_libdir}|' configure +#endif +%endif + + +%build +%meson \ + -D system_user=pulse \ + -D system_group=pulse \ + -D access_group=pulse-access \ + -D oss-output=disabled \ + -D jack=%{?enable_jack:enabled}%{!?enable_jack:disabled} \ + -D lirc=%{?enable_lirc:enabled}%{!?enable_lirc:disabled} \ + -D tcpwrap=disabled \ + -D bluez5=enabled \ + -D gstreamer=enabled \ + -D bluez5-gstreamer=enabled \ + -D gsettings=enabled \ + -D elogind=disabled \ + -D valgrind=disabled \ + -D gtk=disabled \ + -D soxr=%{?fedora:enabled}%{!?fedora:disabled} \ + -D webrtc-aec=%{?with_webrtc:enabled}%{!?with_webrtc:disabled} \ + -D systemd=%{?systemd:enabled}%{!?systemd:disabled} \ + -D tests=%{?tests:true}%{!?tests:false} + +# we really should preopen here --preopen-mods=module-udev-detect.la, --force-preopen +%meson_build + +%meson_build doxygen + +%install +%meson_install +ls -l $RPM_BUILD_ROOT/usr/lib64/pulse* + +# upstream should use udev.pc +mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d +mv -fv $RPM_BUILD_ROOT/lib/udev/rules.d/90-pulseaudio.rules $RPM_BUILD_ROOT%{_prefix}/lib/udev/rules.d + +## unpackaged files +# extraneous libtool crud +rm -fv $RPM_BUILD_ROOT%{_libdir}/lib*.la +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/lib*.la +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/modules/*.la +# PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-detect!"); +rm -fv $RPM_BUILD_ROOT%{_libdir}/pulseaudio/modules/module-detect.so + +%find_lang %{name} + + +%check +%if 0%{?tests} +%global tests_nonfatal 1 +%meson_test || TESTS_ERROR=$? +if [ "${TESTS_ERROR}" != "" ]; then +cat src/test-suite.log +%{!?tests_nonfatal:exit $TESTS_ERROR} +fi +%endif + + +%pre +getent group pulse-access >/dev/null || groupadd -r pulse-access +getent group pulse-rt >/dev/null || groupadd -r pulse-rt +getent group pulse >/dev/null || groupadd -f -g 171 -r pulse +if ! getent passwd pulse >/dev/null ; then + if ! getent passwd 171 >/dev/null ; then + useradd -r -u 171 -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse + else + useradd -r -g pulse -d %{_localstatedir}/run/pulse -s /sbin/nologin -c "PulseAudio System Daemon" pulse + fi +fi +exit 0 + +%posttrans +# handle renamed module-cork-music-on-phone => module-role-cork +(grep '^load-module module-cork-music-on-phone$' %{_sysconfdir}/pulse/default.pa > /dev/null && \ + sed -i.rpmsave -e 's|^load-module module-cork-music-on-phone$|load-module module-role-cork|' \ + %{_sysconfdir}/pulse/default.pa +) ||: + +%post +%{?ldconfig} +%if 0%{?systemd} +# unsure if we want both .socket and .service here (or only socket) +# test socket-only on f31+ -- rex +%systemd_user_post pulseaudio.socket +%endif + +%if 0%{?systemd} +%preun +%systemd_user_preun pulseaudio.socket +%endif + +%ldconfig_postun + +%if 0%{?systemd} +%triggerun -- pulseaudio < 12.2 +# This is for upgrades from previous versions which had a static symlink. +# The %%post scriptlet above only does anything on initial package installation. +# Remove before F33. +systemctl --no-reload preset --global pulseaudio.socket >/dev/null 2>&1 || : +%endif + +%files +%doc README +%license LICENSE GPL LGPL +%config(noreplace) %{_sysconfdir}/pulse/daemon.conf +%config(noreplace) %{_sysconfdir}/pulse/default.pa +%config(noreplace) %{_sysconfdir}/pulse/system.pa +%{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf +%{bash_completionsdir}/pulseaudio +%if 0%{?systemd} +%{_userunitdir}/pulseaudio.service +%{_userunitdir}/pulseaudio.socket +%endif +%{_bindir}/pa-info +%{_bindir}/pulseaudio +%{_libdir}/pulseaudio/libpulsecore-%{pa_major}.so +%dir %{_libdir}/pulseaudio/ +%dir %{_libdir}/pulseaudio/modules/ +%{_libdir}/pulseaudio/modules/libalsa-util.so +%{_libdir}/pulseaudio/modules/libcli.so +%{_libdir}/pulseaudio/modules/libprotocol-cli.so +%{_libdir}/pulseaudio/modules/libprotocol-http.so +%{_libdir}/pulseaudio/modules/libprotocol-native.so +%{_libdir}/pulseaudio/modules/libprotocol-simple.so +%{_libdir}/pulseaudio/modules/librtp.so +%if 0%{?with_webrtc} +%{_libdir}/pulseaudio/modules/libwebrtc-util.so +%endif +%{_libdir}/pulseaudio/modules/module-allow-passthrough.so +%{_libdir}/pulseaudio/modules/module-alsa-sink.so +%{_libdir}/pulseaudio/modules/module-alsa-source.so +%{_libdir}/pulseaudio/modules/module-alsa-card.so +%{_libdir}/pulseaudio/modules/module-cli-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-cli-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-cli.so +%{_libdir}/pulseaudio/modules/module-combine.so +%{_libdir}/pulseaudio/modules/module-combine-sink.so +%{_libdir}/pulseaudio/modules/module-dbus-protocol.so +%{_libdir}/pulseaudio/modules/module-filter-apply.so +%{_libdir}/pulseaudio/modules/module-filter-heuristics.so +%{_libdir}/pulseaudio/modules/module-device-manager.so +%{_libdir}/pulseaudio/modules/module-loopback.so +%{_libdir}/pulseaudio/modules/module-udev-detect.so +%{_libdir}/pulseaudio/modules/module-hal-detect.so +%{_libdir}/pulseaudio/modules/module-http-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-http-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-match.so +%{_libdir}/pulseaudio/modules/module-mmkbd-evdev.so +%{_libdir}/pulseaudio/modules/module-native-protocol-fd.so +%{_libdir}/pulseaudio/modules/module-native-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-native-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-null-sink.so +%{_libdir}/pulseaudio/modules/module-null-source.so +%{_libdir}/pulseaudio/modules/module-pipe-sink.so +%{_libdir}/pulseaudio/modules/module-pipe-source.so +%{_libdir}/pulseaudio/modules/module-remap-source.so +%{_libdir}/pulseaudio/modules/module-rescue-streams.so +%{_libdir}/pulseaudio/modules/module-role-ducking.so +%{_libdir}/pulseaudio/modules/module-rtp-recv.so +%{_libdir}/pulseaudio/modules/module-rtp-send.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-sine.so +%{_libdir}/pulseaudio/modules/module-switch-on-port-available.so +%{_libdir}/pulseaudio/modules/module-systemd-login.so +%{_libdir}/pulseaudio/modules/module-tunnel-sink-new.so +%{_libdir}/pulseaudio/modules/module-tunnel-sink.so +%{_libdir}/pulseaudio/modules/module-tunnel-source-new.so +%{_libdir}/pulseaudio/modules/module-tunnel-source.so +%{_libdir}/pulseaudio/modules/module-volume-restore.so +%{_libdir}/pulseaudio/modules/module-suspend-on-idle.so +%{_libdir}/pulseaudio/modules/module-default-device-restore.so +%{_libdir}/pulseaudio/modules/module-device-restore.so +%{_libdir}/pulseaudio/modules/module-stream-restore.so +%{_libdir}/pulseaudio/modules/module-card-restore.so +%{_libdir}/pulseaudio/modules/module-ladspa-sink.so +%{_libdir}/pulseaudio/modules/module-remap-sink.so +%{_libdir}/pulseaudio/modules/module-always-sink.so +%{_libdir}/pulseaudio/modules/module-always-source.so +%{_libdir}/pulseaudio/modules/module-console-kit.so +%{_libdir}/pulseaudio/modules/module-position-event-sounds.so +%{_libdir}/pulseaudio/modules/module-augment-properties.so +%{_libdir}/pulseaudio/modules/module-role-cork.so +%{_libdir}/pulseaudio/modules/module-sine-source.so +%{_libdir}/pulseaudio/modules/module-intended-roles.so +%{_libdir}/pulseaudio/modules/module-rygel-media-server.so +%{_libdir}/pulseaudio/modules/module-echo-cancel.so +%{_libdir}/pulseaudio/modules/module-switch-on-connect.so +%{_libdir}/pulseaudio/modules/module-virtual-sink.so +%{_libdir}/pulseaudio/modules/module-virtual-source.so +%{_libdir}/pulseaudio/modules/module-virtual-surround-sink.so +%dir %{_datadir}/pulseaudio/ +%dir %{_datadir}/pulseaudio/alsa-mixer/ +%{_datadir}/pulseaudio/alsa-mixer/paths/ +%{_datadir}/pulseaudio/alsa-mixer/profile-sets/ +%{_mandir}/man1/pulseaudio.1* +%{_mandir}/man5/default.pa.5* +%{_mandir}/man5/pulse-cli-syntax.5* +%{_mandir}/man5/pulse-client.conf.5* +%{_mandir}/man5/pulse-daemon.conf.5* +%{_prefix}/lib/udev/rules.d/90-pulseaudio.rules +%dir %{_libexecdir}/pulse +%dir %{_datadir}/zsh/ +%dir %{_datadir}/zsh/site-functions/ +%{_datadir}/zsh/site-functions/_pulseaudio + +%files qpaeq +%{_bindir}/qpaeq +%{_libdir}/pulseaudio/modules/module-equalizer-sink.so + +%if 0%{?enable_lirc} +%files module-lirc +%{_libdir}/pulseaudio/modules/module-lirc.so +%endif + +%files module-x11 +%config(noreplace) %{_sysconfdir}/xdg/autostart/pulseaudio.desktop +%config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11 +%{_userunitdir}/pulseaudio-x11.service +#{_bindir}/start-pulseaudio-kde +%{_bindir}/start-pulseaudio-x11 +%{_libdir}/pulseaudio/modules/module-x11-bell.so +%{_libdir}/pulseaudio/modules/module-x11-publish.so +%{_libdir}/pulseaudio/modules/module-x11-xsmp.so +%{_libdir}/pulseaudio/modules/module-x11-cork-request.so +%{_mandir}/man1/start-pulseaudio-x11.1.gz + +%files module-zeroconf +%{_libdir}/pulseaudio/modules/libavahi-wrap.so +%{_libdir}/pulseaudio/modules/module-zeroconf-publish.so +%{_libdir}/pulseaudio/modules/module-zeroconf-discover.so +%{_libdir}/pulseaudio/modules/libraop.so +%{_libdir}/pulseaudio/modules/module-raop-discover.so +%{_libdir}/pulseaudio/modules/module-raop-sink.so + +%if 0%{?enable_jack} +%files module-jack +%{_libdir}/pulseaudio/modules/module-jackdbus-detect.so +%{_libdir}/pulseaudio/modules/module-jack-sink.so +%{_libdir}/pulseaudio/modules/module-jack-source.so +%endif + +%files module-bluetooth +%{_libdir}/pulseaudio/modules/libbluez*-util.so +%{_libdir}/pulseaudio/modules/module-bluez*-device.so +%{_libdir}/pulseaudio/modules/module-bluez*-discover.so +%{_libdir}/pulseaudio/modules/module-bluetooth-discover.so +%{_libdir}/pulseaudio/modules/module-bluetooth-policy.so + +%files module-gsettings +%{_libdir}/pulseaudio/modules/module-gsettings.so +%{_libexecdir}/pulse/gsettings-helper +%{_datadir}/GConf/gsettings/pulseaudio.convert +%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml + +%ldconfig_scriptlets libs + +%files libs -f %{name}.lang +%doc README +%license LICENSE GPL LGPL +%dir %{_sysconfdir}/pulse/ +%config(noreplace) %{_sysconfdir}/pulse/client.conf +%{_libdir}/libpulse.so.0* +%{_libdir}/libpulse-simple.so.0* +%dir %{_libdir}/pulseaudio/ +%{_libdir}/pulseaudio/libpulsecommon-%{pa_major}.so + +%ldconfig_scriptlets libs-glib2 + +%files libs-glib2 +%{_libdir}/libpulse-mainloop-glib.so.0* + +%files libs-devel +%doc %{_vpath_builddir}/doxygen/html +%{_includedir}/pulse/ +%{_libdir}/libpulse.so +%{_libdir}/libpulse-mainloop-glib.so +%{_libdir}/libpulse-simple.so +%{_libdir}/pkgconfig/libpulse*.pc +%dir %{_datadir}/vala +%dir %{_datadir}/vala/vapi +%{_datadir}/vala/vapi/libpulse.vapi +%{_datadir}/vala/vapi/libpulse.deps +%{_datadir}/vala/vapi/libpulse-mainloop-glib.vapi +%{_datadir}/vala/vapi/libpulse-mainloop-glib.deps +%{_datadir}/vala/vapi/libpulse-simple.deps +%{_datadir}/vala/vapi/libpulse-simple.vapi + +%dir %{_libdir}/cmake +%{_libdir}/cmake/PulseAudio/ + +%files utils +%{_bindir}/pacat +%{_bindir}/pacmd +%{_bindir}/pactl +%{_bindir}/paplay +%{_bindir}/parec +%{_bindir}/pamon +%{_bindir}/parecord +%{_bindir}/pax11publish +%{_bindir}/pasuspender +%{_mandir}/man1/pacat.1* +%{_mandir}/man1/pacmd.1* +%{_mandir}/man1/pactl.1* +%{_mandir}/man1/pamon.1* +%{_mandir}/man1/paplay.1* +%{_mandir}/man1/parec.1* +%{_mandir}/man1/parecord.1* +%{_mandir}/man1/pasuspender.1* +%{_mandir}/man1/pax11publish.1* +%{bash_completionsdir}/pacat +%{bash_completionsdir}/pacmd +%{bash_completionsdir}/pactl +%{bash_completionsdir}/padsp +%{bash_completionsdir}/paplay +%{bash_completionsdir}/parec +%{bash_completionsdir}/parecord +%{bash_completionsdir}/pasuspender + + +%changelog +* Mon Apr 18 2022 gcdota930915 - 15.99.1-1 +- Init from upstream version 15.99.1-1 +