#!/bin/bash # Slackware build script for virtualxt # Copyright 2023 Sean Eubanks , Cheraw, SC, USA # All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=virtualxt VERSION=${VERSION:-0.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 the variable PRINT_PACKAGE_NAME is set, then this script will report what # the name of the created package would be, and then exit. This information # could be useful to other scripts. 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 DOCS="LICENSE README.md" set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf virtualxt-$VERSION unzip $CWD/virtualxt-$VERSION.zip cd virtualxt-$VERSION chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; # Build virtualxt with SDL2 frontend which premake5 if [ "$?" -ne 0 ]; then echo "ERROR: Cannot find required premake5 binary!" exit 1 fi if [ -z "$EXCLUDE_MODULES" ]; then # Build all modules premake5 --modules gmake else # Build all modules except those specified in EXCLUDE_MODULES premake5 --modules=-$EXCLUDE_MODULES gmake fi make sdl2-frontend modules install -D -m 0755 build/bin/virtualxt $PKG/usr/bin/virtualxt mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/virtualxt install -D -m 0755 build/bin/libvxt.so $PKG/usr/lib$LIBDIRSUFFIX/virtualxt/libvxt.so # Install BIOS, disk images, and modules DSTDIR=$PKG/usr/share/$PRGNAM mkdir -p $DSTDIR mkdir $DSTDIR/bios && cp bios/*.bin bios/*.ROM $DSTDIR/bios/ mkdir $DSTDIR/boot && cp boot/*.img $DSTDIR/boot/ mkdir $DSTDIR/modules && cp modules/*.vxt $DSTDIR/modules/ # Allow all users read access if [ "$(grep ^users /etc/group)" = "" ]; then echo "ERROR: The users group is missing!" exit 1 fi chgrp -R users $DSTDIR # All users need write access to boot images # otherwise image fails to boot chmod g+w $DSTDIR/boot/*.img # Copy README, LICENSE, and this script mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a $DOCS $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 cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE