#!/bin/sh # # Slackware build script for FCE Ultra # # Heavily based on the Slackware 13.0 SlackBuild # Written by Luigi "Reilly" Cozzolino # URL: http://fceux.com # Packager: Luigi "Reilly" Cozzolino # BuildRequires: lua # Exit on most errors: set -e ######## SOURCE PACKAGE SECTION ###################### SRCNAME="fceux" SRCVER="2.1.0a" SRCTYPE="tar.bz2" SRCPKG="${SRCNAME}-${SRCVER}.src.${SRCTYPE}" SOURCEDIR1="fceu" SOURCEDIR2="gfceux" ######## END SOURCE PACKAGE SECTION ################## ######## SLACKWARE PACKAGE SECTION ################### SLKNAM="${SRCNAME}" SLKVER="${SRCVER}" ARCH=${ARCH:-i486} BUILD="2lc" PKGTYPE="${PKGTYPE:-txz}" ######## END SLACKWARE PACKAGE SECTION ############### CWD=$(pwd) TMP=${TMP:-$HOME/PKGS/${SLKNAM}} if [ "${ARCH}" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "${ARCH}" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" fi # Number of jobs to compile at once: if [ -z "$NUMJOBS" ]; then NUMJOBS=-j4 fi PKG=$TMP/package-${SLKNAM} rm -rf $PKG mkdir -p $PKG cd $TMP rm -rf ${SOURCEDIR1} ${SOURCEDIR2} clear sleep 1 echo ; echo ; echo echo "+===========================================================" echo -e "|\033[01;32m Building\033[00m \033[01;31m${SRCPKG}\033[00m" echo "+===========================================================" sleep 5 # Checking source package type... [ "${SRCTYPE}" = "tar.gz" -o "${SRCTYPE}" = "tgz" ] && EXTRACT_SRCPKG="tar -xvzf" [ "${SRCTYPE}" = "tar.bz2" -o "${SRCTYPE}" = "tbz" ] && EXTRACT_SRCPKG="tar -xvjf" [ "${SRCTYPE}" = "zip" -o "${SRCTYPE}" = "ZIP" ] && EXTRACT_SRCPKG="unzip" [ "${SRCTYPE}" = "rar" -o "${SRCTYPE}" = "RAR" ] && EXTRACT_SRCPKG="rar x" [ "${SRCTYPE}" = "7z" -o "${SRCTYPE}" = "7Z" ] && EXTRACT_SRCPKG="7z x" # and finally extract it: ${EXTRACT_SRCPKG} $CWD/${SRCPKG} || exit 1 # Ownerships/perms funtion: change_perms() { chown -R root:root . find . -perm 666 -exec chmod 644 {} \; find . -perm 664 -exec chmod 644 {} \; find . -perm 600 -exec chmod 644 {} \; find . -perm 444 -exec chmod 644 {} \; find . -perm 400 -exec chmod 644 {} \; find . -perm 440 -exec chmod 644 {} \; find . -perm 777 -exec chmod 755 {} \; find . -perm 775 -exec chmod 755 {} \; find . -perm 511 -exec chmod 755 {} \; find . -perm 711 -exec chmod 755 {} \; find . -perm 555 -exec chmod 755 {} \; } ############################# FCEUX SECTION ######################################################## ( set -e cd ${SOURCEDIR1} # Change ownerships/perms: change_perms # Building ``fceux'': scons # Add binary to package: mkdir -p $PKG/usr/games install -m 0755 bin/fceux $PKG/usr/games # Add a manpage: mkdir -p $PKG/usr/man/man6 install -m 0644 documentation/fceux.6 $PKG/usr/man/man6 gzip -9 $PKG/usr/man/man?/* # Add a documentation directory for ``fceux'': mkdir -p $PKG/usr/doc/${SLKNAM}-${SLKVER} cp -a bin/fceux.chm AUTHORS COPYING INSTALL NEWS README TODO-PROJECT $PKG/usr/doc/${SLKNAM}-${SLKVER} ) || exit 1 ############################# END FCEUX SECTION #################################################### ############################# GFCEUX SECTION ############################################################ ( set -e cd ${SOURCEDIR2} # Change ownerships/perms: change_perms # Install: python setup.py install --prefix=$PKG/usr # Move ``gfceux'' to `usr/games': mkdir -p $PKG/usr/games mv $PKG/usr/bin/gfceux $PKG/usr/games # Remove redundances: rmdir $PKG/usr/bin # Move a manpage from `usr/share/man' to `usr/man' mkdir -p $PKG/usr/man/man1 mv $PKG/usr/share/man/man1/gfceux.1 $PKG/usr/man/man1 gzip -9 $PKG/usr/man/man?/* # Remove redundances: rm -rf $PKG/usr/share/man # Add a desktop file for KDE: mkdir -p $PKG/usr/share/applications cat > $PKG/usr/share/applications/gfceux.desktop << "EOF" [Desktop Entry] Encoding=UTF-8 Name=FCEUX NES Emulator Comment=Play Nintendo ROM files Terminal=false Exec=gfceux Type=Application StartupNotify=true Icon=gfceux Categories=Application;Game; OnlyShowIn=KDE; EOF # Add a documentation directory for ``gfceux'': mkdir -p $PKG/usr/doc/${SLKNAM}-${SLKVER}/gfceux cp -a ChangeLog COPYING INSTALL TODO $PKG/usr/doc/${SLKNAM}-${SLKVER}/gfceux ) || exit 1 ############################# END GFCEUX SECTION ######################################################## # Strip binaries and libraries: ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) # Add a SlackBuild: mkdir -p $PKG/usr/doc/${SLKNAM}-${SLKVER} cat $CWD/${SLKNAM}.SlackBuild > $PKG/usr/doc/${SLKNAM}-${SLKVER}/${SLKNAM}.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG requiredbuilder -v -y -s $CWD $PKG /sbin/makepkg -l y -c n $TMP/${SLKNAM}-${SLKVER}-${ARCH}-${BUILD}.${PKGTYPE} # Checksum `md5' file creation: ( cd $TMP ; md5sum ${SLKNAM}-${SLKVER}-${ARCH}-${BUILD}.${PKGTYPE} > ${SLKNAM}-${SLKVER}-${ARCH}-${BUILD}.md5 ) # Final touches: ( cd $TMP ; cat $PKG/install/slack-desc | grep "^${SLKNAM}:" > ${SLKNAM}-${SLKVER}-${ARCH}-${BUILD}.txt ) # Clean up the extra stuff: if [ "$1" = "--cleanup" -o "$1" = "-c" ]; then rm -rf $TMP/${SOURCEDIR1} rm -rf $TMP/${SOURCEDIR2} rm -rf $PKG fi