summaryrefslogtreecommitdiffstats
path: root/audio/asap/asap.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'audio/asap/asap.SlackBuild')
-rw-r--r--audio/asap/asap.SlackBuild235
1 files changed, 235 insertions, 0 deletions
diff --git a/audio/asap/asap.SlackBuild b/audio/asap/asap.SlackBuild
new file mode 100644
index 0000000000..345faa5264
--- /dev/null
+++ b/audio/asap/asap.SlackBuild
@@ -0,0 +1,235 @@
+#!/bin/bash
+
+# Slackware build script for asap
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20240319 bkw: update for v6.0.3.
+# 20230817 bkw: update for v5.3.0.
+# - sap2ntsc.c got removed from upstream's archive. include it with
+# this build, as I still have a use for it (and it still works).
+# If you're wondering: I own half a dozen Atari 8-bit computers,
+# but they're all NTSC (PAL ones are hard to come by in the US). If
+# I want to listen to SAP music on the Atari, I have to convert it
+# to NTSC, or else it plays too fast.
+# - test against latest xmm2 and vlc in SBo repo.
+# - minor update to man pages.
+
+# Notes:
+
+# This SlackBuild turned out to be a lot more elaborate and in-depth
+# than I expected...
+
+# Do not build asapscan or the java/python/etc stuff: they require
+# "cito", because they're written in Ć (not C, C-with-acute-accent,
+# *.ci source files) and there's no SBo build for it... and I don't
+# think it's worth the trouble of creating one. What I probably
+# will do someday is create a cito SlackBuild, then use it to
+# build an asap-extras package that uses the same source as this,
+# including only the stuff that needs cito.
+
+# Slackware 15.0 has a binary called "asapcat", which is part of
+# akonadi. It's utterly unrelated to this asap build!
+
+# Any time vlc or xmms2 updates, this build has to be tested against
+# the new version. Currently it's known to work with:
+# xmms2-0.9.3
+# vlc-3.0.18
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=asap
+VERSION=${VERSION:-6.0.3}
+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
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz || \
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz\?viasf\=1
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+
+LIBDIR=/usr/lib$LIBDIRSUFFIX
+PKGLIBDIR=$PKG/$LIBDIR
+PKGBIN=$PKG/usr/bin
+PKGMAN1=$PKG/usr/man/man1
+
+# These functions help me follow the DRY principle.
+runmake() {
+ make CFLAGS="$SLKCFLAGS" V=1 "$@"
+}
+
+installbin() {
+ mkdir -p "$2"
+ install -s -m0755 -oroot -groot "$1" "$2"
+}
+
+installfile() {
+ mkdir -p "$2"
+ install -m0644 -oroot -groot "$1" "$2"
+}
+
+installscript() {
+ mkdir -p "$2"
+ install -m0755 -oroot -groot "$1" "$2"
+}
+
+# I got carried away and wrote man pages for everything...
+# Note to self: don't forget to "sh mkman.sh" after editing
+# any of the man/*.rst files.
+mkdir -p $PKGMAN1
+for i in $CWD/man/*.1; do
+ gzip -9c < $i > $PKGMAN1/$( basename $i ).gz
+done
+
+# Always build the standalone converter and library. The lib
+# is static (no option to make it dynamic).
+# There's a "make install" but it's not doing what I want.
+runmake
+installbin asapconv $PKGBIN
+installfile asap.h $PKG/usr/include
+installfile libasap.a $PKGLIBDIR
+
+# mplayer wrapper, for command-line users' convenience.
+installscript $CWD/asap-mplayer $PKGBIN
+
+# This tools looks useful.
+installscript chksap.pl $PKG/usr/bin
+
+# It has POD that renders as a man page. Clean up the formatting some
+# and add a SEE ALSO section like the rest of the man pages have.
+sed -i -e 's/^chksap -/chksap.pl -/' \
+ -e 's/perl \(chksap\.pl\)/\1/' \
+ -e '/^=cut/i=head1 SEE ALSO\n\nB<asap-mplayer>(1), B<asap-sdl>(1), B<asapconv>(1), B<sap2ntsc>(1), B<sap2txt>(1)\n' \
+ chksap.pl
+pod2man -r$VERSION -s1 -cSlackBuilds.org chksap.pl | \
+ gzip -9c > $PKG/usr/man/man1/chksap.pl.1.gz
+
+# Looks useful, but it would need cito (don't have):
+#runmake asapscan
+#installbin asapscan $PKGBIN
+
+# Standalone player (seems to work, dunno why it's not built by default).
+runmake asap-sdl
+installbin asap-sdl $PKGBIN
+
+# This builds and seems useful, especially since most SAP files have
+# PAL timing and I live in an NTSC country:
+cat $CWD/sap2ntsc.c > sap2ntsc.c
+gcc $SLKCFLAGS -o sap2ntsc sap2ntsc.c -lm
+installbin sap2ntsc $PKGBIN
+
+# This, too:
+gcc $SLKCFLAGS -o sap2txt sap2txt.c -lz
+installbin sap2txt $PKGBIN
+
+# Now build the plugins.
+
+# moc is part of Slackware, but I'll make it optional anyway,
+# in case someone's running a stripped-down Slackware install.
+# We need the moc source, and have to ./configure it (but not
+# actually build it).
+if [ -x /usr/bin/mocp ]; then
+ echo "=== building moc plugin"
+
+ MOCVER="${MOCVER:-$( /usr/bin/mocp --version | grep Version | sed 's,.*: ,,' )}"
+ tar xvf $CWD/moc-$MOCVER.tar.bz2
+ ( cd moc-$MOCVER && ./configure )
+
+ runmake asap-moc MOC_INCLUDE="$(pwd)/moc-$MOCVER"
+ installbin libasap_decoder.so $PKGLIBDIR/moc/decoder_plugins
+ PLUGINS+=" moc"
+fi
+
+# xmms is part of Slackware, but I'll make it optional anyway.
+if xmms-config --version &>/dev/null; then
+ echo "=== building xmms plugin"
+
+ runmake asap-xmms
+ installbin libasap-xmms.so $PKG/"$( xmms-config --input-plugin-dir )"
+ PLUGINS+=" xmms"
+fi
+
+# xmms2 is SBo, optional.
+if pkg-config --exists xmms2-plugin; then
+ echo "=== building xmms2 plugin"
+
+ # slight xmms2 API change:
+ sed -i 's,XMMS_XFORM_PLUGIN,&_DEFINE,' xmms2/libxmms_asap.c
+
+ runmake asap-xmms2
+ installbin libxmms_asap.so $PKGLIBDIR/xmms2
+ PLUGINS+=" xmms2"
+fi
+
+# vlc is SBo, optional.
+if pkg-config --exists vlc-plugin; then
+ echo "=== building vlc plugin"
+
+ runmake asap-vlc
+ installbin libasap_plugin.so \
+ $PKG/$( pkg-config --variable pluginsdir vlc-plugin )/demux
+ PLUGINS+=" vlc"
+
+ # doinst and douninst update the VLC plugins cache. only include
+ # in the package if they're actually needed.
+ mkdir -p $PKG/install
+ cat $CWD/doinst.sh > $PKG/install/doinst.sh
+ cat $CWD/douninst.sh > $PKG/install/douninst.sh
+fi
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC/examples
+cd $PKGDOC/examples
+ unzip -LL $CWD/examples.zip
+ chmod 644 *
+cd -
+cp -a README COPYING $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+sed "s,@PLUGINS@,$PLUGINS," < $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE