#!/bin/bash # Slackware build script for srb2 # Written by B. Watson (urchlay@slackware.uk) # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # 20230714 bkw: updated for v2.2.11. # - new deps (see .info file). # - cmake sed stuff to allow building without net access. # - new-style icons. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=srb2 VERSION=${VERSION:-2.2.11} 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/$PRGNAM $PKG $OUTPUT cd $TMP/$PRGNAM rm -rf SRB2-SRB2_release_$VERSION # There's a lot of stuff in the source that we don't need. All the # --exclude stuff saves 182MB of space in $TMP. tar xvf $CWD/SRB2-SRB2_release_$VERSION.tar.gz \ --exclude '*/libs' \ --exclude '*/android' \ --exclude '*/windows-installer' \ --exclude '*/bin' \ --exclude '*/objs' \ --exclude '*/tools' cd SRB2-SRB2_release_$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 {} \+ # Assets (actually WAD and pk3 aka zip files) aren't found in the # source, have to download them separately. The build actually checks # for them & refuses to compile if they're missing, which is kinda # unfair since it doesn't ship with the damn things... so we have to # extract them from the 'full' zip file. Can't just touch them, since # the md5sums of the files get hardcoded into the binary (and it'll # refuse to run if they don't match). ( cd assets mkdir installer cd installer # upstream release a 2.2.8 followed by a 229, handle either. ZIPFILE="$CWD/SRB2-v$VERSION-Full.zip" [ -e "$ZIPFILE" ] || ZIPFILE="$CWD/SRB2-v${VERSION//.}-Full.zip" unzip "$ZIPFILE" '*.dta' '*.pk3' ) # As shipped, the path /usr/games/SRB2 is hardcoded in various places # in the source (no cmake variable to change it). It should be in # /usr/share/games, not /usr/games, so sed-fest: sed -i 's,usr/games,usr/share/games,g' \ src/sdl/i_system.c src/sdl/i_ttf.c # 20230714 bkw: cmake silliness. it wants to download Ccache.cmake to # support ccache on Linux. on Windows, it seems to support ccache # without external dependency... and it turns out, this support works # on Linux as well. So: sed -i '/CMAKE_HOST_SYSTEM_NAME/s,STREQ.*,MATCHES Linux),' CMakeLists.txt mkdir -p build cd build cmake \ -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS -DNDEBUG" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS -DNDEBUG" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DMAN_INSTALL_DIR=/usr/man \ -DUSE_CCACHE=ON \ -DCMAKE_BUILD_TYPE=Release .. make VERBOSE=1 #make install/strip DESTDIR=$PKG # don't bother, it's broken cd .. # 'make install' puts all the files in the same dir, so manual install: mkdir -p $PKG/usr/games $PKG/usr/share/games/SRB2 \ $PKG/usr/share/pixmaps $PKG/usr/share/applications \ $PKG/usr/doc/$PRGNAM-$VERSION # as of 2.2.8 the binary's name changed. # 20230714 bkw: ...and it changed again in 2.2.11. [ -x build/bin/lsdl$PRGNAM-$VERSION ] || mv build/bin/lsdl$PRGNAM build/bin/lsdl$PRGNAM-$VERSION install -s -m0755 build/bin/lsdl$PRGNAM-$VERSION $PKG/usr/games ln -s lsdl$PRGNAM-$VERSION $PKG/usr/games/lsdl$PRGNAM ln -s lsdl$PRGNAM-$VERSION $PKG/usr/games/$PRGNAM install -m0644 assets/LICENSE* assets/README* $PKG/usr/doc/$PRGNAM-$VERSION hicolor=$PKG/usr/share/icons/hicolor for px in 16 22 32 48 64 128 256; do sz=${px}x${px} dir=$hicolor/$sz/apps mkdir -p $dir convert -resize $sz $PRGNAM.png $dir/$PRGNAM.png done ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png echo -n "Copying data files: " ( cd assets/installer for i in *; do echo -n "$i " cat $i > $PKG/usr/share/games/SRB2/$i done ) echo # desktop file is a modified version of debian/srb2.desktop. I fixed # the absolute paths and got it to validate. cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop # dev and modding docs in doc/, config files for cwiid and various doom # level editors in extras/. We don't need yet another copy of the GPL # in doc/, so: rm -f doc/.gitignore doc/copying cp -a doc extras $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE