Browse Source

audio/jamulus: Added (real-time jam session client/server).

Signed-off-by: David Spencer <baildon.research@googlemail.com>
pull/53/head
B. Watson 7 years ago
committed by Willy Sudiarto Raharjo
parent
commit
95b63fda6a
No known key found for this signature in database GPG Key ID: 887B8374D7333381
  1. 15
      audio/jamulus/README
  2. 36
      audio/jamulus/SERVER.txt
  3. 3
      audio/jamulus/doinst.sh
  4. 135
      audio/jamulus/jamulus.SlackBuild
  5. 10
      audio/jamulus/jamulus.info
  6. BIN
      audio/jamulus/jamulus.png
  7. 1
      audio/jamulus/setcap.sh
  8. 19
      audio/jamulus/slack-desc

15
audio/jamulus/README

@ -0,0 +1,15 @@
jamulus (real-time jam session client/server)
The Jamulus software enables musicians to perform real-time jam sessions
over the internet. There is one server running the Jamulus server software
which collects the audio data from each Jamulus client, mixes the audio
data and sends the mix back to each client.
The jamulus binary can be run as a client (default) or a server. See
"jamulus --help" and SERVER.txt for details.
This package uses POSIX filesystem capabilities to execute with
elevated privileges (required for realtime audio processing). This
may be considered a security/stability risk. Please read
http://www.slackbuilds.org/caps/ for more information. To disable
capabilities, pass SETCAP=no to the script.

36
audio/jamulus/SERVER.txt

@ -0,0 +1,36 @@
By default, the jamulus binary can function as:
- Client with GUI (default mode, X and jackd must be running)
- Server with GUI (-s option, only X must be running)
- Headless server (-s and -n options, neither X nor jackd required)
Even though the headless mode doesn't require a running X server,
it still requires the qt4 and X11 shared libraries. There's no way to
compile jamulus without these.
If you launch jamulus from the desktop start menu, you'll get the client.
If you want to run a server, you'll have to either run it from the command
line, or create a different launcher/shortcut for jamulus as a server.
If you want to run a headless server that starts at boot time (like
a regular daemon), currently the best way to do this is to call it
from /etc/rc.d/rc.local. There's no "daemon" option, so you'll have to
background it with &, and redirect stdout/stderr somewhere (see also
the -l <logfile> option).
If you *really* want to build a dedicated jamulus server, you can do
so by setting SERVERONLY=yes in the SlackBuild's environment. In this
case, you can ignore the REQUIRES="jack-audio-connection-kit" line in
the .info file.
The resulting jamulus binary will work exactly as the regular jamulus,
except it doesn't make sound nor accept audio input from your instrument.
It'll only be useful as a server (with -s and possibly also -n).
The *only* reason to ever do this is if you really *really* don't want
to install jack-audio-connection-kit for some reason.
For those who want to complain that I shouldn't have listed
jack-audio-connection-kit as required: It *is* required, for the *normal*
use case. Building without JACK support is a very specialized thing,
not useful to the general population of users.

3
audio/jamulus/doinst.sh

@ -0,0 +1,3 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi

135
audio/jamulus/jamulus.SlackBuild

@ -0,0 +1,135 @@
#!/bin/sh
# Slackware build script for jamulus
# Written by B. Watson (yalhcru@gmail.com)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# Possible TODOs:
# - write a man page
# - have slack-desc show whether or not SERVERONLY=yes
PRGNAM=jamulus
VERSION=${VERSION:-3.4.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
# I hate capitalized package names, so:
SRCNAM=Jamulus
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/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
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
set -e
# Check this before doing anything else.
if [ "${SERVERONLY:-no}" = "yes" ]; then
EXTRACONF="CONFIG+=nosound"
elif ! pkg-config --exists jack; then
cat <<EOF
***********************************************************************
$0: jack-audio-connection-kit not found.
If you want $PRGNAM to be able to make sound, you must install
jack-audio-connection-kit before running this script.
If you want to build a dedicated server, you don't have to install
jack-audio-connection-kit. Instead, export SERVERONLY=yes in the
environment. See SERVER.txt for details.
***********************************************************************
EOF
sleep 5
exit 1
fi
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
cd $SRCNAM$VERSION
chown -R root:root .
# permissions are gross, nonstandard find needed here:
find -L . -type d -a -exec chmod 755 {} \+ -o \
-type f -a \! -perm 644 -a -exec chmod 644 {} \+
# jamulus can be built with either qt4 or qt5. Let's stick with
# qt4 until Slackware starts shipping qt5... for paranoia's sake,
# remove all references to qt5 and/or qt3 from the environment.
unset QTDIR
unset QT5DIR
PATH=/bin:/sbin:/usr/bin:/usr/sbin
source /etc/profile.d/qt4.sh
QTDIR=$QT4DIR
export QTDIR QT5DIR
qmake "CONFIG+=noupcasename" $EXTRACONF \
QMAKE_CFLAGS="$SLKCFLAGS" QMAKE_CXXFLAGS="$SLKCFLAGS" \
$SRCNAM.pro
make clean
make
# No 'make install' target, so:
mkdir -p $PKG/usr/bin $PKG/usr/share/applications $PKG/usr/share/pixmaps
install -s -m0755 $PRGNAM $PKG/usr/bin/
install -m0644 src/res/$PRGNAM.desktop $PKG/usr/share/applications/
# The png icons provided are tiny, but the OSX icon is big enough
# to actually see, so I extracted the 256x256 version & include
# it with the build.
cat $CWD/$PRGNAM.png > $PKG/usr/share/pixmaps/$PRGNAM.png
# NEWS is a 0-byte placeholder in 3.4.3.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
# Include our own (hopefully) helpful hints for servers.
cat $CWD/SERVER.txt > $PKG/usr/doc/$PRGNAM-$VERSION/SERVER.txt
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
# Only add capability stuff if not disabled:
if [ "${SERVERONLY:-no}" != "yes" ]; then
if [ "${SETCAP:-yes}" = "yes" ]; then
cat $CWD/setcap.sh >> $PKG/install/doinst.sh
# Only allow execution by audio group
chown root:audio $PKG/usr/bin/$PRGNAM
chmod 0750 $PKG/usr/bin/$PRGNAM
fi
fi
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

10
audio/jamulus/jamulus.info

@ -0,0 +1,10 @@
PRGNAM="jamulus"
VERSION="3.4.3"
HOMEPAGE="http://llcon.sourceforge.net/"
DOWNLOAD="https://downloads.sourceforge.net/project/llcon/Jamulus/3.4.3/Jamulus-3.4.3.tar.gz"
MD5SUM="fa0f73b1d4e2fdbeb230899f1b2d0f0e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="jack-audio-connection-kit"
MAINTAINER="B. Watson"
EMAIL="yalhcru@gmail.com"

BIN
audio/jamulus/jamulus.png

After

Width: 256  |  Height: 256  |  Size: 67 KiB

1
audio/jamulus/setcap.sh

@ -0,0 +1 @@
[ -x /sbin/setcap ] && /sbin/setcap cap_ipc_lock,cap_sys_nice=ep usr/bin/jamulus

19
audio/jamulus/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------------------------------------------------------|
jamulus: jamulus (real-time jam session client/server)
jamulus:
jamulus: The Jamulus software enables musicians to perform real-time jam
jamulus: sessions over the internet. There is one server running the Jamulus
jamulus: server software which collects the audio data from each Jamulus
jamulus: client, mixes the audio data and sends the mix back to each client.
jamulus:
jamulus:
jamulus:
jamulus:
jamulus:
Loading…
Cancel
Save