add packaging
authorAnas Nashif <anas.nashif@intel.com>
Sat, 10 Nov 2012 19:55:35 +0000 (11:55 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Thu, 11 Apr 2013 11:50:31 +0000 (04:50 -0700)
packaging/0001-disabled-start.patch [new file with mode: 0644]
packaging/0002-dsuppress-socket-error.patch [new file with mode: 0644]
packaging/0003-wrong-memset.patch [new file with mode: 0644]
packaging/baselibs.conf [new file with mode: 0644]
packaging/default.pa-for-gdm [new file with mode: 0644]
packaging/pulseaudio.spec
packaging/setup-pulseaudio [new file with mode: 0644]
packaging/sysconfig.sound-pulseaudio [new file with mode: 0644]

diff --git a/packaging/0001-disabled-start.patch b/packaging/0001-disabled-start.patch
new file mode 100644 (file)
index 0000000..71ad79e
--- /dev/null
@@ -0,0 +1,43 @@
+From: Anas Nashif <anas.nashif@intel.com>
+Date: Sat, 10 Nov 2012 11:20:46 -0800
+Subject: disabled start
+
+---
+ src/daemon/start-pulseaudio-kde.in |    6 ++++++
+ src/daemon/start-pulseaudio-x11.in |    6 ++++++
+ 2 files changed, 12 insertions(+), 0 deletions(-)
+
+diff --git a/src/daemon/start-pulseaudio-kde.in b/src/daemon/start-pulseaudio-kde.in
+index c319e7d..e83fdea 100755
+--- a/src/daemon/start-pulseaudio-kde.in
++++ b/src/daemon/start-pulseaudio-kde.in
+@@ -19,6 +19,12 @@
+ set -e
++. /etc/sysconfig/sound
++
++if [ x"$PULSEAUDIO_ENABLE" = x"no" ] ; then
++    exit 1
++fi
++
+ [ -z "$PULSE_SERVER" ]
+ @PA_BINARY@ --start "$@"
+diff --git a/src/daemon/start-pulseaudio-x11.in b/src/daemon/start-pulseaudio-x11.in
+index 391a6d3..401828d 100755
+--- a/src/daemon/start-pulseaudio-x11.in
++++ b/src/daemon/start-pulseaudio-x11.in
+@@ -19,6 +19,12 @@
+ set -e
++. /etc/sysconfig/sound
++
++if [ x"$PULSEAUDIO_ENABLE" = x"no" ] ; then
++    exit 1
++fi
++
+ @PA_BINARY@ --start "$@"
+ if [ x"$DISPLAY" != x ] ; then
diff --git a/packaging/0002-dsuppress-socket-error.patch b/packaging/0002-dsuppress-socket-error.patch
new file mode 100644 (file)
index 0000000..042aeb6
--- /dev/null
@@ -0,0 +1,21 @@
+From: Anas Nashif <anas.nashif@intel.com>
+Date: Sat, 10 Nov 2012 11:21:15 -0800
+Subject: dsuppress socket error
+
+---
+ src/pulsecore/socket-client.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/pulsecore/socket-client.c b/src/pulsecore/socket-client.c
+index 23d5d88..051cf68 100644
+--- a/src/pulsecore/socket-client.c
++++ b/src/pulsecore/socket-client.c
+@@ -253,7 +253,7 @@ static int sockaddr_prepare(pa_socket_client *c, const struct sockaddr *sa, size
+     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;
+     }
diff --git a/packaging/0003-wrong-memset.patch b/packaging/0003-wrong-memset.patch
new file mode 100644 (file)
index 0000000..a691837
--- /dev/null
@@ -0,0 +1,35 @@
+From: Anas Nashif <anas.nashif@intel.com>
+Date: Sat, 10 Nov 2012 11:21:51 -0800
+Subject: wrong memset
+
+---
+ src/modules/echo-cancel/adrian-aec.c |    2 +-
+ src/modules/rtp/rtp.c                |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/modules/echo-cancel/adrian-aec.c b/src/modules/echo-cancel/adrian-aec.c
+index 1476ee4..9928424 100644
+--- a/src/modules/echo-cancel/adrian-aec.c
++++ b/src/modules/echo-cancel/adrian-aec.c
+@@ -163,7 +163,7 @@ static void AEC_leaky(AEC *a)
+     } else if (1 == a->hangover) {
+       --(a->hangover);
+       // My Leaky NLMS is to erase vector w when hangover expires
+-      memset(a->w, 0, sizeof(a->w));
++      memset(a->w, 0, sizeof(REAL));
+     }
+   }
+ }
+diff --git a/src/modules/rtp/rtp.c b/src/modules/rtp/rtp.c
+index 178717c..5ba32c6 100644
+--- a/src/modules/rtp/rtp.c
++++ b/src/modules/rtp/rtp.c
+@@ -286,7 +286,7 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, struct
+     if (!found_tstamp) {
+         pa_log_warn("Couldn't find SCM_TIMESTAMP data in auxiliary recvmsg() data!");
+-        memset(tstamp, 0, sizeof(tstamp));
++        memset(tstamp, 0, sizeof(struct timeval));
+     }
+     return 0;
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..9ef4d05
--- /dev/null
@@ -0,0 +1,4 @@
+libpulse
+  obsoletes "pulseaudio-libs-<targettype> <= <version>"
+  provides "pulseaudio-libs-<targettype> = <version>"
+libpulse-mainloop-glib
diff --git a/packaging/default.pa-for-gdm b/packaging/default.pa-for-gdm
new file mode 100644 (file)
index 0000000..fb8c5e5
--- /dev/null
@@ -0,0 +1,12 @@
+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-rescue-streams
+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
+
index 8108a46..693e2eb 100644 (file)
-%define pulseversion 2.1
-
-Name:       pulseaudio
-Summary:    Improved Linux sound server
-Version:    2.1
-Release:    0
-Group:      Multimedia/PulseAudio
-License:    LGPLv2+
-URL:        http://pulseaudio.org
-Source0:    http://127.0.0.1/pulseaudio-2.1.tar.gz
-Requires:   udev
-Requires(post): /sbin/ldconfig
-Requires(postun): /sbin/ldconfig
-Requires: pulseaudio-config
-BuildRequires:  pkgconfig(speexdsp)
-BuildRequires:  pkgconfig(sndfile)
+Name:           pulseaudio
+Version:        2.1
+Release:        0
+%define drvver  2.1
+%define soname  0
+Summary:        A Networked Sound Server
+License:        GPL-2.0+ ; LGPL-2.1+
+Group:          System/Sound Daemons
+Url:            http://pulseaudio.org
+Source:         http://www.freedesktop.org/software/pulseaudio/releases/%{name}-%{version}.tar.xz
+Source1:        default.pa-for-gdm
+Source2:        setup-pulseaudio
+Source3:        sysconfig.sound-pulseaudio
+Source99:       baselibs.conf
 BuildRequires:  pkgconfig(alsa)
-BuildRequires:  pkgconfig(glib-2.0)
-BuildRequires:  pkgconfig(gconf-2.0)
-BuildRequires:  pkgconfig(bluez)
-BuildRequires:  pkgconfig(dbus-1)
-BuildRequires:  pkgconfig(xi)
-BuildRequires:  pkgconfig(libudev)
-BuildRequires:  pkgconfig(vconf)
-BuildRequires:  libatomic_ops-devel
-BuildRequires:  pkgconfig(openssl)
-BuildRequires:  json-c-devel
-BuildRequires:  m4
-BuildRequires:  libtool-ltdl-devel
-BuildRequires:  libtool
-BuildRequires:  intltool
+BuildRequires:  bluez-devel
 BuildRequires:  fdupes
-
+BuildRequires:  gdbm-devel
+BuildRequires:  intltool
+#BuildRequires:  jack-devel
+#BuildRequires:  libavahi-devel
+BuildRequires:  libopenssl-devel
+#BuildRequires:  libsamplerate-devel
+BuildRequires:  libsndfile-devel
+#our libtdb-devel does not have a .pc file
+#BuildRequires:  libtdb-devel
+BuildRequires:  libtool
+BuildRequires:  libudev-devel >= 143
+BuildRequires:  orc
+BuildRequires:  speex-devel
+#BuildRequires:  tcpd-devel
+#BuildRequires:  translation-update-upstream
+BuildRequires:  update-desktop-files
+#BuildRequires:  xorg-x11-devel
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xi)
+BuildRequires:  pkgconfig(x11-xcb)
+BuildRequires:  pkgconfig(xcb) >= 1.6
+BuildRequires:  pkgconfig(ice)
+BuildRequires:  pkgconfig(sm)
+BuildRequires:  pkgconfig(xtst)
+BuildRequires:  pkgconfig(dbus-1)
+#BuildRequires:  pkgconfig(avahi-client)
+BuildRequires:  libcap-devel
+BuildRequires:  orc
+# Only needed because we don't (and won't) support building xz tarballs by default... See bnc#697467
+BuildRequires:  xz
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(json) >= 0.9
+Requires(pre):         pwdutils
+#Requires:       rtkit
+Requires:       udev >= 146
+BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %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 libs
-Summary:    PulseAudio client libraries
-Group:      Multimedia/PulseAudio
-Requires:   %{name} = %{version}-%{release}
-
-%description libs
-Client libraries used by applications that access a PulseAudio sound server
-via PulseAudio's native interface.
-
+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 libs-devel
-Summary:    PulseAudio client development headers and libraries
-Group:      Development/Libraries
-Requires:   %{name} = %{version}-%{release}
+%package esound-compat
+Summary:        ESOUND compatibility for PulseAudio
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
 
-%description libs-devel
-Headers and libraries for developing applications that access a PulseAudio
-sound server via PulseAudio's native interface
+%description esound-compat
+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).
 
-
-%package utils
-Summary:    Command line tools for the PulseAudio sound server
-Group:      Multimedia/PulseAudio
-Requires:   %{name} = %{version}-%{release}
-
-%description utils
-These tools provide command line access to various features of the
-PulseAudio sound server. Included tools are:
-pabrowse - Browse available PulseAudio servers on the local network.
-paplay - Playback a WAV file via a PulseAudio sink.
-pacat - Cat raw audio data to a PulseAudio sink.
-parec - Cat raw audio data from a PulseAudio source.
-pacmd - Connect to PulseAudio's built-in command line control interface.
-pactl - Send a control command to a PulseAudio server.
-padsp - /dev/dsp wrapper to transparently support OSS applications.
-pax11publish - Store/retrieve PulseAudio default server/sink/source
-settings in the X11 root window.
+This package provides the compatibility layer for drop-in replacement
+of ESOUND.
 
 
-%package module-bluetooth
-Summary:    Bluetooth module for PulseAudio sound server
-Group:      Multimedia/PulseAudio
-Requires:   %{name} = %{version}-%{release}
+%package module-x11
+Summary:        X11 module for PulseAudio
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
+Requires:       %{name}-utils = %{version}
 
-%description module-bluetooth
-This module enables PulseAudio to work with bluetooth devices, like headset
-or audio gatewa
+%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).
 
-%package module-devel
-Summary:        Headers and libraries for PulseAudio module development
-License:        LGPLv2+
-Group:          Development/Libraries
-Requires:       %{name}-libs-devel = %{version}-%{release}
+This package provides the components needed to automatically start
+the PulseAudio sound server on X11 startup.
 
-%package config
-Summary: Default configuration for PulseAudio.
-Group: System Environment/Configuration
+%package module-zeroconf
+Summary:        Zeroconf module for PulseAudio
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
 
-%description config
-Default configuration for PulseAudio.
+%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).
 
-%description module-devel
-Headers and libraries for developing pulseaudio modules
+This package provides zeroconf network support for the PulseAudio sound server
 
-#%package module-zeroconf
-#Summary: PA module-zeroconf
-#Group:   Multimedia/PulseAudio
-#
-#%description module-zeroconf
-#PA module-zeroconf.
+%package module-jack
+Summary:        JACK support for the PulseAudio sound server
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
 
-%package module-raop
-Summary: PA module-raop
-Group:   Multimedia/PulseAudio
+%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).
 
-%description module-raop
-PA module-raop.
+This package includes support for Jack-based applications.
 
-%package module-filter
-Summary: PA module-filter
-Group:   Multimedia/PulseAudio
+%package module-bluetooth
+Summary:        Bluetooth support for the PulseAudio sound server
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
+Requires:       bluez >= 4.34
 
-%description module-filter
-PA module-filter.
+%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).
 
-%package module-combine-sink
-Summary: PA module-combine-sink
-Group:   Multimedia/PulseAudio
+Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server.
 
-%description module-combine-sink
-PA module-combine-sink.
+%package module-gconf
+Summary:        GCONF module for PulseAudio
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
 
-%package module-augment-properties
-Summary: PA module-augment-properties
-Group:   Multimedia/PulseAudio
+%description module-gconf
+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).
 
-%description module-augment-properties
-PA module-augment-properties.
+This package provides gconf storage of PulseAudio sound server settings.
 
-%package module-dbus-protocol
-Summary: PA module-dbus-protocol
-Group:   Multimedia/PulseAudio
+%package -n libpulse
+Summary:        Client interface to PulseAudio
+Group:          System/Libraries
 
-%description module-dbus-protocol
-PA module-dbus-protocol.
+%description -n libpulse
+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).
 
-%package module-null-source
-Summary: PA module-null-source
-Group:   Multimedia/PulseAudio
+This package contains the system libraries for clients of pulseaudio
+sound server.
 
-%description module-null-source
-PA module-null-source.
+%package -n libpulse-mainloop-glib
+Summary:        GLIB  2.0 Main Loop wrapper for PulseAudio
+Group:          System/Sound Daemons
 
-%package module-switch-on-connect
-Summary: PA module-swich-on-connect
-Group:   Multimedia/PulseAudio
+%description -n libpulse-mainloop-glib
+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).
 
-%description module-switch-on-connect
-PA module-swich-on-connect.
+This package contains the GLIB Main Loop bindings for the PulseAudio
+sound server.
 
-%package localization
-Summary:    PA localization files.
-Group:      Multimedia/PulseAudio
-Requires:   %{name} = %{version}-%{release}
+%package -n libpulse-devel
+Summary:        Development package for the pulseaudio library
+Group:          Development/Libraries/C and C++
+Requires:       libpulse = %{version}
+Requires:       libpulse-mainloop-glib = %{version}
+Requires:       pkgconfig
+Requires:       pkgconfig(glib-2.0)
 
-%description localization
-PA localization files.
+%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).
 
-%package vala-bindings
-Summary:    PA Vala bindings.
-Group:      Multimedia/PulseAudio
-Requires:   %{name} = %{version}-%{release}
+This package contains the files needed to compile programs that use the
+pulseaudio library.
 
-%description vala-bindings
-PA Vala bindings.
+%package utils
+Summary:        PulseAudio utilities
+Group:          System/Sound Daemons
+Requires:       %{name} = %{version}
+Requires:       libpulse-mainloop-glib = %{version}
+Requires:       libpulse = %{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
+Requires:       %{name} = %{version}
+Requires:       gdm >= 2.22
+#for the gdm user
+Requires(pre):  gdm
+#avoid cycle
+#!BuildIgnore: 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.
 
 %prep
-%setup -q
-echo "%{version}" > .tarball-version
-./bootstrap.sh
+%setup -q -T -b0
 
 %build
-CPUS="`cat /proc/cpuinfo  | grep ^processor | wc -l`"
-JOBS="-j$(($CPUS + 1))"
-
-unset LD_AS_NEEDED
-export LDFLAGS+="-Wl,--no-as-needed"
-%configure --disable-static --enable-alsa --disable-ipv6 --disable-oss-output --disable-oss-wrapper --enable-bluez --disable-x11 --disable-hal --disable-hal-compat --disable-lirc --disable-avahi --disable-jack --without-fftw --disable-xen --enable-spolicy
-make $JOBS
+%autogen
+export CFLAGS="%{optflags} -fno-strict-aliasing"
+# libpulse and libpulsecommon need each other - no way with as-needed
+export LD_AS_NEEDED=0
+%configure \
+        --disable-static \
+        --disable-rpath \
+        --with-system-user=pulse \
+        --with-system-group=pulse \
+        --with-access-group=pulse-access \
+        --disable-hal
+make %{?_smp_mflags} V=1
 
 %install
-rm -rf %{buildroot}
 %make_install
+#tizen_update_desktop_file pulseaudio
+#tizen_update_desktop_file pulseaudio-kde
+%find_lang %{name}
+install %{SOURCE2} %{buildroot}%{_bindir}
+chmod 755 %{buildroot}%{_bindir}/setup-pulseaudio
+#install -d %{buildroot}%{_localstatedir}/adm/fillup-templates
+#install -m 0644 %{SOURCE3} %{buildroot}%{_localstatedir}/adm/fillup-templates
+mkdir -p %{buildroot}%{_sysconfdir}/profile.d
+touch %{buildroot}%{_sysconfdir}/profile.d/pulseaudio.sh
+touch %{buildroot}%{_sysconfdir}/profile.d/pulseaudio.csh
+mkdir -p %{buildroot}%{_localstatedir}/lib/gdm/.pulse
+cp $RPM_SOURCE_DIR/default.pa-for-gdm %{buildroot}%{_localstatedir}/lib/gdm/.pulse/default.pa
+ln -s esdcompat %{buildroot}%{_bindir}/esd
+rm -rf %{buildroot}/etc/xdg/autostart/pulseaudio-kde.desktop
+
+%clean
+rm -rf %{buildroot}
 
-install -D -m0755 pulseaudio.sh.in %{buildroot}%{_sysconfdir}/rc.d/init.d/pulseaudio.sh
-
-install -d  %{buildroot}/%{_libdir}/systemd/system
-install -m 644 pulseaudio.service %{buildroot}/%{_libdir}/systemd/system/pulseaudio.service
-mkdir -p  %{buildroot}/%{_libdir}/systemd/system/multi-user.target.wants
-ln -s  ../pulseaudio.service  %{buildroot}/%{_libdir}/systemd/system/multi-user.target.wants/pulseaudio.service
-
-rm -rf  %{buildroot}/etc/xdg/autostart/pulseaudio-kde.desktop
-rm -rf  %{buildroot}/usr/bin/start-pulseaudio-kde
-rm -rf %{buildroot}/%{_libdir}/pulse-%{version}/modules/module-device-manager.so
-
-mkdir -p %{buildroot}/%{_includedir}/pulsemodule/pulse
-mkdir -p %{buildroot}/%{_includedir}/pulsemodule/pulsecore
+%pre
+groupadd -r pulse &>/dev/null || :
+useradd -r -c 'PulseAudio daemon' \
+    -s /sbin/nologin -d /var/lib/pulseaudio -g pulse -G audio pulse &>/dev/null || :
+groupadd -r pulse-access &>/dev/null || :
 
-cp %{buildroot}/%{_includedir}/pulse/*.h %{buildroot}/%{_includedir}/pulsemodule/pulse
-mv %{buildroot}/%{_includedir}/pulsecore %{buildroot}/%{_includedir}/pulsemodule/
+%post   -n libpulse -p /sbin/ldconfig
 
-%find_lang pulseaudio
-fdupes  %{buildroot}/%{_datadir}
-fdupes  %{buildroot}/%{_includedir}
+%postun -n libpulse -p /sbin/ldconfig
 
-# get rid of *.la files
-rm -f %{buildroot}/%{_libdir}/*.la
-rm -f %{buildroot}/%{_libdir}/pulseaudio/*.la
+%post   -n libpulse-mainloop-glib -p /sbin/ldconfig
 
-# put the default configuration file in place
-install -m 644 src/default.pa %{buildroot}/%{_sysconfdir}/pulse
+%postun -n libpulse-mainloop-glib -p /sbin/ldconfig
 
 %post
 /sbin/ldconfig
-ln -s  /etc/rc.d/init.d/pulseaudio.sh /etc/rc.d/rc3.d/S20pulseaudio
-ln -s  /etc/rc.d/init.d/pulseaudio.sh /etc/rc.d/rc4.d/S20pulseaudio
-
-%postun
-/sbin/ldconfig
-rm -f %{_sysconfdir}/rc.d/rc3.d/S20pulseaudio
-rm -f %{_sysconfdir}/rc.d/rc4.d/S20pulseaudio
-
-%post libs -p /sbin/ldconfig
-
-%postun libs -p /sbin/ldconfig
-
-
-%post module-bluetooth -p /sbin/ldconfig
-%postun module-bluetooth -p /sbin/ldconfig
+# Update the /etc/profile.d/pulseaudio.* files
+setup-pulseaudio --auto > /dev/null
 
-
-%docs_package
+%postun -p /sbin/ldconfig
 
 %lang_package
 
-
 %files
-%defattr(-,root,root,-)
-%doc LICENSE GPL LGPL
-%dir %{_sysconfdir}/pulse/
-%{_bindir}/esdcompat
+%defattr(-,root,root)
+%doc README LICENSE GPL LGPL
 %{_bindir}/pulseaudio
-%dir %{_libexecdir}/pulse
-%{_libexecdir}/pulse/*
-%{_libdir}/libpulsecore-%{version}.so
-%{_libdir}/libpulse-mainloop-glib.so.*
+%{_bindir}/setup-pulseaudio
+#%{_bindir}/qpaeq
+%dir %{_datadir}/pulseaudio
+%{_datadir}/pulseaudio/alsa-mixer
+%{_libdir}/libpulsecore-%{drvver}.so
+%dir %{_libdir}/pulseaudio
+%{_libdir}/pulseaudio/libpulsedsp.so
+%dir %{_libdir}/pulse-%{drvver}/
+%dir %{_libdir}/pulse-%{drvver}/modules/
+%{_libdir}/pulse-%{drvver}/modules/libalsa-util.so
+%{_libdir}/pulse-%{drvver}/modules/libcli.so
+%{_libdir}/pulse-%{drvver}/modules/liboss-util.so
+%{_libdir}/pulse-%{drvver}/modules/libprotocol-cli.so
+%{_libdir}/pulse-%{drvver}/modules/libprotocol-esound.so
+%{_libdir}/pulse-%{drvver}/modules/libprotocol-http.so
+%{_libdir}/pulse-%{drvver}/modules/libprotocol-native.so
+%{_libdir}/pulse-%{drvver}/modules/libprotocol-simple.so
+%{_libdir}/pulse-%{drvver}/modules/librtp.so
+%{_libdir}/pulse-%{drvver}/modules/module-alsa-card.so
+%{_libdir}/pulse-%{drvver}/modules/module-alsa-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-alsa-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-always-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-augment-properties.so
+%{_libdir}/pulse-%{drvver}/modules/module-card-restore.so
+%{_libdir}/pulse-%{drvver}/modules/module-cli.so
+%{_libdir}/pulse-%{drvver}/modules/module-cli-protocol-tcp.so
+%{_libdir}/pulse-%{drvver}/modules/module-cli-protocol-unix.so
+%{_libdir}/pulse-%{drvver}/modules/module-combine.so
+%{_libdir}/pulse-%{drvver}/modules/module-combine-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-console-kit.so
+%{_libdir}/pulse-%{drvver}/modules/module-dbus-protocol.so
+%{_libdir}/pulse-%{drvver}/modules/module-default-device-restore.so
+%{_libdir}/pulse-%{drvver}/modules/module-detect.so
+%{_libdir}/pulse-%{drvver}/modules/module-device-manager.so
+%{_libdir}/pulse-%{drvver}/modules/module-device-restore.so
+%{_libdir}/pulse-%{drvver}/modules/module-echo-cancel.so
+%{_libdir}/pulse-%{drvver}/modules/module-esound-compat-spawnfd.so
+%{_libdir}/pulse-%{drvver}/modules/module-esound-compat-spawnpid.so
+%{_libdir}/pulse-%{drvver}/modules/module-esound-protocol-tcp.so
+%{_libdir}/pulse-%{drvver}/modules/module-esound-protocol-unix.so
+%{_libdir}/pulse-%{drvver}/modules/module-esound-sink.so
+#%{_libdir}/pulse-%{drvver}/modules/module-equalizer-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-filter-apply.so
+%{_libdir}/pulse-%{drvver}/modules/module-filter-heuristics.so
+%{_libdir}/pulse-%{drvver}/modules/module-hal-detect.so
+%{_libdir}/pulse-%{drvver}/modules/module-http-protocol-tcp.so
+%{_libdir}/pulse-%{drvver}/modules/module-http-protocol-unix.so
+%{_libdir}/pulse-%{drvver}/modules/module-intended-roles.so
+%{_libdir}/pulse-%{drvver}/modules/module-ladspa-sink.so
+%{_libdir}/pulse-%{drvver}/modules/libraop.so
+%{_libdir}/pulse-%{drvver}/modules/module-raop-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-loopback.so
+%{_libdir}/pulse-%{drvver}/modules/module-match.so
+%{_libdir}/pulse-%{drvver}/modules/module-mmkbd-evdev.so
+%{_libdir}/pulse-%{drvver}/modules/module-native-protocol-fd.so
+%{_libdir}/pulse-%{drvver}/modules/module-native-protocol-tcp.so
+%{_libdir}/pulse-%{drvver}/modules/module-native-protocol-unix.so
+%{_libdir}/pulse-%{drvver}/modules/module-null-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-null-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-oss.so
+%{_libdir}/pulse-%{drvver}/modules/module-pipe-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-pipe-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-position-event-sounds.so
+%{_libdir}/pulse-%{drvver}/modules/module-remap-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-rescue-streams.so
+%{_libdir}/pulse-%{drvver}/modules/module-role-cork.so
+%{_libdir}/pulse-%{drvver}/modules/module-rtp-recv.so
+%{_libdir}/pulse-%{drvver}/modules/module-rtp-send.so
+%{_libdir}/pulse-%{drvver}/modules/module-rygel-media-server.so
+%{_libdir}/pulse-%{drvver}/modules/module-simple-protocol-tcp.so
+%{_libdir}/pulse-%{drvver}/modules/module-simple-protocol-unix.so
+%{_libdir}/pulse-%{drvver}/modules/module-sine.so
+%{_libdir}/pulse-%{drvver}/modules/module-sine-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-stream-restore.so
+%{_libdir}/pulse-%{drvver}/modules/module-suspend-on-idle.so
+%{_libdir}/pulse-%{drvver}/modules/module-switch-on-connect.so
+%{_libdir}/pulse-%{drvver}/modules/module-switch-on-port-available.so
+%{_libdir}/pulse-%{drvver}/modules/module-systemd-login.so
+%{_libdir}/pulse-%{drvver}/modules/module-tunnel-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-tunnel-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-udev-detect.so
+%{_libdir}/pulse-%{drvver}/modules/module-virtual-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-virtual-source.so
+%{_libdir}/pulse-%{drvver}/modules/module-virtual-surround-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-volume-restore.so
 /lib/udev/rules.d/90-pulseaudio.rules
-%{_datadir}/pulseaudio/alsa-mixer/paths/*
-%{_datadir}/pulseaudio/alsa-mixer/profile-sets/*
-%{_bindir}/pamon
-/etc/dbus-1/system.d/pulseaudio-system.conf
-# cmake stuff
-%{_libdir}/cmake/PulseAudio/PulseAudioConfig.cmake
-%{_libdir}/cmake/PulseAudio/PulseAudioConfigVersion.cmake
-# list all modules
-%{_libdir}/pulse-%{version}/modules/libalsa-util.so
-%{_libdir}/pulse-%{version}/modules/libcli.so
-%{_libdir}/pulse-%{version}/modules/libprotocol-cli.so
-%{_libdir}/pulse-%{version}/modules/libprotocol-http.so
-%{_libdir}/pulse-%{version}/modules/libprotocol-native.so
-%{_libdir}/pulse-%{version}/modules/libprotocol-simple.so
-%{_libdir}/pulse-%{version}/modules/librtp.so
-%{_libdir}/pulse-%{version}/modules/module-alsa-sink.so
-%{_libdir}/pulse-%{version}/modules/module-alsa-source.so
-%{_libdir}/pulse-%{version}/modules/module-always-sink.so
-%{_libdir}/pulse-%{version}/modules/module-console-kit.so
-%{_libdir}/pulse-%{version}/modules/module-device-restore.so
-%{_libdir}/pulse-%{version}/modules/module-stream-restore.so
-%{_libdir}/pulse-%{version}/modules/module-cli-protocol-tcp.so
-%{_libdir}/pulse-%{version}/modules/module-cli-protocol-unix.so
-%{_libdir}/pulse-%{version}/modules/module-cli.so
-%{_libdir}/pulse-%{version}/modules/module-combine.so
-%{_libdir}/pulse-%{version}/modules/module-default-device-restore.so
-%{_libdir}/pulse-%{version}/modules/module-detect.so
-%{_libdir}/pulse-%{version}/modules/module-esound-sink.so
-%{_libdir}/pulse-%{version}/modules/module-http-protocol-tcp.so
-%{_libdir}/pulse-%{version}/modules/module-http-protocol-unix.so
-%{_libdir}/pulse-%{version}/modules/module-intended-roles.so
-%{_libdir}/pulse-%{version}/modules/module-ladspa-sink.so
-%{_libdir}/pulse-%{version}/modules/module-match.so
-%{_libdir}/pulse-%{version}/modules/module-mmkbd-evdev.so
-%{_libdir}/pulse-%{version}/modules/module-native-protocol-fd.so
-%{_libdir}/pulse-%{version}/modules/module-native-protocol-tcp.so
-%{_libdir}/pulse-%{version}/modules/module-native-protocol-unix.so
-%{_libdir}/pulse-%{version}/modules/module-null-sink.so
-%{_libdir}/pulse-%{version}/modules/module-pipe-sink.so
-%{_libdir}/pulse-%{version}/modules/module-pipe-source.so
-%{_libdir}/pulse-%{version}/modules/module-position-event-sounds.so
-%{_libdir}/pulse-%{version}/modules/module-remap-sink.so
-%{_libdir}/pulse-%{version}/modules/module-rescue-streams.so
-%{_libdir}/pulse-%{version}/modules/module-rtp-recv.so
-%{_libdir}/pulse-%{version}/modules/module-rtp-send.so
-%{_libdir}/pulse-%{version}/modules/module-simple-protocol-tcp.so
-%{_libdir}/pulse-%{version}/modules/module-simple-protocol-unix.so
-%{_libdir}/pulse-%{version}/modules/module-sine.so
-%{_libdir}/pulse-%{version}/modules/module-tunnel-sink.so
-%{_libdir}/pulse-%{version}/modules/module-tunnel-source.so
-%{_libdir}/pulse-%{version}/modules/module-suspend-on-idle.so
-%{_libdir}/pulse-%{version}/modules/module-volume-restore.so
-%{_libdir}/pulse-%{version}/modules/module-alsa-card.so
-%{_libdir}/pulse-%{version}/modules/module-card-restore.so
-%{_libdir}/pulse-%{version}/modules/module-sine-source.so
-%{_libdir}/pulse-%{version}/modules/module-loopback.so
-%{_libdir}/pulse-%{version}/modules/module-rygel-media-server.so
-%{_libdir}/pulse-%{version}/modules/module-echo-cancel.so
-%{_libdir}/pulse-%{version}/modules/module-virtual-sink.so
-%{_libdir}/pulse-%{version}/modules/module-virtual-source.so
-%{_libdir}/pulse-%{version}/modules/libprotocol-esound.so
-%{_libdir}/pulse-%{version}/modules/module-esound-compat-spawnfd.so
-%{_libdir}/pulse-%{version}/modules/module-esound-compat-spawnpid.so
-%{_libdir}/pulse-%{version}/modules/module-esound-protocol-tcp.so
-%{_libdir}/pulse-%{version}/modules/module-esound-protocol-unix.so
-%{_libdir}/pulse-%{version}/modules/module-gconf.so
-%{_libdir}/pulse-%{version}/modules/module-udev-detect.so
-%{_libdir}/pulse-%{version}/modules/module-role-cork.so
-%{_libdir}/pulse-%{version}/modules/module-switch-on-port-available.so
-%{_libdir}/pulse-%{version}/modules/module-virtual-surround-sink.so
-%{_libdir}/pulse-%{version}/modules/module-policy.so
-%{_libdir}/systemd/system/pulseaudio.service
-%{_libdir}/systemd/system/multi-user.target.wants/pulseaudio.service
-%{_sysconfdir}/rc.d/init.d/pulseaudio.sh
-
-%files libs
-%defattr(-,root,root,-)
-%{_libdir}/libpulse.so.*
+%dir %{_sysconfdir}/pulse/
+%config(noreplace) %{_sysconfdir}/pulse/daemon.conf
+%config(noreplace) %{_sysconfdir}/pulse/default.pa
+%config(noreplace) %{_sysconfdir}/pulse/system.pa
+%config(noreplace) %{_sysconfdir}/dbus-1/system.d/pulseaudio-system.conf
+# created by setup-pulseaudio script
+%ghost %{_sysconfdir}/profile.d/pulseaudio.sh
+%ghost %{_sysconfdir}/profile.d/pulseaudio.csh
+
+%files esound-compat
+%defattr(-,root,root)
+%{_bindir}/esdcompat
+%{_bindir}/esd
+
+%files gdm-hooks
+%defattr(-,root,root)
+%attr(0750, gdm, gdm) %dir %{_localstatedir}/lib/gdm
+%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.pulse
+%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.pulse/default.pa
+
+%files -n libpulse
+%defattr(-,root,root)
+%doc README LICENSE GPL LGPL
+%dir %{_sysconfdir}/pulse/
+%config(noreplace) %{_sysconfdir}/pulse/client.conf
+%{_libdir}/libpulse.so.%{soname}
+%{_libdir}/libpulse.so.%{soname}.*
 %{_libdir}/libpulse-simple.so.*
-%{_libdir}/pulseaudio/libpulsecommon-*.so
+%dir %{_libdir}/pulseaudio
+%{_libdir}/pulseaudio/libpulsecommon-%{drvver}.so
 
-%files libs-devel
-%defattr(-,root,root,-)
-%{_includedir}/pulse/*
+%files -n libpulse-devel
+%defattr(-,root,root)
+%{_includedir}/pulse/
 %{_libdir}/libpulse.so
-%{_libdir}/libpulse-simple.so
-%{_libdir}/pkgconfig/libpulse-simple.pc
-%{_libdir}/pkgconfig/libpulse.pc
-%{_datadir}/vala/vapi/libpulse.vapi
-%{_libdir}/pkgconfig/libpulse-mainloop-glib.pc
 %{_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
+%defattr(-,root,root)
+%{_libdir}/libpulse-mainloop-glib.so.*
+
+%files module-bluetooth
+%defattr(-,root,root)
+%{_libdir}/pulse-%{drvver}/modules/libbluetooth-ipc.so
+%{_libdir}/pulse-%{drvver}/modules/libbluetooth-sbc.so
+%{_libdir}/pulse-%{drvver}/modules/libbluetooth-util.so
+%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-device.so
+%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-discover.so
+%{_libdir}/pulse-%{drvver}/modules/module-bluetooth-proximity.so
+%attr(0755,root,root) %{_libexecdir}/pulse/proximity-helper
+
+%files module-gconf
+%defattr(-,root,root)
+#%dir %{_libexecdir}/pulse
+#%{_libdir}/pulse-%{drvver}/modules/module-gconf.so
+#%{_libexecdir}/pulse/gconf-helper
+
+
+%files module-x11
+%defattr(-,root,root)
+%{_sysconfdir}/xdg/autostart/pulseaudio.desktop
+%{_bindir}/start-pulseaudio-x11
+%{_bindir}/start-pulseaudio-kde
+%{_libdir}/pulse-%{drvver}/modules/module-x11-bell.so
+%{_libdir}/pulse-%{drvver}/modules/module-x11-cork-request.so
+%{_libdir}/pulse-%{drvver}/modules/module-x11-publish.so
+%{_libdir}/pulse-%{drvver}/modules/module-x11-xsmp.so
+
+%files module-zeroconf
+%defattr(-,root,root)
+#%{_libdir}/pulse-%{drvver}/modules/libavahi-wrap.so
+%{_libdir}/pulse-%{drvver}/modules/libraop.so
+%{_libdir}/pulse-%{drvver}/modules/module-raop-discover.so
+%{_libdir}/pulse-%{drvver}/modules/module-raop-sink.so
+%{_libdir}/pulse-%{drvver}/modules/module-zeroconf-discover.so
+%{_libdir}/pulse-%{drvver}/modules/module-zeroconf-publish.so
 
 %files utils
-%defattr(-,root,root,-)
-%doc %{_mandir}/man1/*
-%doc %{_mandir}/man5/*
+%defattr(-,root,root)
 %{_bindir}/pacat
 %{_bindir}/pacmd
 %{_bindir}/pactl
@@ -358,69 +448,10 @@ rm -f %{_sysconfdir}/rc.d/rc4.d/S20pulseaudio
 %{_bindir}/parec
 %{_bindir}/pamon
 %{_bindir}/parecord
+%{_bindir}/pax11publish
+%{_bindir}/padsp
 %{_bindir}/pasuspender
 
-%files module-bluetooth
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-bluetooth-proximity.so
-%{_libdir}/pulse-%{version}/modules/module-bluetooth-device.so
-%{_libdir}/pulse-%{version}/modules/module-bluetooth-discover.so
-%{_libdir}/pulse-%{version}/modules/libbluetooth-ipc.so
-%{_libdir}/pulse-%{version}/modules/libbluetooth-sbc.so
-%{_libdir}/pulse-%{version}/modules/libbluetooth-util.so
-
-#%files module-zeroconf
-#%defattr(-,root,root,-)
-#%{_libdir}/pulse-%{version}/modules/libavahi-wrap.so
-#%{_libdir}/pulse-%{version}/modules/module-zeroconf*.so
-
-%files module-raop
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/libraop.so
-%{_libdir}/pulse-%{version}/modules/module-raop*.so
-
-%files module-filter
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-filter-*.so
-
-%files module-combine-sink
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-combine-sink.so
-
-%files module-augment-properties
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-augment-properties.so
-
-%files module-dbus-protocol
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-dbus-protocol.so
-
-%files module-null-source
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-null-source.so
-
-%files module-switch-on-connect
-%defattr(-,root,root,-)
-%{_libdir}/pulse-%{version}/modules/module-switch-on-connect.so
-
-%files config
-%defattr(-,root,root,-)
-%{_sysconfdir}/pulse/default.pa
-%{_sysconfdir}/pulse/client.conf
-%{_sysconfdir}/pulse/default.pa
-%{_sysconfdir}/pulse/system.pa
-%{_sysconfdir}/pulse/daemon.conf
-
-%files module-devel
-%defattr(-,root,root)
-%{_includedir}/pulsemodule/pulsecore/*.h
-%{_includedir}/pulsemodule/pulse/*.h
-%{_libdir}/pkgconfig/pulseaudio-module-devel.pc
 
-%files localization
-%defattr(-,root,root,-)
-%{_datadir}/locale/*/LC_MESSAGES/pulseaudio.mo
-
-%files vala-bindings
-%defattr(-,root,root,-)
-%{_datadir}/vala/vapi/*
+%docs_package
+%changelog
diff --git a/packaging/setup-pulseaudio b/packaging/setup-pulseaudio
new file mode 100644 (file)
index 0000000..dc362ab
--- /dev/null
@@ -0,0 +1,400 @@
+#!/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
+
+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
+}
+
+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-pulse.conf ]; then
+       set_variable ALSA_CONFIG_PATH /etc/alsa-pulse.conf
+    else
+       echo "Missing /etc/alsa-pluse.conf; please install alsa-plugins-pulse package"
+    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..."
+    # For SDL, we just add an environment variable, so that apps use the PA audio driver
+    set_variable SDL_AUDIODRIVER pulse
+}
+
+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_autospawn() {
+    echo "Enabling PulseAudio autospawn..."
+    if grep -q ^autospawn /etc/pulse/client.conf; then
+       sed -i -e "s|^autospawn.*|autospawn = yes|g" /etc/pulse/client.conf
+    else
+       echo "autospawn = yes" >> /etc/pulse/client.conf
+    fi
+}
+
+disable_alsa() {
+    echo "Disabling PulseAudio for ALSA..."
+    delete_variable ALSA_CONFIG_PATH
+}
+
+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_autospawn() {
+    echo "Disabling PulseAudio autospawn..."
+    if grep -q ^autospawn /etc/pulse/client.conf; then
+       sed -i -e "s|^autospawn.*|autospawn = no|g" /etc/pulse/client.conf
+    else
+       echo "autospawn = no" >> /etc/pulse/client.conf
+    fi
+    # kill leftover PA processes
+    killall pulseaudio > /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_autospawn
+}
+
+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_autospawn
+}
+
+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
diff --git a/packaging/sysconfig.sound-pulseaudio b/packaging/sysconfig.sound-pulseaudio
new file mode 100644 (file)
index 0000000..4a5a7f3
--- /dev/null
@@ -0,0 +1,9 @@
+
+## 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"