#!/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