slackbuilds/system/virtualxt/virtualxt.SlackBuild

134 lines
4.0 KiB
Bash

#!/bin/bash
# Slackware build script for virtualxt
# Copyright 2023 Sean Eubanks <seanmeu@protonmail.com>, 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.
# 20241018 bkw: Modified by SlackBuilds.org, BUILD=2:
# - shared lib was being installed to wrong place, so the app failed to run.
# - use getent to detect the users group (NEVER just grep /etc/group!)
# Note: the ".vxt modules" are shared libraries, and as such, shouldn't
# be installed under /usr/share. I'm not going to change this.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=virtualxt
VERSION=${VERSION:-0.11}
BUILD=${BUILD:-2}
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
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 /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
\! -perm /111 -a \! -perm 644 -a -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/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
# 20241018 bkw: this is redundant; 'users' is a default group on Slackware
# and will always exist.
if ! getent group users; 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