diff options
Diffstat (limited to 'system/vice/vice.SlackBuild')
-rw-r--r-- | system/vice/vice.SlackBuild | 357 |
1 files changed, 227 insertions, 130 deletions
diff --git a/system/vice/vice.SlackBuild b/system/vice/vice.SlackBuild index 3ce07bb636..38aa08d8c5 100644 --- a/system/vice/vice.SlackBuild +++ b/system/vice/vice.SlackBuild @@ -1,27 +1,49 @@ #!/bin/bash -# Slackware build script for VICE +# Slackware build script for vice # Copyright 2008 Mauro Giachero (email removed) -# Copyright 2020 B. Watson (yalhcru@gmail.com) -# All rights reserved. -# -# Redistribution and use of this script, with or without modification, is -# permitted provided that the following conditions are met: -# -# 1. Redistributions of this script must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Copyright 2020, 2021, 2022, 2023 B. Watson (urchlay@slackware.uk) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +# 20240213 bkw: update for v3.8. +# - had to add --disable-parsid to the configure command. it was breaking +# the build. also, do you really have a SID chip connected to your +# parallel port? (do you even *have* a parallel port?)... if so, either +# send me a patch, or wait until upstream does another release. +# - LAME is no longer supported, remove --enable-lame. +# - add --enable-catweasel. + +# 20230504 bkw: BUILD=2. +# - fix vice.texi so the GNU info file gets generated. +# - remove old ./configure arguments and fix a couple of wrong ones. +# thanks to Franzen for sending a patch to fix this. +# - changed -Wl,--allow-multiple-definition to -fcommon, which does +# basically the same thing but matches how other builds do it. +# - fix doinst.sh silliness. +# - add douninst.sh, to clean up /usr/info/dir after the package is removed. + +# 20221228 bkw: update for v3.7.1. + +# 20221129 bkw: update for v3.6.1. +# - can't build our own HTML or plaintext docs from vice.texi. +# - include upstream's HTML docs in package. + +# 20210809 bkw: update for v3.5, many changes, can't build old versions. +# - Relicense as WTFPL, with permission from the original author. +# - Build & install the actual HTML docs (not the bundled copy of +# the upstream website). +# - Don't install fonts. They were part of the above. +# - Use upstream's .desktop files instead of our own. +# - Upstream removed the man pages; restore them (for now). +# - Build the gtk+3 UI. Also build the SDL2 UI, unless the user's +# requested the SDL1 one (or disabled SDL). +# - Really fix the paths in the documentation. +# - ffmpeg now included in Slackware (pre-15.0 -current). Still +# autodetected, but the docs no longer mention it. +# - Get rid of README_SBo.txt as the build options are simpler +# and "fit" in the regular README now. # 20200801 bkw: # - Take over maintenance @@ -38,8 +60,8 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=vice -VERSION=${VERSION:-3.4} -BUILD=${BUILD:-3} +VERSION=${VERSION:-3.8} +BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -51,9 +73,6 @@ if [ -z "$ARCH" ]; then 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 @@ -82,143 +101,221 @@ fi set -e -# The "--enable-shared-ffmpeg" option creates conflicts with external -# ffmpeg libraries, so we don't use it here. Static would be OK, but -# it won't build, so it's not an option for now either: I don't care -# enough about it to spend any more time trying to fix it. If you do -# care, come up with a way to build with --enable-static-ffmpeg, send -# me a patch, and I'll include it here. - -[ -x /usr/bin/ffmpeg ] && ffmpeg="--enable-external-ffmpeg" - -SDL="${SDL:-auto}" -if [ "$SDL" = "auto" ]; then - SDL=1 - pkg-config --exists sdl2 && SDL=2 -fi - -case "$SDL" in - 1) sdlopt="--enable-sdlui" ;; - 2) sdlopt="--enable-sdlui2" ;; - *) echo -e "$( basename $0 ):" \ - "invalid SDL option '$SDL'." \ - "Valid options are:\n auto 1 2" \ - 1>&2 - exit 1 ;; -esac +# ffmpeg is included in the base OS on post-14.2 -current, but leave +# this here in case someone's doing something clever. +[ -x /usr/bin/ffmpeg ] && ffmpeg="--enable-ffmpeg" # Anticipating 15.0's pure-alsa-system +# 20240214 bkw: which sadly never materialized. I keep this here for +# my own use, anyway. if [ "${PULSE:-yes}" != "yes" ]; then pulseopt="--without-pulse" fi -echo "=== sdlopt '$sdlopt', ffmpeg '$ffmpeg', pulseopt '$pulseopt'" +echo "=== pulseopt='$pulseopt'" rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION -tar xvf $CWD/$PRGNAM-$VERSION.tar.?z + +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz + cd $PRGNAM-$VERSION chown -R root:root . +chmod 644 doc/html/fonts/OFL.txt # this file shouldn't be +x find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ -# Set proper paths in documentation. -sed -i "s/\/usr\/local\/lib\//\/usr\/lib${LIBDIRSUFFIX}\//g" \ - man/vice.1 -sed -i 's/"\/vice_toc\.html"/"\/html\/vice_toc\.html"/g' \ - src/arch/gtk3/uicommands.c -sed -i "s/\/usr\/local/\/usr/g" doc/vice.* doc/html/*html -sed -i "s/\/usr\/lib\//\/usr\/lib${LIBDIRSUFFIX}\//g" doc/vice.* doc/html/*html - -# Avoid the need for xa. It's only used to generate a small C header -# file, which we include a prebuilt version of here. There's nothing -# dynamic about this header, it's just a small chunk of 6502 object -# code as a C array, and for a given version of vice it'll always be -# the same code. -cat $CWD/psiddrv.h.prebuilt.$VERSION > src/c64/psiddrv.h - -autoreconf -vif +# Fix some mildly broken constructs in vice.texi, so we can generate +# the vice.info doc. +patch -p1 < $CWD/fix_texi.diff DOCDIR=/usr/doc/$PRGNAM-$VERSION PKGDOC=$PKG/$DOCDIR -CFLAGS="$SLKCFLAGS -w -Wl,--allow-multiple-definition" \ -CXXFLAGS="$SLKCFLAGS" \ -XA=/bin/true \ -./configure \ - $sdlopt \ - $ffmpeg \ - $pulseopt \ - --enable-x64 \ - --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --mandir=/usr/man \ - --infodir=/usr/info \ - --docdir=$DOCDIR \ - --with-x \ - --enable-quicktime \ - --enable-ethernet \ - --enable-parsid \ - --enable-cpuhistory \ - --build=$ARCH-slackware-linux +# setting TEXMFVAR prevents writing to /root, which SlackBuilds +# really shouldn't do. +export TEXMFVAR=$( pwd )/.texmf-var +# Set proper paths in documentation. +rm -rf doc/vice.pdf # will be rebuilt, along with the HTML doc. +sed -i -e "s/\/usr\/local/\/usr/g" \ + -e "s,/lib/vice/,/share/vice/,Ig" \ + doc/vice.texi +autoreconf -vif + +# We build up to 3 times with slightly different ./configure args, +# so make it a function. +config() { + local configarg="$1" + + # Avoid the need for xa. It's only used to generate a small C header + # file, which we include a prebuilt version of here. There's nothing + # dynamic about this header, it's just a small chunk of 6502 object + # code as a C array, and for a given version of vice it'll always be + # the same code. It didn't change between vice 3.4 and 3.5, either. + cat $CWD/psiddrv.h.prebuilt.3.4 > src/c64/psiddrv.h + + # 20210809 bkw: in 3.5, upstream added dos2unix as a required dep, + # but it's *only used* if you run "make dist" or "make dist-gzip", + # which we don't do. DOS2UNIX=/bin/true bypasses the autodetection. + # XDG_DESKTOP_MENU=/bin/true prevents installing .desktop files, + # because those don't respect $DESTDIR. We can't just disable them + # with a configure argument, because that stops them being built + # at all. + + # 20230504 bkw: note to self: -w means disable all warnings. + CFLAGS="$SLKCFLAGS -w -fcommon" \ + CXXFLAGS="$SLKCFLAGS" \ + DOS2UNIX=/bin/true \ + XA=/bin/true \ + XDG_DESKTOP_MENU=/bin/true \ + ./configure \ + $configarg \ + $ffmpeg \ + $pulseopt \ + --enable-html-docs \ + --enable-platformdox \ + --enable-x64 \ + --enable-x64-image \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --docdir=$DOCDIR \ + --enable-ethernet \ + --disable-parsid \ + --enable-cpuhistory \ + --with-mpg123 \ + --with-flac \ + --with-vorbis \ + --with-gif \ + --with-png \ + --enable-midi \ + --enable-catweasel \ + --build=$ARCH-slackware-linux + + make +} + +# SDL UI: *Only* build/install the binaries (not the docs or ROMs), +# rename them to <whatever>-sdl2 (or -sdl1). +buildsdl() { + local exesuf="-sdl$1" + local configarg="--disable-pdf-docs --enable-sdl${1}ui" + + config "$configarg" + make -C src install-binPROGRAMS \ + DESTDIR="$PKG" \ + EXEEXT="$exesuf" \ + INSTALL_PROGRAM="install -s -m0755" + + # get rid of the non-graphical tools (the gtk3 build will + # install them again without -$exesuf). + rm -f $PKG/usr/bin/[cp]*$exesuf + + make distclean +} + +# Build the SDL binaries, unless disabled. +# Be generous in what we accept for SDL in the env. "both" isn't +# mentioned in README, it's probably only useful to me. +case "${SDL:-2}" in + ""|2*|y*|Y*|t*|T*) buildsdl 2 ;; + 1*) buildsdl 1 ;; + both) buildsdl 1 ; buildsdl 2 ;; + n*|N*|f*|F*|0*) ;; # NOP + *) cat <<EOF + +*** +$0: invalid value for SDL environment variable. +Allowed values: "1", "2", "no", "both", or empty/unset (same as "2"). +*** +EOF + exit 1 ;; +esac + +# Now build & install the whole project with the gtk3 UI. +config "--enable-gtk3ui --enable-desktop-files" make make install-strip DESTDIR=$PKG -rm -f $PKG/usr/info/dir -gzip -9 $PKG/usr/man/man?/*.? $PKG/usr/info/* - -mkdir -p $PKG/usr/share/{applications,pixmaps} -install -D -m 0644 $CWD/config/*.desktop $PKG/usr/share/applications -install -D -m 0644 $CWD/config/vice.png $PKG/usr/share/pixmaps -# Move the docs to the Slackware standard place, symlink to where vice -# expects it to be. +# 20240214 bkw: in 3.8, 'make install' no longer installs any of +# the docs. Do it manually. Leave out building/ (we don't need to +# care about building on fedora, windows, mac OS). mkdir -p $PKGDOC -mv $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM/doc/* $PKGDOC -( cd $PKGDOC - chmod 644 * - mkdir html - mv *.html *.png *.gif *.css html/ ) -( cd $PKG/usr/lib$LIBDIRSUFFIX/$PRGNAM - rmdir doc - ln -s $DOCDIR doc ) - -# 20200728 bkw: when I inherited this build, it was installing the -# fonts to the doc dir (where they can't be used), but updating -# the font cache in doinst.sh. I'm not so sure the fonts are -# really necessary, but in case they are, I've moved them to -# /usr/share/fonts/TTF (and gotten rid of the non-TTF ones). -mkdir -p $PKG/usr/share/fonts/TTF -mv $PKGDOC/*.ttf $PKG/usr/share/fonts/TTF -rm -f $PKGDOC/Lato-* - -# This would install Commodore font where other software can use it. -# However, the characters in the font are in PETSCII order, not ASCII -# or Unicode, so it's not all that useful. -#ln -s ../../../lib$LIBDIRSUFFIX/$PRGNAM/common/CBM.ttf $PKG/usr/share/fonts/TTF - -cp -a AUTHORS ChangeLog COPYING FEEDBACK NEWS README $PKGDOC +cp -a doc/*.txt $PKGDOC + +# Install desktop files manually. +mkdir -p $PKG/usr/share/desktop-directories \ + $PKG/usr/share/applications +install -m0644 src/arch/gtk3/data/unix/vice*desktop \ + $PKG/usr/share/applications +install -m0644 src/arch/gtk3/data/unix/vice*directory \ + $PKG/usr/share/desktop-directories + +# Documentation. vice.pdf has already been installed to the doc dir. +# Generate info, plaintext, and HTML versions here. The text doc is +# harder to navigate, but easier to grep, so it's worth having IMO. +# 20221130 bkw: vice.texi no longer works with makeinfo, as of +# vice-3.6.1. Not sure whether this is because we have an +# outdated texinfo package in Slackware 15.0, or because upstream +# broke some kind of rule... regardless, it's disabled for now. +# 20230504 bkw: Patched vice.texi, so this is now enabled by default. +if [ "${MAKEINFO:-yes}" = "yes" ]; then + makeinfo doc/$PRGNAM.texi + mkdir -p $PKG/usr/info + mv $PRGNAM.info* $PKG/usr/info + gzip -9 $PKG/usr/info/* + + makeinfo --plaintext doc/$PRGNAM.texi > $PKGDOC/$PRGNAM.txt +fi + +# 20221130 bkw: HTML docs do get built, but never installed. +mkdir -p $PKGDOC/html +cp -a doc/html/{NEWS,COPYING,fonts/,images/,*.{html,css,ico}} $PKGDOC/html +ln -s html/NEWS $PKGDOC/NEWS +ln -s html/COPYING $PKGDOC/COPYING + +# 20210810 bkw: as of 3.5, upstream dropped the man pages. I'm +# including the man pages from 3.4 in the 3.5 package. Edited them +# slightly to add correct paths to the HTML and PDF docs, also +# convert the iso-8859-1 characters into troff escapes. Also +# added (and expanded) vsid.1 from Debian. +mkdir -p $PKG/usr/man/man1 +for i in $CWD/man/*.?; do + sed -e "s,@HTMLDOC@,$DOCDIR/html/index.html," \ + -e "s,@PDFDOC@,$DOCDIR/$PRGNAM.pdf," \ + < $i > $PKG/usr/man/man1/$( basename $i ) +done +gzip -9 $PKG/usr/man/man?/*.? +for i in x64 x64sc xscpu64 x64dtv x128 xvic xpet xplus4 xcbm2 xcbm5x0; do + ln -s vice.1.gz $PKG/usr/man/man1/$i.1.gz +done + +cp -a NEWS README $PKGDOC cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild # Make the slack-desc reflect the build options. -FF=no; SDL=1.2; PA=no - -# We can't use ldd to detect whether ffmpeg is built in since it -# gets loaded with dlopen(). Hence this stuff: -grep -q '^#define USE_SDLUI2\>' src/config.h && SDL=2.0 -grep -q '^#define HAVE_FFMPEG\>' src/config.h && FF=yes -grep -q '^#define USE_PULSE\>' src/config.h && PA=yes +PA=no +if [ "$SDL" = "both" ]; then + SDL="1.2 and 2.0" +else + SDL=no + [ -x $PKG/usr/bin/x128-sdl1 ] && SDL=1.2 + [ -x $PKG/usr/bin/x128-sdl2 ] && SDL=2.0 +fi +grep -q '^#define USE_PULSE\>' src/config.h && PA=yes mkdir -p $PKG/install -sed -e "s,@FF@,$FF," \ - -e "s,@PA@,$PA," \ +sed -e "s,@PA@,$PA," \ -e "s,@SDL@,$SDL," \ - $CWD/slack-desc > $PKG/install/slack-desc + $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh +cat $CWD/douninst.sh > $PKG/install/douninst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE |