From 1baae41b8d9d105bbdea32470907bffb61cb2408 Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Mon, 14 Oct 2024 13:59:32 +0800 Subject: [PATCH] add upstream patch fixing running tests with impossible alignments --- ...volume-tests-with-impossible-alignme.patch | 105 +++++++++++++ pulseaudio.spec | 147 +++++++++++++----- pulseaudio.yaml | 4 +- 3 files changed, 215 insertions(+), 41 deletions(-) create mode 100644 backport-tests-Don-t-run-volume-tests-with-impossible-alignme.patch diff --git a/backport-tests-Don-t-run-volume-tests-with-impossible-alignme.patch b/backport-tests-Don-t-run-volume-tests-with-impossible-alignme.patch new file mode 100644 index 0000000..59757a7 --- /dev/null +++ b/backport-tests-Don-t-run-volume-tests-with-impossible-alignme.patch @@ -0,0 +1,105 @@ +From 84f5b742e39ba3e375bac9144e0243b7331f4019 Mon Sep 17 00:00:00 2001 +From: Arun Raghavan +Date: Fri, 22 Mar 2024 09:31:48 -0400 +Subject: [PATCH] tests: Don't run volume tests with impossible alignments + +This worked so far somehow, but we were sending in some samples at +unrealistic alignments (given that pa_memblockq will be frame-aligned, +and we expect all operations to occur per-frame as well). + +Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/3803 +Part-of: +--- + src/tests/cpu-volume-test.c | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +diff --git a/src/tests/cpu-volume-test.c b/src/tests/cpu-volume-test.c +index c7d73be04..24811ead0 100644 +--- a/src/tests/cpu-volume-test.c ++++ b/src/tests/cpu-volume-test.c +@@ -43,6 +43,7 @@ static void run_volume_test( + int channels, + bool correct, + bool perf) { ++ fail_unless(align % channels == 0); + + PA_DECLARE_ALIGNED(8, int16_t, s[SAMPLES]) = { 0 }; + PA_DECLARE_ALIGNED(8, int16_t, s_ref[SAMPLES]) = { 0 }; +@@ -56,8 +57,6 @@ static void run_volume_test( + samples_ref = s_ref + (8 - align); + samples_orig = s_orig + (8 - align); + nsamples = SAMPLES - (8 - align); +- if (nsamples % channels) +- nsamples -= nsamples % channels; + size = nsamples * sizeof(int16_t); + + pa_random(samples, size); +@@ -119,12 +118,12 @@ START_TEST (svolume_mmx_test) { + + pa_log_debug("Checking MMX svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(mmx_func, orig_func, j, i, true, false); ++ for (j = 0; j <= 7; j += i) ++ run_volume_test(mmx_func, orig_func, j, i, true, j == 0); + } + run_volume_test(mmx_func, orig_func, 7, 1, true, true); +- run_volume_test(mmx_func, orig_func, 7, 2, true, true); +- run_volume_test(mmx_func, orig_func, 7, 3, true, true); ++ run_volume_test(mmx_func, orig_func, 6, 2, true, true); ++ run_volume_test(mmx_func, orig_func, 6, 3, true, true); + } + END_TEST + +@@ -146,12 +145,12 @@ START_TEST (svolume_sse_test) { + + pa_log_debug("Checking SSE2 svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(sse_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(sse_func, orig_func, j, i, true, j == 0); + } + run_volume_test(sse_func, orig_func, 7, 1, true, true); +- run_volume_test(sse_func, orig_func, 7, 2, true, true); +- run_volume_test(sse_func, orig_func, 7, 3, true, true); ++ run_volume_test(sse_func, orig_func, 6, 2, true, true); ++ run_volume_test(sse_func, orig_func, 6, 3, true, true); + } + END_TEST + #endif /* defined (__i386__) || defined (__amd64__) */ +@@ -175,12 +174,12 @@ START_TEST (svolume_arm_test) { + + pa_log_debug("Checking ARM svolume"); + for (i = 1; i <= 3; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(arm_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(arm_func, orig_func, j, i, true, j == 0); + } + run_volume_test(arm_func, orig_func, 7, 1, true, true); +- run_volume_test(arm_func, orig_func, 7, 2, true, true); +- run_volume_test(arm_func, orig_func, 7, 3, true, true); ++ run_volume_test(arm_func, orig_func, 6, 2, true, true); ++ run_volume_test(arm_func, orig_func, 6, 3, true, true); + } + END_TEST + #endif /* defined (__arm__) && defined (__linux__) */ +@@ -207,11 +206,11 @@ START_TEST (svolume_orc_test) { + + pa_log_debug("Checking Orc svolume"); + for (i = 1; i <= 2; i++) { +- for (j = 0; j < 7; j++) +- run_volume_test(orc_func, orig_func, j, i, true, false); ++ for (j = 0; j < 7; j += i) ++ run_volume_test(orc_func, orig_func, j, i, true, j == 0); + } + run_volume_test(orc_func, orig_func, 7, 1, true, true); +- run_volume_test(orc_func, orig_func, 7, 2, true, true); ++ run_volume_test(orc_func, orig_func, 6, 2, true, true); + } + END_TEST + +-- +GitLab + diff --git a/pulseaudio.spec b/pulseaudio.spec index feda419..7e96a07 100644 --- a/pulseaudio.spec +++ b/pulseaudio.spec @@ -7,14 +7,14 @@ Name: pulseaudio Summary: Improved Linux Sound Server -Version: %{pa_major}%{?pa_minor:.%{pa_minor}} -Release: 1 -License: LGPLv2+ +Version: %{pa_major}%{?pa_minor} +Release: 2 +License: LGPL-2.1-or-later URL: https://www.freedesktop.org/wiki/Software/PulseAudio Source0: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz Source1: https://freedesktop.org/software/pulseaudio/releases/pulseaudio-%{version}.tar.xz.sha256sum Source5: default.pa-for-gdm - +Patch6001: backport-tests-Don-t-run-volume-tests-with-impossible-alignme.patch BuildRequires: meson BuildRequires: automake libtool gcc-c++ bash-completion @@ -26,6 +26,7 @@ BuildRequires: libICE-devel xcb-util-devel openssl-devel orc-devel libtdb-devel BuildRequires: libasyncns-devel systemd-devel systemd dbus-devel libcap-devel fftw-devel BuildRequires: pkgconfig(gstreamer-1.0) pkgconfig(gstreamer-app-1.0) pkgconfig(gstreamer-rtp-1.0) BuildRequires: chrpath +BuildRequires: cmake-rpm-macros Obsoletes: padevchooser < 1.0 Provides: %{name}-module-x11 %{name}-utils %{name}-esound-compat %{name}-module-zeroconf %{name}-module-gsettings @@ -56,8 +57,8 @@ Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server. %package libs Summary: Libraries for PulseAudio clients -License: LGPLv2+ Obsoletes: pulseaudio-libs-zeroconf < 1.1 +Conflicts: %{name} < 17.0-2 %description libs This package contains the runtime libraries for any application that wishes @@ -65,7 +66,6 @@ to interface with a PulseAudio sound server. %package libs-glib2 Summary: GLIB 2.x bindings for PulseAudio clients -License: LGPLv2+ Requires: %{name}-libs = %{version}-%{release} %description libs-glib2 @@ -74,7 +74,6 @@ a GLIB 2.x based application. %package libs-devel Summary: Headers and libraries for PulseAudio client development -License: LGPLv2+ Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-libs-glib2 = %{version}-%{release} @@ -111,6 +110,7 @@ sed -i.no_consolekit -e \ -D soxr=disabled \ -D webrtc-aec=disabled \ -D systemd=disabled \ + -D udevrulesdir=%{_udevrulesdir} \ -D tests=true %meson_build @@ -120,11 +120,6 @@ sed -i.no_consolekit -e \ %install %meson_install -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 - -%delete_la - ## delete rpath touch %{name}-%{_arch}.conf echo "%{_libdir}/pulseaudio/modules" >> %{name}-%{_arch}.conf @@ -133,10 +128,15 @@ find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "ELF" | awk -F ':' '{prin mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d install -p -m644 %{name}-%{_arch}.conf $RPM_BUILD_ROOT/etc/ld.so.conf.d/ +%find_lang %{name} + +# PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-detect!"); +rm -fv %{buildroot}%{_libdir}/pulseaudio/modules/module-detect.so + %check %meson_test || TESTS_ERROR=$? if [ "${TESTS_ERROR}" != "" ]; then -cat src/test-suite.log +cat %{_vpath_builddir}/meson-logs/testlog.txt exit $TESTS_ERROR fi @@ -159,10 +159,7 @@ exit 0 %{_sysconfdir}/pulse/default.pa ) ||: -%ldconfig_scriptlets - %files -%defattr(-,root,root) %license LICENSE GPL LGPL %config(noreplace) %{_sysconfdir}/pulse/daemon.conf %config(noreplace) %{_sysconfdir}/pulse/*.pa @@ -182,31 +179,100 @@ exit 0 %{_bindir}/pax11publish %{_bindir}/pasuspender %{_bindir}/pa-info -%{_libdir}/*.so.* -%exclude %{_libdir}/libpulse.so.0* -%exclude %{_libdir}/libpulse-simple.so.0* -%exclude %{_libdir}/libpulse-mainloop-glib.so.0* -%{_libdir}/pulseaudio/*.so -%exclude %{_libdir}/pulseaudio/libpulsecommon-%{pa_major}.so -%{_libdir}/pulseaudio/modules/*.so -%exclude %{_libdir}/pulseaudio/modules/module-equalizer-sink.so -%exclude %{_libdir}/pulseaudio/modules/module-detect.so -%exclude %{_libdir}/pulseaudio/modules/libbluez*-util.so -%exclude %{_libdir}/pulseaudio/modules/module-bluez*-device.so -%exclude %{_libdir}/pulseaudio/modules/module-bluez*-discover.so -%exclude %{_libdir}/pulseaudio/modules/module-bluetooth-discover.so -%exclude %{_libdir}/pulseaudio/modules/module-bluetooth-policy.so -%{_prefix}/lib/udev/rules.d/90-pulseaudio.rules +%dir %{_libdir}/pulseaudio +%{_libdir}/pulseaudio/libpulsecore-%{pa_major}.so +%dir %{_libdir}/pulseaudio/modules +%{_libdir}/pulseaudio/modules/libalsa-util.so +%{_libdir}/pulseaudio/modules/libavahi-wrap.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/libraop.so +%{_libdir}/pulseaudio/modules/librtp.so +%{_libdir}/pulseaudio/modules/module-allow-passthrough.so +%{_libdir}/pulseaudio/modules/module-alsa-card.so +%{_libdir}/pulseaudio/modules/module-alsa-sink.so +%{_libdir}/pulseaudio/modules/module-alsa-source.so +%{_libdir}/pulseaudio/modules/module-always-sink.so +%{_libdir}/pulseaudio/modules/module-always-source.so +%{_libdir}/pulseaudio/modules/module-augment-properties.so +%{_libdir}/pulseaudio/modules/module-card-restore.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-sink.so +%{_libdir}/pulseaudio/modules/module-combine.so +%{_libdir}/pulseaudio/modules/module-console-kit.so +%{_libdir}/pulseaudio/modules/module-dbus-protocol.so +%{_libdir}/pulseaudio/modules/module-default-device-restore.so +%{_libdir}/pulseaudio/modules/module-device-manager.so +%{_libdir}/pulseaudio/modules/module-device-restore.so +%{_libdir}/pulseaudio/modules/module-echo-cancel.so +%{_libdir}/pulseaudio/modules/module-filter-apply.so +%{_libdir}/pulseaudio/modules/module-filter-heuristics.so +%{_libdir}/pulseaudio/modules/module-gsettings.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-intended-roles.so +%{_libdir}/pulseaudio/modules/module-ladspa-sink.so +%{_libdir}/pulseaudio/modules/module-loopback.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-position-event-sounds.so +%{_libdir}/pulseaudio/modules/module-raop-discover.so +%{_libdir}/pulseaudio/modules/module-raop-sink.so +%{_libdir}/pulseaudio/modules/module-remap-sink.so +%{_libdir}/pulseaudio/modules/module-remap-source.so +%{_libdir}/pulseaudio/modules/module-rescue-streams.so +%{_libdir}/pulseaudio/modules/module-role-cork.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-rygel-media-server.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-tcp.so +%{_libdir}/pulseaudio/modules/module-simple-protocol-unix.so +%{_libdir}/pulseaudio/modules/module-sine-source.so +%{_libdir}/pulseaudio/modules/module-sine.so +%{_libdir}/pulseaudio/modules/module-stream-restore.so +%{_libdir}/pulseaudio/modules/module-suspend-on-idle.so +%{_libdir}/pulseaudio/modules/module-switch-on-connect.so +%{_libdir}/pulseaudio/modules/module-switch-on-port-available.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-udev-detect.so +%{_libdir}/pulseaudio/modules/module-virtual-sink.so +%{_libdir}/pulseaudio/modules/module-virtual-source.so +%{_libdir}/pulseaudio/modules/module-virtual-surround-sink.so +%{_libdir}/pulseaudio/modules/module-volume-restore.so +%{_libdir}/pulseaudio/modules/module-x11-bell.so +%{_libdir}/pulseaudio/modules/module-x11-cork-request.so +%{_libdir}/pulseaudio/modules/module-x11-publish.so +%{_libdir}/pulseaudio/modules/module-x11-xsmp.so +%{_libdir}/pulseaudio/modules/module-zeroconf-discover.so +%{_libdir}/pulseaudio/modules/module-zeroconf-publish.so +%{_udevrulesdir}/90-pulseaudio.rules +%dir %{_libexecdir}/pulse %{_libexecdir}/pulse/*-helper %{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml -%{_datadir}/locale/* -%{_datadir}/pulseaudio/alsa-mixer/*/ +%dir %{_datadir}/pulseaudio +%{_datadir}/pulseaudio/alsa-mixer %{_datadir}/zsh/site-functions/_pulseaudio %{_datadir}/GConf/gsettings/pulseaudio.convert %config(noreplace) %{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11 %files qpaeq -%defattr(-,root,root) %{_bindir}/qpaeq %{_libdir}/pulseaudio/modules/module-equalizer-sink.so @@ -217,7 +283,7 @@ exit 0 %{_libdir}/pulseaudio/modules/module-bluetooth-discover.so %{_libdir}/pulseaudio/modules/module-bluetooth-policy.so -%files libs +%files libs -f %{name}.lang %dir %{_sysconfdir}/pulse/ %config(noreplace) %{_sysconfdir}/pulse/client.conf %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf @@ -230,18 +296,21 @@ exit 0 %{_libdir}/libpulse-mainloop-glib.so.0* %files libs-devel -%defattr(-,root,root) -%{_includedir}/pulse/ +%{_includedir}/pulse %{_libdir}/*.so %{_libdir}/pkgconfig/*.pc %{_datadir}/vala/vapi/* %{_libdir}/cmake/PulseAudio/ %files help -%defattr(-,root,root) -%{_mandir}/man*/* +%{_mandir}/man?/* %changelog +* Mon Oct 14 2024 Funda Wang - 17.0-2 +- add upstream patch fixing running tests with impossible alignments +- move language files into lib package +- cleanup spec + * Tue Feb 06 2024 taoyuxiang - 17.0-1 - update to version 17.0 diff --git a/pulseaudio.yaml b/pulseaudio.yaml index b687180..43db877 100644 --- a/pulseaudio.yaml +++ b/pulseaudio.yaml @@ -1,4 +1,4 @@ version_control: git -src_repo: git://anongit.freedesktop.org/pulseaudio/pulseaudio +src_repo: https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git tag_prefix: ^v -seperator: . +separator: . -- Gitee