From 44c8358c28753f6dde57d081a96ef3152c4621e6 Mon Sep 17 00:00:00 2001 From: Ray Rashif Date: Sat, 6 Mar 2010 23:12:34 +0800 Subject: [PATCH] [jack] package update and fix task 15102 * Depends on libsamplerate to provide netjack client * Daemon only starts as (dummy) user now * Dummy user is created with daemon to be safe * Healthier daemon defaults --- PKGBUILD | 27 ++++++++++++--------- jack.conf | 13 ++++++++++ jack.conf.d | 42 --------------------------------- jack.install | 29 +++++++++++++++++++++++ jack.rc.d | 39 ------------------------------- rc.jack | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 130 insertions(+), 93 deletions(-) create mode 100644 jack.conf delete mode 100644 jack.conf.d create mode 100644 jack.install delete mode 100644 jack.rc.d create mode 100644 rc.jack diff --git a/PKGBUILD b/PKGBUILD index 0a5489e..9b92c15 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,33 +3,36 @@ # Contributor: Robert Emil Berge pkgname=jack -pkgver=0.116.2 +_pkgname=jack-audio-connection-kit +pkgver=0.118.0 pkgrel=1 pkgdesc="A low-latency audio server" arch=('i686' 'x86_64') license=('GPL2' 'custom:LGPL2') -depends=('libsndfile' 'bash') +depends=('libsamplerate' 'bash') makedepends=('doxygen') -url="http://jackit.sourceforge.net/" -backup=(etc/conf.d/jack-audio-connection-kit) +url="http://jackaudio.org/" +backup=(etc/conf.d/jack) options=('!libtool') provides=("jack-audio-connection-kit=${pkgver}") replaces=('jack-audio-connection-kit') -source=(http://jackaudio.org/downloads/jack-audio-connection-kit-${pkgver}.tar.gz \ - ${pkgname}.rc.d ${pkgname}.conf.d) -md5sums=('9c0ae9880e9b6e081f1a238fe6a28bd5' '15a3ecd76b3186eb0fa9c6d16ffbdfef' \ - '0517b67ef912e2a84b6a15dea2dc2680') +install=jack.install +source=(http://jackaudio.org/downloads/${_pkgname}-${pkgver}.tar.gz + rc.${pkgname} ${pkgname}.conf) build() { - cd ${srcdir}/jack-audio-connection-kit-${pkgver} + cd ${srcdir}/${_pkgname}-${pkgver} ./configure --prefix=/usr --libdir=/usr/lib make || return 1 } package() { - cd ${srcdir}/jack-audio-connection-kit-${pkgver} + cd ${srcdir}/${_pkgname}-${pkgver} make DESTDIR=${pkgdir} install - install -Dm755 ../${pkgname}.rc.d ${pkgdir}/etc/rc.d/${pkgname} - install -Dm644 ../${pkgname}.conf.d ${pkgdir}/etc/conf.d/${pkgname} + install -Dm755 ../rc.${pkgname} ${pkgdir}/etc/rc.d/${pkgname} + install -Dm644 ../${pkgname}.conf ${pkgdir}/etc/conf.d/${pkgname} install -Dm644 COPYING.LGPL ${pkgdir}/usr/share/licenses/${pkgname}/COPYING.LGPL } +md5sums=('d58e29a55f285d54e75134cec8e02a10' + '7d4422087233b8dfca00474596851fdb' + 'f238e9fb8f9e53c1e59ec977d9af1ad2') diff --git a/jack.conf b/jack.conf new file mode 100644 index 0000000..0361ce2 --- /dev/null +++ b/jack.conf @@ -0,0 +1,13 @@ +# JACK server/daemon configuration + +# Uncomment if you are the only one accessing jackd. You must run +# it once before starting the daemon: +#JACK_USER="" +#JACK_HOME="/home/$JACK_USER" +#JACK_PARAMS=$(sed 's:/usr/bin/jackd ::' $JACK_HOME/.jackdrc) + +# Comment out everything below if you uncommented the above: +JACK_PROMISCUOUS_SERVER=1 +JACK_PROMISCUOUS_USER="audio" +JACK_USER="$JACK_PROMISCUOUS_USER" +JACK_PARAMS="-dalsa -dhw:0 -r48000 -p512 -n3" diff --git a/jack.conf.d b/jack.conf.d deleted file mode 100644 index 2ae7ca9..0000000 --- a/jack.conf.d +++ /dev/null @@ -1,42 +0,0 @@ -# Jack Audio Connection Kit options - - -################################################ general server options -# output form `jackd --help` -# extend the switches in the OPTIONS variable -# usage: jackd [ --realtime OR -R [ --realtime-priority OR -P priority ] ] -# [ --no-mlock OR -m ] -# [ --timeout OR -t client-timeout-in-msecs ] -# [ --port-max OR -p maximum-number-of-ports] -# [ --verbose OR -v ] -# [ --silent OR -s ] -# [ --version OR -V ] -# -d driver [ ... driver args ... ] -# driver can be `alsa', `dummy', `oss' or `portaudio' - -SERVER_PARAMS="-s -d alsa" - - -################################################# options passed to the driver -# currently only options for alsa are available - - -# Parameters for driver 'alsa' (all parameters are optional): -# -C, --capture Provide only capture ports. Optionally set device (default: none) -# -P, --playback Provide only playback ports. Optionally set device (default: none) -# -d, --device ALSA device name (default: hw:0) -# -r, --rate Sample rate (default: 48000) -# -p, --period Frames per period (default: 1024) -# -n, --nperiods Number of periods in hardware buffer (default: 2) -# -H, --hwmon Hardware monitoring, if available (default: false) -# -M, --hwmeter Hardware metering, if available (default: false) -# -D, --duplex Provide both capture and playback ports (default: true) -# -s, --softmode Soft-mode, no xrun handling (default: false) -# -m, --monitor Provide monitor ports for the output (default: false) -# -z, --dither Dithering mode (default: n) -# -i, --inchannels Number of capture channels (defaults to hardware max) (default: 0) -# -o, --outchannels Number of playback channels (defaults to hardware max) (default: 0) -# -S, --shorts Try 16-bit samples before 32-bit (default: false) - -DRIVER_PARAMS="-d hw:0 -p 1024" - diff --git a/jack.install b/jack.install new file mode 100644 index 0000000..ebf030c --- /dev/null +++ b/jack.install @@ -0,0 +1,29 @@ +post_install() { + if grep -w "audio" /etc/passwd &> /dev/null; then + sed -i 's/audio//' /etc/conf.d/jack + echo "==> It appears the system already has a user named 'audio'." + echo "==> Please edit /etc/conf.d/jack and change the value of" + echo "==> JACK_PROMISCUOUS_USER." + fi +} + +post_upgrade() { + if grep -w "audio" /etc/passwd &> /dev/null; then + echo "==> It appears the system already has a user named 'audio'" + echo "==> Please edit /etc/conf.d/jack and change the value of" + echo "==> JACK_PROMISCUOUS_USER." + echo + echo "==> You can ignore this if you received this message before" + echo "==> and have already taken the necessary steps to rectify" + echo "==> the problem." + fi +} + +pre_remove() { + . /etc/conf.d/jack + /etc/rc.d/jack stop &> /dev/null + [ $JACK_PROMISCUOUS_SERVER -eq 1 ] && userdel $JACK_PROMISCUOUS_USER &> /dev/null + return 0 +} + +# vim:set ts=2 sw=2 et: diff --git a/jack.rc.d b/jack.rc.d deleted file mode 100644 index 62b0162..0000000 --- a/jack.rc.d +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions - -# source application-specific settings -[ -f /etc/conf.d/jack ] && . /etc/conf.d/jack - -PID=`pidof -o %PPID /usr/bin/jackd` - -case "$1" in - start) - stat_busy "Starting JACK Daemon" - [ -z "$PID" ] && /usr/bin/jackd $SERVER_PARAMS -d $DRIVER_PARAMS &> /dev/null & - if [ ! -z "$PID" -o $? -gt 0 ]; then - stat_fail - else - add_daemon jack - stat_done - fi - ;; - stop) - stat_busy "Stopping JACK Daemon" - [ ! -z "$PID" ] && kill $PID &> /dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon jack - stat_done - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac diff --git a/rc.jack b/rc.jack new file mode 100644 index 0000000..bf82622 --- /dev/null +++ b/rc.jack @@ -0,0 +1,73 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +# source application-specific settings +. /etc/conf.d/jack + +PID=$(pidof -o %PPID \jackd) + +case "$1" in + start) + stat_busy "Starting JACK Daemon" + + [ "$(whoami)" != "root" -o -z "$JACK_USER" ] && stat_die + [ $JACK_PROMISCUOUS_SERVER -ne 1 -a ! -s $JACK_HOME/.jackdrc ] && stat_die + + # create dummy user + if ! grep -w $JACK_USER /etc/passwd &> /dev/null; then + useradd -rlMN \ + -K SYS_UID_MAX=499 \ + -K SYS_GID_MAX=499 \ + -s /bin/bash \ + -G audio,video,network \ + -c $JACK_USER \ + -d / \ + $JACK_USER + fi + + # bail if user is not part of important groups + for i in audio video network; do + groups $JACK_USER | grep -w $i &> /dev/null || stat_die + done + + # run the command + [ -z "$PID" ] && \ + su - $JACK_USER -c "\jackd $JACK_PARAMS &> /dev/null &" + + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + if [ $JACK_PROMISCUOUS_SERVER -eq 1 ]; then + add_daemon jack-promiscuous + stat_done + else + add_daemon jack + stat_done + fi + fi + ;; + stop) + stat_busy "Stopping JACK Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + if ck_daemon jack-promiscuous; then + rm_daemon jack-promiscuous + stat_done + else + rm_daemon jack + stat_done + fi + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac -- 1.7.0