167 lines
4.9 KiB
Bash
167 lines
4.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Slackware build script for rakarrack
|
|
|
|
# Written by B. Watson (urchlay@slackware.uk)
|
|
|
|
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
|
|
|
|
# 20241206 bkw:
|
|
# - update for last git commit, 0.6.2+20150813_a620840.
|
|
# - add some patches, including one that fixes a segfault on startup.
|
|
# apparently, the previous version has segfaulted on startup ever
|
|
# since Slackware 15.0 came out, and nobody mentioned it (and I
|
|
# haven't used rakarrack in a while either).
|
|
# - add SSE=no option.
|
|
# - touch up README and slack-desc (mention guitar).
|
|
|
|
# 20211205 bkw: BUILD=3, new-style icons.
|
|
# 20140114 bkw: add 64-bit distortion fix and setcap stuff.
|
|
# 20151126 bkw: fix build on -current, preparing for 14.2.
|
|
|
|
# Note: Please don't remove this from the repo just because it's
|
|
# no longer maintained upstream. It's useful, it works, it makes
|
|
# interesting sounds, and some of us actually use it.
|
|
|
|
cd $(dirname $0) ; CWD=$(pwd)
|
|
|
|
PRGNAM=rakarrack
|
|
VERSION=${VERSION:-0.6.2+20150813_a620840}
|
|
COMMIT=${COMMIT:-a6208406d94a1da978f435605072ee5caefe1491}
|
|
BUILD=${BUILD:-1}
|
|
TAG=${TAG:-_SBo}
|
|
PKGTYPE=${PKGTYPE:-tgz}
|
|
|
|
if [ -z "$ARCH" ]; then
|
|
case "$( uname -m )" in
|
|
i?86) ARCH=i586 ;;
|
|
arm*) ARCH=arm ;;
|
|
*) ARCH=$( uname -m ) ;;
|
|
esac
|
|
fi
|
|
|
|
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
|
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
|
|
exit 0
|
|
fi
|
|
|
|
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
|
|
|
|
SRC=$PRGNAM-git-$COMMIT
|
|
|
|
rm -rf $PKG
|
|
mkdir -p $TMP $PKG $OUTPUT
|
|
cd $TMP
|
|
rm -rf $SRC
|
|
unzip $CWD/$SRC.zip
|
|
cd $SRC
|
|
chown -R root:root .
|
|
|
|
# 20241206 bkw: Every file is +x, do not revert to template.
|
|
find . -type f -a -exec chmod 644 {} + -o -type d -a -exec chmod 755 {} +
|
|
|
|
# 20241206 bkw: patches mostly came from AUR and Debian.
|
|
# format-security.diff had to be reworked (some of it had been applied
|
|
# upstream, but not all), and 64bit_distortion.diff comes from:
|
|
# http://sourceforge.net/p/rakarrack/discussion/778862/thread/e9559a34/
|
|
for i in $CWD/patches/*; do
|
|
echo "===> applying $( basename $i )"
|
|
patch -p1 < $i
|
|
done
|
|
|
|
autoreconf -if
|
|
|
|
# 20241207 bkw: Normally, it autodetects SSE and SSE2. Allow SSE=no
|
|
# to disable them both. Not sure why anyone in 2025 wants to run this
|
|
# on a box that's old enough to not support SSE... This option is
|
|
# provided for building on a box *with* SSE/SSE2, for deployment on a
|
|
# box that lacks it.
|
|
# Setting SSE to a non-empty value in configure's env is required, to
|
|
# make the --disable-sse --disable-sse2 work. No idea why; found this
|
|
# in the debian/rules file, and it works.
|
|
if [ "${SSE:-yes}" = "no" ]; then
|
|
OPTS="--disable-sse --disable-sse2"
|
|
SSE=" "
|
|
else
|
|
SSE=""
|
|
fi
|
|
|
|
# 20241207 bkw: --enable-docdir makes it look in --docdir for the
|
|
# HTML help files; otherwise, it looks in /usr/share/doc/rakarrack/,
|
|
# and doesn't find them.
|
|
SSE="$SSE" \
|
|
CFLAGS="$SLKCFLAGS" \
|
|
CXXFLAGS="$SLKCFLAGS" \
|
|
./configure \
|
|
$OPTS \
|
|
--prefix=/usr \
|
|
--libdir=/usr/lib${LIBDIRSUFFIX} \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--mandir=/usr/man \
|
|
--enable-docdir \
|
|
--docdir=/usr/doc/$PRGNAM-$VERSION \
|
|
--build=$ARCH-slackware-linux
|
|
|
|
make
|
|
make install-strip DESTDIR=$PKG
|
|
|
|
gzip $PKG/usr/man/man?/*.?
|
|
|
|
# 20241206 bkw: Upstream now installs icons, but there's no 48x48 one,
|
|
# which is still the standard for /usr/share/pixmaps.
|
|
mkdir -p $PKG/usr/share/{icons/hicolor/48x48/apps,pixmaps}
|
|
convert -resize 48x48 \
|
|
icons/icono_rakarrack_128x128.png \
|
|
$PKG/usr/share/icons/hicolor/48x48/apps/$PRGNAM.png
|
|
|
|
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
|
|
|
|
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
|
|
mkdir -p $PKGDOC
|
|
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
|
|
ln -s ../../share/licenses/$PRGNAM/COPYING $PKGDOC/COPYING
|
|
|
|
# 20241207 bkw: Record in the slack-desc whether SSE/SSE2 are required.
|
|
WITHSSE="does not require SSE or SSE2"
|
|
grep -q -- -mfpmath=sse config.status && WITHSSE="requires SSE"
|
|
grep -q -- -msse2 config.status && WITHSSE="requires SSE and SSE2"
|
|
|
|
mkdir -p $PKG/install
|
|
sed "s,@WITHSSE@,$WITHSSE," < $CWD/slack-desc > $PKG/install/slack-desc
|
|
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
|
|
|
# 20241207 bkw: Only the rakarrack binary needs setcap in doinst.sh.
|
|
# The others (rakverb, rakconvert, etc) are file format conversion
|
|
# tools, and don't play audio via jack even though they're linked with
|
|
# libjack.
|
|
|
|
# Only add capability stuff if not disabled:
|
|
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
|
|
|
|
cd $PKG
|
|
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
|