summaryrefslogtreecommitdiffstats
path: root/source/l/pulseaudio
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2016-06-30 20:26:57 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 23:31:18 +0200
commitd31c50870d0bee042ce660e445c9294a59a3a65b (patch)
tree6bfc0de3c95267b401b620c2c67859557dc60f97 /source/l/pulseaudio
parent76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (diff)
downloadcurrent-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.gz
current-d31c50870d0bee042ce660e445c9294a59a3a65b.tar.xz
Slackware 14.2slackware-14.2
Thu Jun 30 20:26:57 UTC 2016 Slackware 14.2 x86_64 stable is released! The long development cycle (the Linux community has lately been living in "interesting times", as they say) is finally behind us, and we're proud to announce the release of Slackware 14.2. The new release brings many updates and modern tools, has switched from udev to eudev (no systemd), and adds well over a hundred new packages to the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
Diffstat (limited to 'source/l/pulseaudio')
-rw-r--r--source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch79
-rw-r--r--source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff27
-rw-r--r--source/l/pulseaudio/0003-no-root-warn.diff14
-rw-r--r--source/l/pulseaudio/020_no-parallel-make.diff22
-rw-r--r--source/l/pulseaudio/030_posix-completion.diff91
-rw-r--r--source/l/pulseaudio/doinst.sh36
-rw-r--r--source/l/pulseaudio/pulseaudio-autostart.patch13
-rwxr-xr-xsource/l/pulseaudio/pulseaudio.SlackBuild145
-rw-r--r--source/l/pulseaudio/rc.pulseaudio48
-rw-r--r--source/l/pulseaudio/slack-desc19
10 files changed, 494 insertions, 0 deletions
diff --git a/source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch b/source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch
new file mode 100644
index 000000000..ea54ae3f5
--- /dev/null
+++ b/source/l/pulseaudio/0001-client-conf-Add-allow-autospawn-for-root.patch
@@ -0,0 +1,79 @@
+From 1cb5647f76dc8cd7bacbce2a64fac9e6c2dc3b16 Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
+Date: Tue, 28 Apr 2015 14:32:43 +0300
+Subject: [PATCH] client-conf: Add allow-autospawn-for-root
+
+Usually autospawning for root is a bad idea, since it can easily
+interfere with other users' PulseAudio instances, but in embedded
+environments where only root exists, autospawning is fine.
+
+Upstream-Status: Submitted [http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/23549]
+
+Signed-off-by: Tanu Kaskinen <tanu.kaskinen at linux.intel.com>
+---
+ man/pulse-client.conf.5.xml.in | 9 +++++++++
+ src/pulse/client-conf.c | 1 +
+ src/pulse/client-conf.h | 1 +
+ src/pulse/client.conf.in | 1 +
+ src/pulse/context.c | 2 +-
+ 5 files changed, 13 insertions(+), 1 deletion(-)
+
+--- ./man/pulse-client.conf.5.xml.in.orig 2016-05-10 07:28:04.000000000 -0500
++++ ./man/pulse-client.conf.5.xml.in 2016-06-22 13:39:30.494696654 -0500
+@@ -82,6 +82,15 @@
+ </option>
+
+ <option>
++ <p><opt>allow-autospawn-for-root=</opt> Allow autospawning also for root.
++ Takes a boolean value, defaults to <opt>no</opt>. If the <opt>autospawn
++ </opt> option is disabled, this option has no effect. Autospawning for
++ root is disabled by default, because running PulseAudio as root will
++ interfere with regular users' PulseAudio instances. This option should be
++ enabled only in environments where there are no regular users at all.</p>
++ </option>
++
++ <option>
+ <p><opt>daemon-binary=</opt> Path to the PulseAudio daemon to
+ run when autospawning. Defaults to a path configured at compile
+ time.</p>
+--- ./src/pulse/client.conf.in.orig 2016-05-03 01:17:39.000000000 -0500
++++ ./src/pulse/client.conf.in 2016-06-22 13:39:30.527696657 -0500
+@@ -23,6 +23,7 @@
+ ; default-dbus-server =
+
+ ; autospawn = yes
++; allow-autospawn-for-root = no
+ ; daemon-binary = @PA_BINARY@
+ ; extra-arguments = --log-target=syslog
+
+--- ./src/pulse/client-conf.c.orig 2016-05-10 07:28:04.000000000 -0500
++++ ./src/pulse/client-conf.c 2016-06-22 13:39:30.505696655 -0500
+@@ -138,6 +138,7 @@
+ { "default-server", pa_config_parse_string, &c->default_server, NULL },
+ { "default-dbus-server", pa_config_parse_string, &c->default_dbus_server, NULL },
+ { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
++ { "allow-autospawn-for-root", pa_config_parse_bool, &c->allow_autospawn_for_root, NULL },
+ { "cookie-file", pa_config_parse_string, &c->cookie_file_from_client_conf, NULL },
+ { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL },
+--- ./src/pulse/context.c.orig 2016-06-01 05:50:54.000000000 -0500
++++ ./src/pulse/context.c 2016-06-22 13:39:30.536696657 -0500
+@@ -1027,7 +1027,7 @@
+ if (!(flags & PA_CONTEXT_NOAUTOSPAWN) && c->conf->autospawn) {
+
+ #ifdef HAVE_GETUID
+- if (getuid() == 0)
++ if (!c->conf->allow_autospawn_for_root && getuid() == 0)
+ pa_log_debug("Not doing autospawn since we are root.");
+ else {
+ c->do_autospawn = true;
+--- ./src/pulse/client-conf.h.orig 2016-06-22 13:39:30.517696656 -0500
++++ ./src/pulse/client-conf.h 2016-06-22 13:40:11.754699631 -0500
+@@ -38,6 +38,7 @@
+ char *cookie_file_from_application;
+ char *cookie_file_from_client_conf;
+ bool autospawn, disable_shm, disable_memfd, auto_connect_localhost, auto_connect_display;
++ bool allow_autospawn_for_root;
+ size_t shm_size;
+ } pa_client_conf;
+
diff --git a/source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff b/source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff
new file mode 100644
index 000000000..15c995836
--- /dev/null
+++ b/source/l/pulseaudio/0002-allow-autospawn-for-root-default.diff
@@ -0,0 +1,27 @@
+--- ./man/pulse-client.conf.5.xml.in.orig 2016-01-06 15:33:09.797022947 -0600
++++ ./man/pulse-client.conf.5.xml.in 2016-01-06 15:35:34.902019857 -0600
+@@ -73,10 +73,7 @@
+ <option>
+ <p><opt>allow-autospawn-for-root=</opt> Allow autospawning also for root.
+ Takes a boolean value, defaults to <opt>no</opt>. If the <opt>autospawn
+- </opt> option is disabled, this option has no effect. Autospawning for
+- root is disabled by default, because running PulseAudio as root will
+- interfere with regular users' PulseAudio instances. This option should be
+- enabled only in environments where there are no regular users at all.</p>
++ </opt> option is disabled, this option has no effect.</p>
+ </option>
+
+ <option>
+--- ./src/pulse/client.conf.in.orig 2016-01-06 15:33:09.800022947 -0600
++++ ./src/pulse/client.conf.in 2016-01-06 15:39:33.502014775 -0600
+@@ -22,8 +22,8 @@
+ ; default-server =
+ ; default-dbus-server =
+
+-; autospawn = yes
+-; allow-autospawn-for-root = no
++autospawn = yes
++allow-autospawn-for-root = yes
+ ; daemon-binary = @PA_BINARY@
+ ; extra-arguments = --log-target=syslog
+
diff --git a/source/l/pulseaudio/0003-no-root-warn.diff b/source/l/pulseaudio/0003-no-root-warn.diff
new file mode 100644
index 000000000..c7d31c414
--- /dev/null
+++ b/source/l/pulseaudio/0003-no-root-warn.diff
@@ -0,0 +1,14 @@
+--- ./src/daemon/main.c.orig 2015-10-30 07:16:48.000000000 -0500
++++ ./src/daemon/main.c 2016-01-07 15:05:42.131126245 -0600
+@@ -647,10 +647,8 @@
+ }
+
+ #ifdef HAVE_GETUID
+- if (getuid() == 0 && !conf->system_instance)
+- pa_log_warn(_("This program is not intended to be run as root (unless --system is specified)."));
+ #ifndef HAVE_DBUS /* A similar, only a notice worthy check was done earlier, if D-Bus is enabled. */
+- else if (getuid() != 0 && conf->system_instance) {
++ if (getuid() != 0 && conf->system_instance) {
+ pa_log(_("Root privileges required."));
+ goto finish;
+ }
diff --git a/source/l/pulseaudio/020_no-parallel-make.diff b/source/l/pulseaudio/020_no-parallel-make.diff
new file mode 100644
index 000000000..6b552e33e
--- /dev/null
+++ b/source/l/pulseaudio/020_no-parallel-make.diff
@@ -0,0 +1,22 @@
+--- src/Makefile.am.orig 2014-02-14 23:45:45.000000000 +1000
++++ src/Makefile.am 2014-10-26 21:59:33.220234317 +1000
+@@ -19,6 +19,8 @@
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ # USA.
+
++.NOTPARALLEL:
++
+ ###################################
+ # Extra directories #
+ ###################################
+--- Makefile.am.orig 2014-01-24 04:57:55.000000000 +1000
++++ Makefile.am 2014-10-26 21:58:47.090622189 +1000
+@@ -15,6 +15,8 @@
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ # USA.
+
++.NOTPARALLEL:
++
+ ACLOCAL_AMFLAGS = -I m4
+
+ EXTRA_DIST = \
diff --git a/source/l/pulseaudio/030_posix-completion.diff b/source/l/pulseaudio/030_posix-completion.diff
new file mode 100644
index 000000000..de1ef055e
--- /dev/null
+++ b/source/l/pulseaudio/030_posix-completion.diff
@@ -0,0 +1,91 @@
+--- shell-completion/bash/pulseaudio.orig 2015-02-13 00:10:35.000000000 +1000
++++ shell-completion/bash/pulseaudio 2015-09-12 11:09:36.948222926 +1000
+@@ -1,39 +1,45 @@
+ #!/bin/bash
+
+ __cards () {
++ (pactl list cards short 2> /dev/null) |\
+ while IFS=$'\t' read idx name _; do
+ printf "%s %s\n" "$idx" "$name"
+- done < <(pactl list cards short 2> /dev/null)
++ done
+ }
+
+ __sinks () {
++ (pactl list sinks short 2> /dev/null) |\
+ while IFS=$'\t' read _ name _ _ _; do
+ printf "%s\n" "$name"
+- done < <(pactl list sinks short 2> /dev/null)
++ done
+ }
+
+ __sinks_idx () {
++ (pactl list sinks short 2> /dev/null) |\
+ while IFS=$'\t' read idx _ _ _ _; do
+ printf "%s\n" "$idx"
+- done < <(pactl list sinks short 2> /dev/null)
++ done
+ }
+
+ __sources () {
++ (pactl list sources short 2> /dev/null) |\
+ while IFS=$'\t' read _ name _ _ _; do
+ printf "%s\n" "$name"
+- done < <(pactl list sources short 2> /dev/null)
++ done
+ }
+
+ __sink_inputs () {
++ (pactl list sink-inputs short 2> /dev/null) |\
+ while IFS=$'\t' read idx _ _ _ _; do
+ printf "%s\n" "$idx"
+- done < <(pactl list sink-inputs short 2> /dev/null)
++ done
+ }
+
+ __source_outputs () {
++ (pactl list source-outputs short 2> /dev/null) |\
+ while IFS=$'\t' read idx _ _ _ _; do
+ printf "%s\n" "$idx"
+- done < <(pactl list source-outputs short 2> /dev/null)
++ done
+ }
+
+ __ports () {
+@@ -77,28 +83,32 @@
+ }
+
+ __all_modules () {
++ (pulseaudio --dump-modules 2> /dev/null) |\
+ while read name; do
+ name=${name%% *}
+ printf "%s\n" "$name"
+- done < <(pulseaudio --dump-modules 2> /dev/null)
++ done
+ }
+
+ __loaded_modules () {
++ (pactl list modules short 2> /dev/null) |\
+ while IFS=$'\t' read idx name _; do
+ printf "%s %s\n" "$idx" "$name"
+- done < <(pactl list modules short 2> /dev/null)
++ done
+ }
+
+ __resample_methods () {
++ (pulseaudio --dump-resample-methods 2> /dev/null) |\
+ while read name; do
+ printf "%s\n" "$name"
+- done < <(pulseaudio --dump-resample-methods 2> /dev/null)
++ done
+ }
+
+ _pacat_file_formats () {
++ (pacat --list-file-formats 2> /dev/null) |\
+ while IFS=$'\t' read name _; do
+ printf "%s\n" "$name"
+- done < <(pacat --list-file-formats 2> /dev/null)
++ done
+ }
+
+ in_array() {
diff --git a/source/l/pulseaudio/doinst.sh b/source/l/pulseaudio/doinst.sh
new file mode 100644
index 000000000..9b27c9f97
--- /dev/null
+++ b/source/l/pulseaudio/doinst.sh
@@ -0,0 +1,36 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname ${NEW})/$(basename ${NEW} .new)"
+ if [ -e ${OLD} ]; then
+ cp -a ${OLD} ${NEW}.incoming
+ cat ${NEW} > ${NEW}.incoming
+ mv ${NEW}.incoming ${NEW}
+ fi
+ config ${NEW}
+}
+
+config etc/pulse/client.conf.new
+config etc/pulse/daemon.conf.new
+config etc/pulse/default.pa.new
+config etc/pulse/system.pa.new
+preserve_perms etc/rc.d/rc.pulseaudio.new
+
+# Make sure the pulse user is in the audio group:
+chroot . /usr/sbin/usermod -a -G audio pulse 1> /dev/null 2> /dev/null
+
+# Make sure the root user is in the audio group:
+chroot . /usr/sbin/usermod -a -G audio root 1> /dev/null 2> /dev/null
+
diff --git a/source/l/pulseaudio/pulseaudio-autostart.patch b/source/l/pulseaudio/pulseaudio-autostart.patch
new file mode 100644
index 000000000..eb44bdbc7
--- /dev/null
+++ b/source/l/pulseaudio/pulseaudio-autostart.patch
@@ -0,0 +1,13 @@
+diff -up pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in
+--- pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in.autostart 2015-02-12 08:10:35.000000000 -0600
++++ pulseaudio-6.0/src/daemon/start-pulseaudio-x11.in 2015-06-22 11:24:13.561614127 -0500
+@@ -17,6 +17,9 @@
+
+ set -e
+
++# probe to test if autospawn works, else resort to starting manually
++@PACTL_BINARY@ info > /dev/null 2>&1 || @PA_BINARY@ --start "$@"
++
+ if [ x"$DISPLAY" != x ] ; then
+
+ @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null
diff --git a/source/l/pulseaudio/pulseaudio.SlackBuild b/source/l/pulseaudio/pulseaudio.SlackBuild
new file mode 100755
index 000000000..b9b28d151
--- /dev/null
+++ b/source/l/pulseaudio/pulseaudio.SlackBuild
@@ -0,0 +1,145 @@
+#!/bin/sh
+
+# Slackware build script for pulseaudio
+
+# Copyright 2015 Christoph Willing Brisbane, Australia
+# Copyright 2016 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PKGNAM=pulseaudio
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+BUILD=${BUILD:-1}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION || exit 1
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/020_no-parallel-make.diff.gz | patch -p0 --verbose || exit 1
+zcat $CWD/030_posix-completion.diff.gz | patch -p0 --verbose || exit 1
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1234710
+zcat $CWD/0001-client-conf-Add-allow-autospawn-for-root.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/0002-allow-autospawn-for-root-default.diff.gz | patch -p1 --verbose || exit 1
+
+# Do not log a warning every time root uses PulseAudio:
+zcat $CWD/0003-no-root-warn.diff.gz | patch -p1 --verbose || exit 1
+
+sed -i -e '/@PA_BINARY@/ imkdir -p \$HOME/.config/pulse' src/daemon/start-pulseaudio-x11.in
+echo "X-MATE-Autostart-Phase=Initialization" >> src/daemon/pulseaudio.desktop.in
+
+# If autospawn isn't working, start-pulseaudio-x11 should start it manually:
+zcat $CWD/pulseaudio-autostart.patch.gz | patch -p1 --verbose || exit 1
+
+# Disable "flat volumes" to work more like ALSA's mixer. POLA.
+# Have a google for "flat volumes" for more rationale on us not
+# using the upstream default here.
+sed -i 's/; flat-volumes = yes/flat-volumes = no/g' ./src/daemon/daemon.conf.in
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./bootstrap.sh \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-tcpwrap \
+ --enable-orc \
+ --disable-static \
+ --disable-hal-compat \
+ --disable-bluez4 \
+ --with-system-user=pulse \
+ --with-system-group=pulse \
+ --with-access-group=audio \
+ --with-bash-completion-dir=/usr/share/bash-completion/completions \
+ --build=$ARCH-slackware-linux || exit 1
+
+make $NUMJOBS check || make check || exit 1
+make $NUMJOBS || make || exit 1
+make install-strip DESTDIR=$PKG || exit 1
+
+# Remove .la files:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/lib*.la
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/pulseaudio/lib*.la
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/pulse-*/modules/*.la
+
+# Move config files to .new:
+for f in $( find $PKG/etc/pulse/ -type f ) ; do mv $f $f.new ; done
+
+# Add an init script for system wide mode. You shouldn't use this, but we'll
+# still let you if you really want.
+mkdir -p $PKG/etc/rc.d
+cp $CWD/rc.pulseaudio $PKG/etc/rc.d/rc.pulseaudio.new
+chmod 644 $PKG/etc/rc.d/rc.pulseaudio.new
+chown root:root $PKG/etc/rc.d/rc.pulseaudio.new
+
+# Compress and link manpages:
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+# Install documentation:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ COPYING* *GPL LICENSE README* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/l/pulseaudio/rc.pulseaudio b/source/l/pulseaudio/rc.pulseaudio
new file mode 100644
index 000000000..31cdf4aab
--- /dev/null
+++ b/source/l/pulseaudio/rc.pulseaudio
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Start/stop/restart PulseAudio in system mode.
+# In this mode, a single system instance of PulseAudio will be shared by
+# multiple local users.
+#
+# Please note: this is not generally the best way to use PulseAudio!
+# Normally pulseaudio will start automatically as-needed with an instance
+# per audio user. Unless you really need to use system mode you should leave
+# this script non-executable.
+#
+# For more information, see:
+# http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide
+
+pulse_start() {
+ if [ -x /usr/bin/pulseaudio ]; then
+ echo "Starting system PulseAudio daemon: /usr/bin/pulseaudio --system --disallow-module-loading &"
+ rm -rf /var/lib/pulse
+ # Any errors/warnings will go to the log files:
+ /usr/bin/pulseaudio --system --disallow-module-loading 1> /dev/null 2> /dev/null &
+ fi
+}
+
+pulse_stop() {
+ echo "Stopping PulseAudio: /bin/killall pulseaudio"
+ /bin/killall pulseaudio 2> /dev/null
+}
+
+pulse_restart() {
+ pulse_stop
+ sleep 1
+ pulse_start
+}
+
+case "$1" in
+'start')
+ pulse_start
+ ;;
+'stop')
+ pulse_stop
+ ;;
+'restart')
+ pulse_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
+
diff --git a/source/l/pulseaudio/slack-desc b/source/l/pulseaudio/slack-desc
new file mode 100644
index 000000000..cae1b57b8
--- /dev/null
+++ b/source/l/pulseaudio/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+pulseaudio: pulseaudio (PulseAudio sound server)
+pulseaudio:
+pulseaudio: pulseaudio is a networked low-latency sound server intended to be an
+pulseaudio: improved replacement for the Enlightened Sound Daemon (EsounD).
+pulseaudio:
+pulseaudio: Homepage: http://www.pulseaudio.org
+pulseaudio:
+pulseaudio:
+pulseaudio:
+pulseaudio:
+pulseaudio: