From d87686d0dde0a1c4e063aaf520d70d45ba24d5b8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 19 Aug 2009 02:22:13 -0400 Subject: [PATCH] Added Lugaru 1 installer. --- examples/lugaru/make.sh | 207 +++++++++++++++++++ examples/lugaru/meta/splash.bmp | Bin 0 -> 84678 bytes examples/lugaru/scripts/app_localization.lua | 33 +++ examples/lugaru/scripts/config.lua | 56 +++++ 4 files changed, 296 insertions(+) create mode 100755 examples/lugaru/make.sh create mode 100644 examples/lugaru/meta/splash.bmp create mode 100644 examples/lugaru/scripts/app_localization.lua create mode 100644 examples/lugaru/scripts/config.lua diff --git a/examples/lugaru/make.sh b/examples/lugaru/make.sh new file mode 100755 index 0000000..ccf8d9f --- /dev/null +++ b/examples/lugaru/make.sh @@ -0,0 +1,207 @@ +#!/bin/bash + +# This script is not robust for all platforms or situations. Use as a rough +# example, but invest effort in what it's trying to do, and what it produces. +# (make sure you don't build in features you don't need, etc). + +# Stop if anything produces an error. +set -e + +DEBUG=0 +if [ "$1" = "--debug" ]; then + echo "debug build!" + DEBUG=1 +fi + +if [ ! -f data/Data/Animations/Rabbitkick ]; then + echo "We don't see data/Data/Animations/Rabbitkick ..." + echo " Either you're in the wrong directory, or you didn't copy the" + echo " install data into here (it's unreasonably big to store it in" + echo " revision control for no good reason)." + exit 1 +fi + +APPNAME="Lugaru Installer" + +# I use a "cross compiler" to build binaries that are isolated from the +# particulars of my Linux workstation's current distribution. This both +# keeps me at a consistent ABI for generated binaries and prevent subtle +# dependencies from leaking in. +# You may not care about this at all. In which case, just use the +# CC=gcc and CXX=g++ lines instead. +CC=/usr/bin/gcc +CXX=/usr/bin/g++ +#CC=/opt/crosstool/gcc-3.3.6-glibc-2.3.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/gcc +#CXX=/opt/crosstool/gcc-3.3.6-glibc-2.3.5/i686-unknown-linux-gnu/i686-unknown-linux-gnu/bin/g++ + +OSTYPE=`uname -s` +if [ "$OSTYPE" = "Linux" ]; then + NCPU=`cat /proc/cpuinfo |grep vendor_id |wc -l` + let NCPU=$NCPU+1 +elif [ "$OSTYPE" = "Darwin" ]; then + NCPU=`sysctl -n hw.ncpu` +elif [ "$OSTYPE" = "SunOS" ]; then + NCPU=`/usr/sbin/psrinfo |wc -l |sed -e 's/^ *//g;s/ *$//g'` +else + NCPU=1 +fi + +if [ "x$NCPU" = "x" ]; then + NCPU=1 +fi +if [ "x$NCPU" = "x0" ]; then + NCPU=1 +fi + +echo "Will use make -j$NCPU. If this is wrong, check NCPU at top of script." + +# Show everything that we do here on stdout. +set -x + +if [ "$DEBUG" = "1" ]; then + LUASTRIPOPT= + BUILDTYPE=Debug + TRUEIFDEBUG=TRUE + FALSEIFDEBUG=FALSE +else + LUASTRIPOPT=-s + BUILDTYPE=MinSizeRel + TRUEIFDEBUG=FALSE + FALSEIFDEBUG=TRUE +fi + +# Clean up previous run, build fresh dirs for Base Archive. +rm -rf image lugaru-installer pdata.zip +mkdir image +mkdir image/guis +mkdir image/scripts +mkdir image/data +mkdir image/meta + +# Build MojoSetup binaries from scratch. +# YOU ALWAYS NEED THE LUA PARSER IF YOU WANT UNINSTALL SUPPORT! +cd ../.. +rm -rf cmake-build +mkdir cmake-build +cd cmake-build +cmake \ + -DCMAKE_BUILD_TYPE=$BUILDTYPE \ + -DCMAKE_C_COMPILER=$CC \ + -DCMAKE_CXX_COMPILER=$CXX \ + -DMOJOSETUP_MULTIARCH=FALSE \ + -DMOJOSETUP_ARCHIVE_ZIP=TRUE \ + -DMOJOSETUP_ARCHIVE_TAR=FALSE \ + -DMOJOSETUP_ARCHIVE_TAR_BZ2=FALSE \ + -DMOJOSETUP_ARCHIVE_TAR_GZ=FALSE \ + -DMOJOSETUP_GUI_GTKPLUS2=TRUE \ + -DMOJOSETUP_GUI_GTKPLUS2_STATIC=FALSE \ + -DMOJOSETUP_GUI_NCURSES=TRUE \ + -DMOJOSETUP_GUI_NCURSES_STATIC=FALSE \ + -DMOJOSETUP_GUI_STDIO=TRUE \ + -DMOJOSETUP_GUI_STDIO_STATIC=TRUE \ + -DMOJOSETUP_GUI_WWW=FALSE \ + -DMOJOSETUP_GUI_WWW_STATIC=FALSE \ + -DMOJOSETUP_LUALIB_DB=FALSE \ + -DMOJOSETUP_LUALIB_IO=FALSE \ + -DMOJOSETUP_LUALIB_MATH=FALSE \ + -DMOJOSETUP_LUALIB_OS=FALSE \ + -DMOJOSETUP_LUALIB_PACKAGE=FALSE \ + -DMOJOSETUP_LUA_PARSER=TRUE \ + -DMOJOSETUP_IMAGE_BMP=TRUE \ + -DMOJOSETUP_IMAGE_JPG=FALSE \ + -DMOJOSETUP_IMAGE_PNG=FALSE \ + -DMOJOSETUP_INTERNAL_BZLIB=FALSE \ + -DMOJOSETUP_INTERNAL_ZLIB=TRUE \ + -DMOJOSETUP_URL_HTTP=FALSE \ + -DMOJOSETUP_URL_FTP=FALSE \ + .. +make -j$NCPU + +# Strip the binaries and GUI plugins, put them somewhere useful. +if [ "$DEBUG" != "1" ]; then + strip ./mojosetup +fi + +mv ./mojosetup ../examples/lugaru/lugaru-installer +for feh in *.so *.dll *.dylib ; do + if [ -f $feh ]; then + if [ "$DEBUG" != "1" ]; then + strip $feh + fi + mv $feh ../examples/lugaru/image/guis + fi +done + +# Compile the Lua scripts, put them in the base archive. +for feh in ../scripts/*.lua ; do + ./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/${feh}c $feh +done + +# Don't want the example config...use our's instead. +rm -f ../examples/lugaru/image/scripts/config.luac +./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/config.luac ../examples/lugaru/scripts/config.lua + +# Don't want the example app_localization...use our's instead. +rm -f ../examples/lugaru/image/scripts/app_localization.luac +./mojoluac $LUASTRIPOPT -o ../examples/lugaru/image/scripts/app_localization.luac ../examples/lugaru/scripts/app_localization.lua + +# Fill in the rest of the Base Archive... +cd ../examples/lugaru +cp -R data/* image/data/ +cp meta/* image/meta/ + +# Need these scripts to do things like install menu items, etc, on Unix. +if [ "$OSTYPE" = "Linux" ]; then + USE_XDG_UTILS=1 +fi +if [ "$OSTYPE" = "SunOS" ]; then + USE_XDG_UTILS=1 +fi + +if [ "x$USE_XDG_UTILS" = "x1" ]; then + mkdir image/meta/xdg-utils + cp ../../meta/xdg-utils/* image/meta/xdg-utils/ + chmod a+rx image/meta/xdg-utils/* +fi + +if [ "$OSTYPE" = "Darwin" ]; then + # Build up the application bundle for Mac OS X... + APPBUNDLE="$APPNAME.app" + rm -rf "$APPBUNDLE" + cp -Rv ../../misc/MacAppBundleSkeleton "$APPBUNDLE" + perl -w -pi -e 's/YOUR_APPLICATION_NAME_HERE/'"$APPNAME"'/g;' "${APPBUNDLE}/Contents/Info.plist" + mv lugaru-installer "${APPBUNDLE}/Contents/MacOS/mojosetup" + mv image/* "${APPBUNDLE}/Contents/MacOS/" + rmdir image + ibtool --compile "${APPBUNDLE}/Contents/Resources/MojoSetup.nib" ../../misc/MojoSetup.xib +else + # Make a .zip archive of the Base Archive dirs and nuke the originals... + cd image + zip -9r ../pdata.zip * + cd .. + rm -rf image + # Append the .zip archive to the mojosetup binary, so it's "self-extracting." + cat pdata.zip >> ./lugaru-installer + rm -f pdata.zip +fi + +# ...and that's that. +set +e +set +x +echo "Successfully built!" + +if [ "$DEBUG" = "1" ]; then + echo + echo + echo + echo 'ATTENTION: THIS IS A DEBUG BUILD!' + echo " DON'T DISTRIBUTE TO THE PUBLIC." + echo ' THIS IS PROBABLY BIGGER AND SLOWER THAN IT SHOULD BE.' + echo ' YOU HAVE BEEN WARNED!' + echo + echo + echo +fi + +exit 0 + diff --git a/examples/lugaru/meta/splash.bmp b/examples/lugaru/meta/splash.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c87f84153282afddbc72ab220b8c64dd80de2ccb GIT binary patch literal 84678 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 literal 0 HcmV?d00001 diff --git a/examples/lugaru/scripts/app_localization.lua b/examples/lugaru/scripts/app_localization.lua new file mode 100644 index 0000000..298728d --- /dev/null +++ b/examples/lugaru/scripts/app_localization.lua @@ -0,0 +1,33 @@ +-- Lines starting with "--" are comments in this file. +-- You should add your installer's strings here, instead of localization.lua, +-- but localization.lua has instructions on how this file is formatted. + +MojoSetup.applocalization = { + ["Uninstall complete"] = { + en = "Uninstall complete. You may also delete '.lugaru' in your home directory to remove personal savegames and settings.", + de = "Deinstallation komplett. Du kannst auch '.lugaru' in deinem Heimverzeichnis löschen, um eigene Spielstände und Einstellungen zu entfernen.", + es = "Desinstalación completa. Puedes borrar '.lugaru' en tu directorio home para borrar configuraciones personales y tus juegos grabados.", + pl = "Usuwanie zakończone. By usunąć zapisane stany gry i ustawienia, można również usunąć '.lugaru' z domowego katalogu.", + it = "Disinstallazione completata. Se desideri cancellare i salvataggi e le impostazione cancella '.lugaru' nella tua directory home.", + }; + + ["Lugaru README"] = { + de = "Lugaru-README", + es = "LEEME", + pl = "Lugaru README", + it = "Informazioni su Lugaru", + }; + + ["Lugaru License"] = { + en_GB = "Lugaru Licence", + en_CA = "Lugaru Licence", + de = "Lugaru-Lizenz", + es = "Licencia de uso de Lugaru", + pl = "Licencja Lugaru", + it = "Licenza di Lugaru", + }; + +}; + +-- end of app_localization.lua ... + diff --git a/examples/lugaru/scripts/config.lua b/examples/lugaru/scripts/config.lua new file mode 100644 index 0000000..0a77c6b --- /dev/null +++ b/examples/lugaru/scripts/config.lua @@ -0,0 +1,56 @@ +local GAME_INSTALL_SIZE = 29967957; + +local _ = MojoSetup.translate + +Setup.Package +{ + vendor = "wolfire.com", + id = "lugaru", + description = _("Lugaru: The Rabbit's Foot"), + version = "1.0b", + splash = "splash.bmp", + superuser = false, + write_manifest = true, + support_uninstall = true, + recommended_destinations = + { + MojoSetup.info.homedir, + "/opt/games", + "/usr/local/games" + }, + + Setup.Readme + { + description = _("Lugaru README"), + source = _("README-linux.txt") + }, + + Setup.Option + { + value = true, + required = true, + disabled = false, + bytes = GAME_INSTALL_SIZE, + description = _("Lugaru: The Rabbit's Foot"), + + Setup.File + { + -- Just install everything we see... + }, + + Setup.DesktopMenuItem + { + disabled = false, + name = _("Lugaru"), + genericname = _("Lugaru"), + tooltip = _("Kung-Fu Rabbit Adventure Video Game"), + builtin_icon = false, + icon = "lugaru.png", + commandline = "%0/lugaru", + category = "Game" + } + } +} + +-- end of config.lua ... +