Sync from SUSE:ALP:Source:Standard:1.0 pulseaudio revision 2c2f41e7456cbee05b8f7bee64c4fd49

This commit is contained in:
Adrian Schröter 2023-06-07 08:25:23 +02:00
commit e843ac7040
20 changed files with 3603 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

9
baselibs.conf Normal file
View File

@ -0,0 +1,9 @@
libpulse0
obsoletes "pulseaudio-libs-<targettype> <= <version>"
provides "pulseaudio-libs-<targettype> = <version>"
recommends "pulseaudio-utils-<targettype>"
libpulse-mainloop-glib0
libpulse-devel
requires "libpulse0-<targettype> = <version>"
requires "libpulse-mainloop-glib0-<targettype> = <version>"
pulseaudio-utils

1
client-system.conf Normal file
View File

@ -0,0 +1 @@
autospawn = no

25
default.pa-for-gdm Normal file
View File

@ -0,0 +1,25 @@
load-module module-device-restore
load-module module-card-restore
load-module module-udev-detect
load-module module-native-protocol-unix
load-module module-default-device-restore
load-module module-always-sink
load-module module-intended-roles
load-module module-suspend-on-idle
load-module module-console-kit
load-module module-position-event-sounds
### unload driver modules for Bluetooth hardware
### this ensure Bluetooth headset are not stolen by gdm pulseaudio instance
.nofail
.ifexists module-bluetooth-policy.so
unload-module module-bluetooth-policy
.endif
.ifexists module-bluetooth-discover.so
unload-module module-bluetooth-discover
.endif
.fail

View File

@ -0,0 +1,3 @@
# Set flat-volumes to no so that no applications can abruptedly increase master volume
# Remedy for fate#310668.
flat-volumes = no

15
disabled-start.diff Normal file
View File

@ -0,0 +1,15 @@
--- a/src/daemon/start-pulseaudio-x11.in 2021-07-27 20:02:27.739868200 +0000
+++ b/src/daemon/start-pulseaudio-x11.in 2021-08-02 20:53:22.460023234 +0000
@@ -17,6 +17,12 @@
set -e
+. /etc/sysconfig/sound
+
+if [ x"$PULSEAUDIO_ENABLE" = x"no" ] || [ x"$PULSEAUDIO_SYSTEM" = x"yes" ] ; then
+ exit 1
+fi
+
if [ -n "$1" ] ; then
case $1 in
stop)

BIN
pulseaudio-16.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,38 @@
From: Takashi Iwai <tiwai@suse.de>
Subject: dump-module: Ignore invalid module-init-tools entries
References: bsc#1194379
pulseaudio dump-modules iterates all entries beginning with "module-"
prefix, and unfortunately the directory /usr/lib/module-init-tools
that is installed by suse-module-tools package hitting incorrectly,
which results in spurious errors as:
E: [pulseaudio] ltdl-bind-now.c: Failed to open module /lib/module-init-tools.so: /lib/module-init-tools.so: cannot open shared object file: No such file or directory
....
Simply ignore this entry as a workaround.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
diff --git a/src/daemon/dumpmodules.c b/src/daemon/dumpmodules.c
index 8410bbcdcca8..2abc3b8bb0c9 100644
--- a/src/daemon/dumpmodules.c
+++ b/src/daemon/dumpmodules.c
@@ -115,6 +115,8 @@ static int callback(const char *path, lt_ptr data) {
if (strlen(e) <= sizeof(PREFIX)-1 || strncmp(e, PREFIX, sizeof(PREFIX)-1))
return 0;
+ if (!strcmp(e, "module-init-tools"))
+ return 0;
if (is_preloaded(e))
return 0;
@@ -141,6 +143,8 @@ void pa_dump_modules(pa_daemon_conf *c, int argc, char * const argv[]) {
if (strlen(l->name) <= sizeof(PREFIX)-1 || strncmp(l->name, PREFIX, sizeof(PREFIX)-1))
continue;
+ if (!strcmp(l->name, "module-init-tools"))
+ continue;
pa_snprintf(buf, sizeof(buf), "%s", l->name);
if ((e = strrchr(buf, '.')))

View File

@ -0,0 +1,2 @@
d /var/lib/gdm/.pulse 0700 gdm gdm -
C /var/lib/gdm/.pulse/default.pa 0600 gdm gdm - /usr/share/factory/var/lib/gdm/.pulse/default.pa

View File

@ -0,0 +1,22 @@
---
src/daemon/systemd/user/pulseaudio.service.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/src/daemon/systemd/user/pulseaudio.service.in
+++ b/src/daemon/systemd/user/pulseaudio.service.in
@@ -18,13 +18,13 @@ ConditionUser=!root
[Service]
ExecStart=@PA_BINARY@ --daemonize=no --log-target=journal
-LockPersonality=yes
+#LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
-SystemCallFilter=@system-service
+# SystemCallFilter=@system-service
# Note that notify will only work if --daemonize=no
Type=notify
UMask=0077

3
pulseaudio-rpmlintrc Normal file
View File

@ -0,0 +1,3 @@
# Filter out warnings about hidden files in pulseaudio-gdm-hooks -- they are ok/expected
addFilter("hidden-file-or-dir .*/usr/share/factory/var/lib/gdm/.pulse")
addFilter("hidden-file-or-dir .*/var/lib/gdm/.pulse")

2188
pulseaudio.changes Normal file

File diff suppressed because it is too large Load Diff

11
pulseaudio.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=System wide PulseAudio instance
After=syslog.target network.target alsasound.service
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/pulseaudio --system --log-target=journal
[Install]
WantedBy=multi-user.target

740
pulseaudio.spec Normal file
View File

@ -0,0 +1,740 @@
#
# spec file for package pulseaudio
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# Tumbleweed compiler works fine on all platforms
%if 0%{?suse_version} < 1599
%define _lto_cflags %{nil}
%endif
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
%define drvver 16.1
%define soname 0
%define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d
%define _bashcompletionsdir %{_datadir}/bash-completion/completions
Name: pulseaudio
Version: 16.1
Release: 0
Summary: A Networked Sound Server
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Group: System/Sound Daemons
Url: https://www.freedesktop.org/wiki/Software/PulseAudio/
Source: https://www.freedesktop.org/software/pulseaudio/releases/%{name}-%{version}.tar.xz
Source1: default.pa-for-gdm
Source2: setup-pulseaudio
Source3: sysconfig.sound-pulseaudio
Source5: pulseaudio.service
Source6: disable_flat_volumes.conf
Source7: pulseaudio.tmpfiles
Source8: pulseaudio-gdm-hooks.tmpfiles
Source9: client-system.conf
Source10: system-user-pulse.conf
Source98: pulseaudio-rpmlintrc
Source99: baselibs.conf
Patch0: disabled-start.diff
Patch1: suppress-socket-error-msg.diff
# PATCH-FIX-OPENSUSE qpaeq-shebang.patch Avoid rpmlint error due to using env python shebang
Patch5: qpaeq-shebang.patch
# PATCH-FIX-OPENSUSE Workaround for old systemd on Leap 15.x
Patch6: pulseaudio-old-systemd-workaround.patch
# PATCH-FIX-OPENSUSE Workaround for suse-module-tools directory
Patch7: pulseaudio-dump-module-Ignore-invalid-module-init-tools.patch
BuildRequires: alsa-devel >= 1.0.19
BuildRequires: bluez-devel >= 5
BuildRequires: fdupes
BuildRequires: fftw3-devel >= 3.0
BuildRequires: gcc-c++
BuildRequires: jack-devel
BuildRequires: meson
BuildRequires: libatomic_ops-devel >= 1.2
BuildRequires: libavahi-devel
BuildRequires: libcap-devel
BuildRequires: libopenssl-devel
BuildRequires: libsndfile-devel >= 1.0.18
BuildRequires: libtool
BuildRequires: pkgconfig(libudev) >= 143
BuildRequires: libwebrtc_audio_processing-devel >= 0.3
BuildRequires: orc >= 0.4.9
BuildRequires: perl-XML-Parser
BuildRequires: pkgconfig
BuildRequires: speexdsp-devel
BuildRequires: systemd-rpm-macros
BuildRequires: sysuser-tools
BuildRequires: pkgconfig(bash-completion)
BuildRequires: pkgconfig(check)
BuildRequires: pkgconfig(dbus-1) >= 1.4.12
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-app-1.0)
BuildRequires: pkgconfig(gstreamer-rtp-1.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(ice)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(lirc)
BuildRequires: pkgconfig(sbc) >= 1.0
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(soxr)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(tdb)
BuildRequires: pkgconfig(udev)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xtst)
Requires: rtkit
Requires: udev >= 146
#!BuildIgnore: user(pulse)
Requires(pre): user(pulse)
## needs the same liborc version which was used to build against
%requires_eq liborc-0_4-0
Requires(post): pulseaudio-setup
Recommends: alsa-plugins-pulse
Suggests: libsoxr0 >= 0.1.1
Conflicts: kernel < 2.6.31
Obsoletes: libpulsecore9 < 0.9.15
Provides: libpulsecore9 = 0.9.15
Obsoletes: libpulsecore7 < 0.9.13
Provides: libpulsecore7 = 0.9.13
Provides: pulseaudio-daemon
Conflicts: pulseaudio-daemon
%description
pulseaudio is a networked sound server for Linux, other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
%package setup
Summary: Set-up script for PulseAudio
Group: System/Sound Daemons
Requires(post): %fillup_prereq
%description setup
This package contains a setup script for making PulseAudio working with
various applications.
%package module-lirc
Summary: LIRC module for PulseAudio
Group: System/Sound Daemons
Requires: %{name} = %{version}
Supplements: (pulseaudio and lirc-core)
%description module-lirc
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package provides support for IR and RF remotes.
%package module-x11
Summary: X11 module for PulseAudio
Group: System/Sound Daemons
Requires: %{name} = %{version}
Requires: %{name}-utils = %{version}
%description module-x11
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package provides the components needed to automatically start
the PulseAudio sound server on X11 startup.
%package module-zeroconf
Summary: Zeroconf module for PulseAudio
Group: System/Sound Daemons
Requires: %{name} = %{version}
Supplements: (pulseaudio and avahi)
%description module-zeroconf
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package provides zeroconf network support for the PulseAudio sound server
%package system-wide
Summary: Support for running PulseAudio daemon system wide
Group: System/Sound Daemons
Requires: %{name}
%systemd_requires
%description system-wide
PulseAudio daemon can be run as a system-wide instance which than can be shared
by multiple local users. We recommend running the PulseAudio daemon per-user,
just like the traditional ESD sound daemon. In some situations however, such as
embedded systems where no real notion of a user exists, it makes sense to use
the system-wide mode.
Before you now go ahead and use it please read about what is wrong with system
mode:
http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/WhatIsWrongWithSystemWide
%package module-jack
Summary: JACK support for the PulseAudio sound server
Group: System/Sound Daemons
Requires: %{name} = %{version}
%description module-jack
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package includes support for Jack-based applications.
%package module-bluetooth
Summary: Bluetooth support for the PulseAudio sound server
Group: System/Sound Daemons
Requires: %{name} = %{version}
Requires: bluez >= 5
Supplements: (pulseaudio and bluez)
%description module-bluetooth
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server.
%package module-gsettings
Summary: GSettings module for PulseAudio
Group: System/Sound Daemons
Requires: %{name} = %{version}
Conflicts: %{name}-module-gconf
%description module-gsettings
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package provides GSettings storage of PulseAudio sound server settings.
%package -n libpulse%{soname}
Summary: Client interface to PulseAudio
Group: System/Libraries
Provides: pulseaudio-libs = %{version}
Obsoletes: pulseaudio-libs < %{version}
%description -n libpulse%{soname}
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package contains the system libraries for clients of pulseaudio
sound server.
%package -n libpulse-mainloop-glib%{soname}
Summary: GLIB 2.0 Main Loop wrapper for PulseAudio
Group: System/Sound Daemons
Provides: pulseaudio-libs-glib2 = %{version}
Obsoletes: pulseaudio-libs-glib2 < %{version}
%description -n libpulse-mainloop-glib%{soname}
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package contains the GLIB Main Loop bindings for the PulseAudio
sound server.
%package -n libpulse-devel
Summary: Development package for the pulseaudio library
Group: Development/Libraries/C and C++
Requires: libpulse%{soname} = %{version}
Requires: libpulse-mainloop-glib%{soname} = %{version}
Requires: pkgconfig
Requires: pkgconfig(glib-2.0)
Provides: pulseaudio-devel = %{version}
Obsoletes: pulseaudio-devel < %{version}
%description -n libpulse-devel
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package contains the files needed to compile programs that use the
pulseaudio library.
%package utils
Summary: PulseAudio utilities
Group: System/Sound Daemons
Requires: pulseaudio-daemon
Requires: libpulse%{soname} = %{version}
Requires: libpulse-mainloop-glib%{soname} = %{version}
%description utils
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package provides utilies for making use of the PulseAudio sound
server.
%package gdm-hooks
Summary: PulseAudio GDM integration
Group: Productivity/Multimedia/Other
#avoid cycle
#!BuildIgnore: gdm
Requires: %{name} = %{version}
Requires: gdm >= 2.22
Supplements: (pulseaudio and gdm)
#for the gdm user
Requires(pre): gdm
%description gdm-hooks
pulseaudio is a networked sound server for Linux and other Unix like
operating systems and Microsoft Windows. It is intended to be an
improved drop-in replacement for the Enlightened Sound Daemon (ESOUND).
This package contains GDM integration hooks for the PulseAudio sound server.
%package bash-completion
Summary: PulseAudio Bash completion
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: bash-completion
Supplements: (pulseaudio and bash-completion)
%description bash-completion
Optional dependency offering bash completion for various PulseAudio utilities
%package zsh-completion
Summary: PulseAudio zsh completion
Group: System/Shells
Requires: %{name}-utils = %{version}
Requires: zsh
Supplements: (pulseaudio and zsh)
%description zsh-completion
Optional dependency offering zsh completion for various PulseAudio utilities
%package -n system-user-pulse
Summary: System user for PulseAudio
Group: System/Base
Requires(pre): group(audio)
BuildArch: noarch
%sysusers_requires
%description -n system-user-pulse
System user for PulseAudio
%lang_package
%prep
%setup -q -T -b0
%patch0 -p1
%patch1 -p1
%patch5 -p1
# workaround for Leap 15.x
%if 0%{?suse_version} < 1550
%patch6 -p1
%endif
%patch7 -p1
%build
%meson \
--auto-features=auto \
-Dhal-compat=false \
-Dgsettings=enabled \
-Dgstreamer=enabled \
-Ddoxygen=false \
-Dsystem_user=pulse \
-Dsystem_group=pulse \
-Daccess_group=pulse-access \
-Drunning-from-build-tree=false \
-Dpulsedsp-location='%{_prefix}/\$LIB/pulseaudio' \
-Dudevrulesdir="%{_udevrulesdir}" \
-Dsystemduserunitdir="%{_userunitdir}" \
-Db_pie=true \
%{nil}
%meson_build
%sysusers_generate_pre %{SOURCE10} pulseaudio system-user-pulse.conf
%install
%meson_install
rm -rf \
"%{buildroot}%{_libdir}"/*.la \
"%{buildroot}%{_libdir}/pulseaudio/modules"/*.la \
"%{buildroot}%{_libdir}/pulseaudio"/*.la
# configure --disable-static had no effect; delete manually.
rm -rf "%{buildroot}%{_libdir}"/*.a
# system-wide service (optional)
install -D -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/%{name}.service
mkdir -p %{buildroot}%{_sbindir}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
# some HW may get undetected without this (check pulseaudio 6.0RC1 announce)
ln -s default.conf %{buildroot}%{_datadir}/pulseaudio/alsa-mixer/profile-sets/extra-hdmi.conf
# remove xwayland.sessions.d files. Do we have such directory?
rm %{buildroot}%{_sysconfdir}/xdg/Xwayland-session.d/00-pulseaudio-x11
install %{SOURCE2} %{buildroot}%{_bindir}
chmod 755 %{buildroot}%{_bindir}/setup-pulseaudio
install -d %{buildroot}%{_fillupdir}
install -m 0644 %{SOURCE3} %{buildroot}%{_fillupdir}
mkdir -p %{buildroot}%{_sysconfdir}/profile.d
touch %{buildroot}%{_sysconfdir}/profile.d/pulseaudio.sh
touch %{buildroot}%{_sysconfdir}/profile.d/pulseaudio.csh
mkdir -p %{buildroot}%{_prefix}/lib/tmpfiles.d
install -m 644 %{SOURCE7} %{buildroot}%{_prefix}/lib/tmpfiles.d/pulseaudio.conf
install -m 644 %{SOURCE8} %{buildroot}%{_prefix}/lib/tmpfiles.d/pulseaudio-gdm-hooks.conf
mkdir -p %{buildroot}%{_prefix}/share/factory/var/lib/gdm/.pulse
install -m 644 %{SOURCE1} %{buildroot}%{_prefix}/share/factory/var/lib/gdm/.pulse/default.pa
# create .d conf dirs (since 8.0)
mkdir -p %{buildroot}%{_sysconfdir}/pulse/client.conf.d
install -m 0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/pulse/client.conf.d/50-system.conf
mkdir -p %{buildroot}%{_sysconfdir}/pulse/daemon.conf.d
# create .d startup dirs (since 15.0)
mkdir -p %{buildroot}%{_sysconfdir}/pulse/default.pa.d
mkdir -p %{buildroot}%{_sysconfdir}/pulse/system.pa.d
# Install disable_flat_volumes.conf
install -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/pulse/daemon.conf.d/60-disable_flat_volumes.conf
# user
install -Dm0644 %{SOURCE10} %{buildroot}%{_sysusersdir}/system-user-pulse.conf
# move dbus-1 system.d file to /usr
install -Dm0644 %{buildroot}%{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf %{buildroot}%{_datadir}/dbus-1/system.d/pulseaudio-system.conf
rm -rf %{buildroot}%{_sysconfdir}/dbus-1
%find_lang %{name}
%pre -n system-user-pulse -f pulseaudio.pre
%post
/sbin/ldconfig
%tmpfiles_create pulseaudio.conf
if [ ! -f /etc/systemd/user/sockets.target.wants/%{name}.socket ]; then
echo "Switching PulseAudio activation using systemd user socket."
echo "Please log out from all sessions once to make it effective."
fi
%systemd_user_post pulseaudio.socket
# FIXME: workaround to make sure the user socket symlink creation (bsc#1083473)
if [ ! -f /etc/systemd/user/sockets.target.wants/%{name}.socket ]; then
# below should work once when preset is defined properly:
# /usr/bin/systemctl --no-reload --global preset pulseaudio.socket
mkdir -p /etc/systemd/user/sockets.target.wants
ln -s %{_userunitdir}/%{name}.socket /etc/systemd/user/sockets.target.wants/%{name}.socket
fi
# Update the /etc/profile.d/pulseaudio.* files
setup-pulseaudio --auto > /dev/null
%preun
%systemd_user_preun pulseaudio.socket
%postun
/sbin/ldconfig
%systemd_user_postun pulseaudio.socket
%post -n libpulse%{soname} -p /sbin/ldconfig
%postun -n libpulse%{soname} -p /sbin/ldconfig
%post -n libpulse-mainloop-glib%{soname} -p /sbin/ldconfig
%postun -n libpulse-mainloop-glib%{soname} -p /sbin/ldconfig
%pre system-wide
%service_add_pre pulseaudio.service
exit 0
%post system-wide
%service_add_post pulseaudio.service
exit 0
%preun system-wide
%service_del_preun pulseaudio.service
exit 0
%postun system-wide
%service_del_postun pulseaudio.service
exit 0
%post setup
%{fillup_only -an sound}
%post gdm-hooks
%tmpfiles_create pulseaudio-gdm-hooks.conf
%files
%doc README
%license LICENSE GPL LGPL
%{_bindir}/pulseaudio
%{_bindir}/qpaeq
%dir %{_datadir}/pulseaudio
%{_datadir}/pulseaudio/alsa-mixer
%dir %{_libdir}/pulseaudio
%{_libdir}/pulseaudio/libpulsecore-%{drvver}.so
%dir %{_libdir}/pulseaudio/
%dir %{_libdir}/pulseaudio/modules/
%{_libdir}/pulseaudio/modules/libalsa-util.so
%{_libdir}/pulseaudio/modules/libcli.so
%{_libdir}/pulseaudio/modules/liboss-util.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
%{_libdir}/pulseaudio/modules/libwebrtc-util.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-allow-passthrough.so
%{_libdir}/pulseaudio/modules/module-augment-properties.so
%{_libdir}/pulseaudio/modules/module-card-restore.so
%{_libdir}/pulseaudio/modules/module-cli.so
%{_libdir}/pulseaudio/modules/module-cli-protocol-tcp.so
%{_libdir}/pulseaudio/modules/module-cli-protocol-unix.so
%{_libdir}/pulseaudio/modules/module-combine.so
%{_libdir}/pulseaudio/modules/module-combine-sink.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-detect.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-equalizer-sink.so
%{_libdir}/pulseaudio/modules/module-filter-apply.so
%{_libdir}/pulseaudio/modules/module-filter-heuristics.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-oss.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-remap-sink.so
%{_libdir}/pulseaudio/modules/module-rescue-streams.so
%{_libdir}/pulseaudio/modules/module-role-cork.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.so
%{_libdir}/pulseaudio/modules/module-sine-source.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-systemd-login.so
%{_libdir}/pulseaudio/modules/module-tunnel-sink.so
%{_libdir}/pulseaudio/modules/module-tunnel-sink-new.so
%{_libdir}/pulseaudio/modules/module-tunnel-source.so
%{_libdir}/pulseaudio/modules/module-tunnel-source-new.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-remap-source.so
%{_libdir}/pulseaudio/modules/module-role-ducking.so
%{_udevrulesdir}/90-pulseaudio.rules
%{_mandir}/man1/pulseaudio.1*
%{_mandir}/man5/default.pa.5*
%{_mandir}/man5/pulse-client.conf.5*
%{_mandir}/man5/pulse-daemon.conf.5*
%{_mandir}/man5/pulse-cli-syntax.5*
%dir %{_sysconfdir}/pulse/
%dir %{_sysconfdir}/pulse/daemon.conf.d
%dir %{_sysconfdir}/pulse/default.pa.d
%dir %{_sysconfdir}/pulse/system.pa.d
%config %{_sysconfdir}/pulse/client.conf.d/50-system.conf
%config(noreplace) %{_sysconfdir}/pulse/daemon.conf.d/60-disable_flat_volumes.conf
%config(noreplace) %{_sysconfdir}/pulse/daemon.conf
%config(noreplace) %{_sysconfdir}/pulse/default.pa
%config(noreplace) %{_sysconfdir}/pulse/system.pa
%{_datadir}/dbus-1/system.d/pulseaudio-system.conf
# init
%dir %{_userunitdir}
%{_userunitdir}/%{name}.service
%{_userunitdir}/%{name}.socket
%{_prefix}/lib/tmpfiles.d/pulseaudio.conf
%ghost %dir %{_localstatedir}/lib/pulseaudio
# xwayland integration
%{_userunitdir}/pulseaudio-x11.service
%files setup
%{_bindir}/setup-pulseaudio
%{_fillupdir}/sysconfig.sound-pulseaudio
# created by setup-pulseaudio script
%ghost %{_sysconfdir}/profile.d/pulseaudio.sh
%ghost %{_sysconfdir}/profile.d/pulseaudio.csh
%files gdm-hooks
%attr(0750, gdm, gdm) %ghost %dir %{_localstatedir}/lib/gdm
%attr(0700, gdm, gdm) %ghost %dir %{_localstatedir}/lib/gdm/.pulse
%attr(0600, gdm, gdm) %ghost %{_localstatedir}/lib/gdm/.pulse/default.pa
%dir %{_prefix}/share/factory/var
%dir %{_prefix}/share/factory/var/lib
%dir %{_prefix}/share/factory/var/lib/gdm
%dir %{_prefix}/share/factory/var/lib/gdm/.pulse
%{_prefix}/share/factory/var/lib/gdm/.pulse/default.pa
%{_prefix}/lib/tmpfiles.d/pulseaudio-gdm-hooks.conf
%files -n libpulse%{soname}
%license LICENSE GPL LGPL
%dir %{_sysconfdir}/pulse/
%dir %{_sysconfdir}/pulse/client.conf.d
%config(noreplace) %{_sysconfdir}/pulse/client.conf
%{_libdir}/libpulse.so.%{soname}
%{_libdir}/libpulse.so.%{soname}.*
%{_libdir}/libpulse-simple.so.*
%dir %{_libdir}/pulseaudio
%{_libdir}/pulseaudio/libpulsecommon-%{drvver}.so
%files -n libpulse-devel
%{_includedir}/pulse/
%{_libdir}/libpulse.so
%{_libdir}/libpulse-mainloop-glib.so
%{_libdir}/libpulse-simple.so
%{_libdir}/pkgconfig/libpulse*.pc
%dir %{_libdir}/cmake
%dir %{_libdir}/cmake/PulseAudio
%{_libdir}/cmake/PulseAudio/PulseAudio*.cmake
%{_datadir}/vala
%files -n libpulse-mainloop-glib%{soname}
%{_libdir}/libpulse-mainloop-glib.so.%{soname}
%{_libdir}/libpulse-mainloop-glib.so.%{soname}.*
%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml
%files module-bluetooth
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_libdir}/pulseaudio/modules/module-bluetooth-policy.so
%{_libdir}/pulseaudio/modules/module-bluetooth-discover.so
%{_libdir}/pulseaudio/modules/libbluez5-util.so
%{_libdir}/pulseaudio/modules/module-bluez5-device.so
%{_libdir}/pulseaudio/modules/module-bluez5-discover.so
%files module-gsettings
%dir %{_libexecdir}/pulse
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_libdir}/pulseaudio/modules/module-gsettings.so
%{_libexecdir}/pulse/gsettings-helper
%dir %{_datadir}/GConf
%dir %{_datadir}/GConf/gsettings
%{_datadir}/GConf/gsettings/pulseaudio.convert
%files module-lirc
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_libdir}/pulseaudio/modules/module-lirc.so
%files module-jack
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_libdir}/pulseaudio/modules/module-jack-sink.so
%{_libdir}/pulseaudio/modules/module-jack-source.so
%{_libdir}/pulseaudio/modules/module-jackdbus-detect.so
%files module-x11
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_sysconfdir}/xdg/autostart/pulseaudio.desktop
%{_bindir}/start-pulseaudio-x11
%{_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
%{_mandir}/man1/start-pulseaudio-x11.1*
%files module-zeroconf
%dir %{_libdir}/pulseaudio
%dir %{_libdir}/pulseaudio/modules
%{_libdir}/pulseaudio/modules/libavahi-wrap.so
%{_libdir}/pulseaudio/modules/libraop.so
%{_libdir}/pulseaudio/modules/module-raop-discover.so
%{_libdir}/pulseaudio/modules/module-raop-sink.so
%{_libdir}/pulseaudio/modules/module-zeroconf-discover.so
%{_libdir}/pulseaudio/modules/module-zeroconf-publish.so
%files utils
%{_bindir}/pa-info
%{_bindir}/pacat
%{_bindir}/pacmd
%{_bindir}/pactl
%{_bindir}/paplay
%{_bindir}/parec
%{_bindir}/pamon
%{_bindir}/parecord
%{_bindir}/pax11publish
%{_bindir}/padsp
%{_bindir}/pasuspender
%dir %{_libdir}/pulseaudio
%{_libdir}/pulseaudio/libpulsedsp.so
%{_mandir}/man1/pacat.1*
%{_mandir}/man1/pacmd.1*
%{_mandir}/man1/pactl.1*
%{_mandir}/man1/paplay.1*
%{_mandir}/man1/pasuspender.1*
%{_mandir}/man1/padsp.1*
%{_mandir}/man1/pax11publish.1*
%{_mandir}/man1/pamon.1%{ext_man}
%{_mandir}/man1/parec.1%{ext_man}
%{_mandir}/man1/parecord.1%{ext_man}
%files lang -f %{name}.lang
%files system-wide
%{_sbindir}/rc%{name}
%{_unitdir}/%{name}.service
%files bash-completion
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_bashcompletionsdir}/pulseaudio
%{_bashcompletionsdir}/pacat
%{_bashcompletionsdir}/pacmd
%{_bashcompletionsdir}/pactl
%{_bashcompletionsdir}/padsp
%{_bashcompletionsdir}/paplay
%{_bashcompletionsdir}/parec
%{_bashcompletionsdir}/parecord
%{_bashcompletionsdir}/pasuspender
%files zsh-completion
%dir %{_datarootdir}/zsh
%dir %{_datarootdir}/zsh/site-functions/
%{_datarootdir}/zsh/site-functions/_pulseaudio
%files -n system-user-pulse
%{_sysusersdir}/system-user-pulse.conf
%changelog

1
pulseaudio.tmpfiles Normal file
View File

@ -0,0 +1 @@
d /var/lib/pulseaudio 0755 - - -

12
qpaeq-shebang.patch Normal file
View File

@ -0,0 +1,12 @@
---
src/utils/qpaeq | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/utils/qpaeq
+++ b/src/utils/qpaeq
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
# qpaeq is a equalizer interface for pulseaudio's equalizer sinks
# Copyright (C) 2009 Jason Newton <nevion@gmail.com
#

467
setup-pulseaudio Normal file
View File

@ -0,0 +1,467 @@
#!/bin/sh
LIST_OF_OSS_APPS="aumix sox"
show_help() {
echo "setup-pulseaudio [ --enable | --disable | --auto | --status ]"
echo ""
echo "Modifies configuration files of some applications for PulseAudio"
echo " --enable Enables PulseAudio"
echo " --disable Disables PulseAudio"
echo " --auto Automatically enables/disables PulseAudio based on configuration"
echo " --status Shows activation state (disabled or enabled) for PulseAudio"
echo ""
echo "You need to be root for this command to succeed"
echo "You may need to re-login for changes to take effect"
exit 1
}
check_root() {
id=`id -u`
if [ "x$id" = "x0" ]; then
true
else
echo "You need to be root in order to enable/disable pulseaudio"
false
fi
}
PROFNAME=/etc/profile.d/pulseaudio.sh
CPROFNAME=/etc/profile.d/pulseaudio.csh
pulse_client_conf=/etc/pulse/client.conf.d/50-system.conf
MPLAYER_CONF=/etc/mplayer/mplayer.conf
set_variable () {
if test -f $PROFNAME &&
grep -q "export $1"= $PROFNAME; then
sed -i -e "s|export $1=.*|export $1=$2|g" $PROFNAME
else
echo "export $1=$2" >> $PROFNAME
fi
if test -f $CPROFNAME &&
grep -q "setenv $1 " $CPROFNAME; then
sed -i -e "s|setenv $1 .*|setenv $1 $2|g" $CPROFNAME
else
echo "setenv $1 $2" >> $CPROFNAME
fi
}
delete_variable () {
if test -f $PROFNAME &&
grep -q "export $1"= $PROFNAME; then
sed -i -e "/export $1=.*/d" $PROFNAME
fi
if test -f $CPROFNAME &&
grep -q "setenv $1 " $CPROFNAME; then
sed -i -e "/setenv $1 .*/d" $CPROFNAME
fi
}
setup_gconf_vendor() {
if [ -x /usr/bin/gconftool-2 ]; then
/usr/bin/gconftool-2 --direct --config-source \
xml:readwrite:/etc/gconf/gconf.xml.vendor \
"$@"
fi
}
has_user_pulseaudio() {
test -f /etc/systemd/user/sockets.target.wants/pulseaudio.socket && return 0
test -f /etc/systemd/user/sockets.target.wants/pipewire-pulse.socket && return 0
return 1
}
pulseaudio_bin_name() {
if [ -x /usr/bin/pulseaudio ]; then
echo "pulseaudio"
else
echo "pipewire-pulse"
fi
}
enable_phonon() {
echo "Enabling PulseAudio for Phonon..."
delete_variable PHONON_PULSEAUDIO_DISABLE
}
enable_kmix() {
echo "Enabling PulseAudio for Kmix..."
delete_variable KMIX_PULSEAUDIO_DISABLE
}
enable_alsa() {
echo "Enabling PulseAudio for ALSA..."
if [ -f /etc/alsa/conf.d/99-pulseaudio-default.conf ]; then
return 0
fi
if [ -f /etc/alsa/conf.d/99-pulseaudio-default.conf.example ]; then
ln -s 99-pulseaudio-default.conf.example /etc/alsa/conf.d/99-pulseaudio-default.conf
delete_variable ALSA_CONFIG_PATH
elif [ -f /usr/share/alsa/conf.d/99-pulseaudio-default.conf.example ]; then
ln -s /usr/share/alsa/conf.d/99-pulseaudio-default.conf.example /etc/alsa/conf.d/99-pulseaudio-default.conf
delete_variable ALSA_CONFIG_PATH
elif [ -f /etc/alsa-pulse.conf ]; then
set_variable ALSA_CONFIG_PATH /etc/alsa-pulse.conf
else
echo "Please install alsa-plugins-pulse package"
delete_variable ALSA_CONFIG_PATH
fi
}
enable_libao() {
echo "Enabling PulseAudio for libao..."
if test -f /etc/libao.conf; then
if grep -q "default_driver=pulse" /etc/libao.conf; then
echo "Default driver is pulse already in /etc/libao.conf"
else
echo "default_driver=pulse" >> /etc/libao.conf
fi
else
echo "default_driver=pulse" >> /etc/libao.conf
fi
}
enable_mplayer() {
echo "Enabling PulseAudio for mplayer..."
if test -f $MPLAYER_CONF; then
if grep -q '^ao *= *pulse' $MPLAYER_CONF; then
:
elif grep -q '^ao *=' $MPLAYER_CONF; then
sed -i -e 's/^ao *= *\(.*\)$/ao=pulse,\1/g' $MPLAYER_CONF
else
echo "ao=pulse" >> $MPLAYER_CONF
fi
fi
# FIXME: mplayerplug-in uses $HOME/.mplayer/mplayerplug-in.conf
}
enable_speechd() {
echo "Enabling PulseAudio for speech dispatcher..."
if test -f /etc/speech-dispatcher/speechd.conf; then
if grep -q 'AudioOutputMethod' /etc/speech-dispatcher/speechd.conf; then
sed -i -e "s|^.*AudioOutputMethod .*|AudioOutputMethod \"pulse\"|g" /etc/speech-dispatcher/speechd.conf
else
echo "AudioOutputMethod \"pulse\"" >> /etc/speech-dispatcher/speechd.conf
fi
fi
}
enable_openal() {
# nothing to do here. openal-soft is patched to prefer pulse but
# it won't autostart the daemon.
return 0
}
enable_oss() {
echo "Enabling PulseAudio for OSS..."
for app in $LIST_OF_OSS_APPS; do
if grep -q "alias $app='padsp $app'" $PROFNAME; then
echo "Application $app already setup for PulseAudio"
else
echo "alias $app='padsp $app'" >> $PROFNAME
fi
done
}
enable_sdl() {
echo "Enabling PulseAudio for SDL..."
# We don't need the audio driver override for SDL; SDL prefers already
# pulseaudio as default (bsc#1189778)
delete_variable SDL_AUDIODRIVER
# Alternatively, we may set "pulseaudio" explicitly, which should be
# applicable both for SDL-1.2 and SDL-2
# set_variable SDL_AUDIODRIVER pulseaudio
}
enable_timidity() {
echo "Enabling PulseAudio for Timidity..."
# Use esound output for timidity
if grep -q "alias timidity='timidity -Oe'" $PROFNAME; then
echo "Timidity already setup for using PulseAudio"
else
echo "alias timidity='timidity -Oe'" >> $PROFNAME
fi
}
enable_xine() {
#echo "Enabling PulseAudio for Xine..."
# FIXME: xine uses $HOME/.xine/config
return 0
}
enable_festival() {
test -f /etc/festival.scm || return 0
echo "Enabling PulseAudio for Festival..."
cat << EOF >> /etc/festival.scm
;;;; Use pulseaudio to output sound
(Parameter.set 'Audio_Command "paplay -n festival \$FILE")
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Required_Format 'snd)
EOF
}
enable_sox() {
echo "Enabling PulseAudio for SoX..."
set_variable AUDIODRIVER pulseaudio
}
enable_gstreamer() {
# set autoaudiosink/src, which should pick up PA
echo "Setting auto sink/src for gstreamer"
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/audiosink autoaudiosink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/musicaudiosink autoaudiosink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/chataudiosink autoaudiosink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/audiosrc autoaudiosrc
}
enable_qemu () {
echo "Enabling PulseAudio for QEMU/KVM"
set_variable QEMU_AUDIO_DRV pa
}
enable_autospawn() {
has_user_pulseaudio && return
test -x /usr/bin/pulseaudio || return
echo "Enabling PulseAudio autospawn..."
if grep -q ^autospawn $pulse_client_conf >/dev/null 2>&1; then
sed -i -e "s|^autospawn.*|autospawn = yes|g" $pulse_client_conf
else
echo "autospawn = yes" >> $pulse_client_conf
fi
}
enable_systemd() {
has_user_pulseaudio || return
echo "Enabling systemd user socket..."
s=$(pulseaudio_bin_name)
systemctl --global unmask $s.socket
systemctl --global unmask $s.service
}
disable_alsa() {
echo "Disabling PulseAudio for ALSA..."
delete_variable ALSA_CONFIG_PATH
rm -f /etc/alsa/conf.d/99-pulseaudio-default.conf
}
disable_phonon() {
echo "Disabling PulseAudio for Phonon..."
set_variable PHONON_PULSEAUDIO_DISABLE 1
}
disable_kmix() {
echo "Disabling PulseAudio for Kmix..."
set_variable KMIX_PULSEAUDIO_DISABLE 1
}
disable_libao() {
if test -f /etc/libao.conf; then
echo "Disabling PulseAudio for libao..."
sed -i -e "/default_driver=pulse/d" /etc/libao.conf
fi
}
disable_mplayer() {
if test -f $MPLAYER_CONF; then
echo "Disabling PulseAudio for mplayer..."
sed -i -e 's/^ao *= *pulse,*/ao=/g' \
-e 's/^ao *= *$/ao=alsa/g' $MPLAYER_CONF
fi
}
disable_speechd() {
echo "Disabling PulseAudio for speech dispatcher..."
if test -f /etc/speech-dispatcher/speechd.conf; then
if grep -q 'AudioOutputMethod' /etc/speech-dispatcher/speechd.conf; then
sed -i -e "s|^.*AudioOutputMethod .*|#AudioOutputMethod \"pulse\"|g" /etc/speech-dispatcher/speechd.conf
fi
fi
}
disable_openal() {
# nothing to do here. openal-soft is patched to prefer pulse but
# it won't autostart the daemon.
return 0
}
disable_oss() {
for app in $LIST_OF_OSS_APPS; do
sed -i -e "/alias $app='padsp $app'/d" $PROFNAME
done
}
disable_sdl() {
echo "Disabling PulseAudio for SDL..."
delete_variable SDL_AUDIODRIVER
}
disable_timidity() {
echo "Disabling PulseAudio for Timidity..."
sed -i -e "/alias timidity='timidity -Oe'/d" $PROFNAME
}
disable_xine() {
#echo "Disabling PulseAudio for Xine..."
# FIXME: xine uses $HOME/.xine/config
return 0
}
disable_festival() {
test -f /etc/festival.scm || return 0
echo "Disabling PulseAudio for Festival..."
/usr/bin/sed --in-place /";;;; Use pulseaudio to output sound"/d /etc/festival.scm
/usr/bin/sed --in-place /"(Parameter.set 'Audio_Command \"paplay -n festival \$FILE\")"/d /etc/festival.scm
/usr/bin/sed --in-place /"(Parameter.set 'Audio_Method 'Audio_Command)"/d /etc/festival.scm
/usr/bin/sed --in-place /"(Parameter.set 'Audio_Required_Format 'snd)"/d /etc/festival.scm
}
disable_sox() {
echo "Disabling PulseAudio for SoX..."
set_variable AUDIODRIVER alsa
}
disable_gstreamer() {
echo "Setting alsasink/src for gstreamer"
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/audiosink alsasink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/musicaudiosink alsasink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/chataudiosink alsasink
setup_gconf_vendor -s -t str \
/system/gstreamer/0.10/default/audiosrc alsasrc
}
disable_qemu () {
echo "Clearing QEMU/KVM audio setup"
delete_variable QEMU_AUDIO_DRV
}
disable_autospawn() {
has_user_pulseaudio && return
test -x /usr/bin/pulseaudio || return
echo "Disabling PulseAudio autospawn..."
if grep -q ^autospawn $pulse_client_conf >/dev/null 2>&1; then
sed -i -e "s|^autospawn.*|autospawn = no|g" $pulse_client_conf
else
echo "autospawn = no" >> $pulse_client_conf
fi
# kill leftover PA processes
killall pulseaudio > /dev/null 2>&1
}
disable_systemd() {
has_user_pulseaudio || return
echo "Disabling systemd user socket..."
s=$(pulseaudio_bin_name)
systemctl --global mask $s.socket
systemctl --global mask $s.service
# kill leftover PA processes
killall $s > /dev/null 2>&1
}
enable_all() {
enable_alsa
enable_libao
enable_mplayer
enable_openal
enable_oss
enable_sdl
enable_timidity
enable_xine
enable_festival
enable_phonon
enable_kmix
enable_speechd
enable_sox
enable_gstreamer
enable_qemu
enable_autospawn
enable_systemd
}
disable_all() {
disable_alsa
disable_libao
disable_mplayer
disable_openal
disable_oss
disable_sdl
disable_timidity
disable_xine
disable_festival
disable_phonon
disable_kmix
disable_speechd
disable_sox
disable_gstreamer
disable_qemu
disable_autospawn
disable_systemd
}
case $1 in
--enable)
check_root || exit 1
ENABLE=1
enable_all
;;
--disable)
check_root || exit 1
ENABLE=0
disable_all
;;
--auto)
check_root || exit 1
if [ -f /etc/sysconfig/sound ]; then
. /etc/sysconfig/sound
fi
if [ "x$PULSEAUDIO_ENABLE" = "xyes" ]; then
enable_all
elif [ "x$PULSEAUDIO_ENABLE" = "xcustom" ]; then
echo "Custom configuration detected, doing nothing."
else
disable_all
fi
exit 0
;;
--status)
if [ -f /etc/sysconfig/sound ]; then
. /etc/sysconfig/sound
fi
if [ "x$PULSEAUDIO_ENABLE" = "xyes" ]; then
echo "enabled"
elif [ "x$PULSEAUDIO_ENABLE" = "xcustom" ]; then
echo "custom configured"
else
echo "disabled"
fi
exit 0
;;
*)
show_help
;;
esac
# Now, update /etc/sysconfig/sound with the PA status
if grep -q PULSEAUDIO_ENABLE /etc/sysconfig/sound; then
if [ "x$ENABLE" = "x1" ]; then
sed -i -e "s|PULSEAUDIO_ENABLE=\"no\"|PULSEAUDIO_ENABLE=\"yes\"|g" /etc/sysconfig/sound
else
sed -i -e "s|PULSEAUDIO_ENABLE=\"yes\"|PULSEAUDIO_ENABLE=\"no\"|g" /etc/sysconfig/sound
fi
else
if [ "x$ENABLE" = "x1" ]; then
echo "PULSEAUDIO_ENABLE=\"yes\"" >> /etc/sysconfig/sound
else
echo "PULSEAUDIO_ENABLE=\"no\"" >> /etc/sysconfig/sound
fi
fi
exit 0

View File

@ -0,0 +1,15 @@
---
src/pulsecore/socket-client.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/pulsecore/socket-client.c
+++ b/src/pulsecore/socket-client.c
@@ -250,7 +250,7 @@ static int sockaddr_prepare(pa_socket_cl
c->local = pa_socket_address_is_local(sa);
if ((c->fd = pa_socket_cloexec(sa->sa_family, SOCK_STREAM, 0)) < 0) {
- pa_log("socket(): %s", pa_cstrerror(errno));
+ /*pa_log("socket(): %s", pa_cstrerror(errno));*/
return -1;
}

View File

@ -0,0 +1,21 @@
## Path: Hardware/Soundcard/PulseAudio
## Description: PulseAudio configuration
## Type: list(yes,no,custom)
#
# Enable or disable PulseAudio system. Can be set to "custom" to not have
# scripts automatically change sound-related configuration for PulseAudio.
#
PULSEAUDIO_ENABLE="yes"
## Path: Hardware/Soundcard/PulseAudio/SystemWide
## Description: System Wide PulseAudio
## Type: list(yes,no)
#
# Allows you to configure that you have system wide PulseAudio daemon. Such is
# setup is not recommended. To make it work, you would need
# pulseaudio-systemwide package and enable pulseaudio systemd service. If you
# are not sure whether you want this, you don't. So unless you know what you
# are doing, keep this set to "no".
#
PULSEAUDIO_SYSTEM="no"

4
system-user-pulse.conf Normal file
View File

@ -0,0 +1,4 @@
#Type Name ID GECOS Home directory Shell
g pulse-access - - - -
u pulse - "PulseAudio daemon" /var/lib/pulseaudio -
m pulse audio - - -