Added initial Braid example installer. braid-installer
authorRyan C. Gordon <icculus@icculus.org>
Thu, 16 Dec 2010 16:02:50 -0500
changeset 800 3a01e0897ee5
parent 799 4dbf6eeac8cc
child 801 e5565f49223e
Added initial Braid example installer.
examples/braid/make.sh
examples/braid/meta/splash.bmp
examples/braid/scripts/app_localization.lua
examples/braid/scripts/config.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/braid/make.sh	Thu Dec 16 16:02:50 2010 -0500
@@ -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/package0.zip ]; then
+    echo "We don't see data/data/package0.zip ..."
+    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="Braid 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 braid-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/braid/braid-installer
+for feh in *.so *.dll *.dylib ; do
+    if [ -f $feh ]; then
+        if [ "$DEBUG" != "1" ]; then
+            strip $feh
+        fi
+        mv $feh ../examples/braid/image/guis
+    fi
+done
+
+# Compile the Lua scripts, put them in the base archive.
+for feh in ../scripts/*.lua ; do
+    ./mojoluac $LUASTRIPOPT -o ../examples/braid/image/scripts/${feh}c $feh
+done
+
+# Don't want the example config...use our's instead.
+rm -f ../examples/braid/image/scripts/config.luac
+./mojoluac $LUASTRIPOPT -o ../examples/braid/image/scripts/config.luac ../examples/braid/scripts/config.lua
+
+# Don't want the example app_localization...use our's instead.
+rm -f ../examples/braid/image/scripts/app_localization.luac
+./mojoluac $LUASTRIPOPT -o ../examples/braid/image/scripts/app_localization.luac ../examples/braid/scripts/app_localization.lua
+
+# Fill in the rest of the Base Archive...
+cd ../examples/braid
+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 braid-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 >> ./braid-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
+
Binary file examples/braid/meta/splash.bmp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/braid/scripts/app_localization.lua	Thu Dec 16 16:02:50 2010 -0500
@@ -0,0 +1,23 @@
+-- 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 '.Braid' in your home directory to remove personal savegames and settings.",
+        de = "Deinstallation komplett. Du kannst auch '.Braid' in deinem Heimverzeichnis löschen, um eigene Spielstände und Einstellungen zu entfernen.",
+        es = "Desinstalación completa. Puedes borrar '.Braid' 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ąć '.Braid' z domowego katalogu.",
+        it = "Disinstallazione completata. Se desideri cancellare i salvataggi e le impostazione cancella '.Braid' nella tua directory home.",
+    };
+
+    ["Braid README"] = {
+        de = "Braid-README",
+        es = "LEEME",
+        pl = "Braid README",
+        it = "Informazioni su Braid",
+    };
+};
+
+-- end of app_localization.lua ...
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/braid/scripts/config.lua	Thu Dec 16 16:02:50 2010 -0500
@@ -0,0 +1,57 @@
+local GAME_INSTALL_SIZE = 158514678;
+
+local _ = MojoSetup.translate
+
+Setup.Package
+{
+    vendor = "number-none.com",
+    id = "braid",
+    description = "Braid",
+    version = "1.5.2",
+    splash = "splash.bmp",
+    superuser = false,
+    write_manifest = true,
+    support_uninstall = true,
+    recommended_destinations =
+    {
+        MojoSetup.info.homedir,
+        "/opt/games",
+        "/usr/local/games"
+    },
+
+    Setup.Readme
+    {
+        description = _("Braid README"),
+        source = _("README-linux.txt")
+    },
+
+    Setup.Option
+    {
+        value = true,
+        required = true,
+        disabled = false,
+        bytes = GAME_INSTALL_SIZE,
+        description = "Braid",
+
+        Setup.File
+        {
+            -- Just install everything we see...
+        },
+
+        Setup.DesktopMenuItem
+        {
+            disabled = false,
+            name = "Braid",
+            genericname = "Braid",
+            tooltip = _("Time-bending puzzle video game"),
+            builtin_icon = false,
+            icon = "braid.png",
+            commandline = "%0/braid",
+            workingdir = "%0",
+            category = "Game"
+        }
+    }
+}
+
+-- end of config.lua ...
+