Fix and bulletproof osx packaging script; cleanup some obsolete .gitignore entries

This commit is contained in:
Paul Chote
2010-09-25 13:44:59 +12:00
committed by Chris Forbes
parent d6dd392028
commit c790db8e84
15 changed files with 41 additions and 76 deletions

View File

@@ -0,0 +1,84 @@
#!/bin/bash
# Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
# This file is part of OpenRA, which is free software. It is made
# available to you under the terms of the GNU General Public License
# as published by the Free Software Foundation. For more information,
# see LICENSE.
# Internal options
APP_PATH=`echo $0 | awk '{split($0,patharr,"/"); idx=1; while(patharr[idx+3] != "") { if (patharr[idx] != "/") {printf("%s/", patharr[idx]); idx++ }} }'`
EXE_PATH=$APP_PATH/Contents/MacOS/
export LD_LIBRARY_PATH="$EXE_PATH/lib":$LD_LIBRARY_PATH
export MONO_PATH="$EXE_PATH/lib"
RESOURCES_PATH=$APP_PATH/Contents/Resources
# Tweakable options
#export MONO_LOG_LEVEL=debug
GAME_PATH=$RESOURCES_PATH
SUPPORT_PATH=~/Library/"Application Support"/OpenRA
# Downloadable content
DEPS_PACKAGE="osx-deps-v2.zip"
DEPS_URL="http://open-ra.org/get-dependency.php?file=osx-deps-v2"
RA_PACKAGE="ra-packages.zip"
RA_URL="http://open-ra.org/get-dependency.php?file=ra-packages"
CNC_PACKAGE="cnc-packages.zip"
CNC_URL="http://open-ra.org/get-dependency.php?file=cnc-packages"
cd "$EXE_PATH"
# Download and install game dependencies if needed
if [[ ! -e "mono" ]]; then
./download_package "$DEPS_PACKAGE" "$EXE_PATH" "14.5 Mb" "required game dependencies" $DEPS_URL
if [[ ! -e "mono" ]]; then
./display_error "Installation failed" "Package install failed."
exit 1
fi
fi
# Prompt for the mod to run
MODBUTTON=`/usr/bin/osascript << EOT
tell application "Finder"
activate
display dialog "Choose a mod" buttons {"Red Alert", "C&C", "Quit"} \
default button "Red Alert" \
with icon alias (POSIX file "$RESOURCES_PATH/OpenRA.icns") \
with title "OpenRA Mod Selector"
set result to button returned of result
end tell
EOT`
if [ "$MODBUTTON" == "Quit" ]; then
exit 0
fi
MOD="ra"
if [ "$MODBUTTON" == "C&C" ]; then
MOD="cnc"
fi
# Check that the game data is installed
if [[ $MOD == "ra" && ! -e "$GAME_PATH/mods/ra/packages/redalert.mix" ]]; then
./download_package "ra-packages.zip" "$GAME_PATH/mods/ra/packages/" "10 Mb" "the Red Alert game data" $RA_URL
if [[ ! -e "$GAME_PATH/mods/ra/packages/redalert.mix" ]]; then
./display_error "Installation failed" "Package install failed."
exit 1
fi
fi
if [[ $MOD == "cnc" && ! -e "$GAME_PATH/mods/cnc/packages/conquer.mix" ]]; then
./download_package "cnc-packages.zip" "$GAME_PATH/mods/cnc/packages/" "5.9 Mb" "the C&C game data" $CNC_URL
if [[ ! -e "$GAME_PATH/mods/cnc/packages/conquer.mix" ]]; then
./display_error "Installation failed" "Package install failed."
exit 1
fi
fi
# Run the game
cd "${GAME_PATH}"
"${EXE_PATH}"mono --debug "OpenRA.Game.exe" Game.Mods=$MOD SupportDir=~/Library/"Application Support"/OpenRA
# Did we crash?
STATUS=$?
if [ "$STATUS" != "0" ]; then
"$EXE_PATH"/display_error "OpenRA Crashed" "Sorry about that!\nA crash log has been saved to ~/Library/Application Support/OpenRA/Logs."
fi

View File

@@ -0,0 +1,37 @@
#!/bin/bash
# Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
# This file is part of OpenRA.
#
# OpenRA is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenRA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenRA. If not, see <http://www.gnu.org/licenses/>.
#
# Internal options
RESOURCES_PATH=`pwd`/../Resources
# Display an error to the user and exit
# args:
# $1: title
# $2: message
`/usr/bin/osascript << EOT
tell application "Finder"
activate
display dialog "${2}\n\nSupport is available in our irc channel irc.freenode.net #openra." \
buttons "Quit" \
default button 1 \
with title "${1}" \
with icon alias (POSIX file "$RESOURCES_PATH/OpenRA.icns")
activate
end tell
EOT`

View File

@@ -0,0 +1,77 @@
#!/bin/bash
# Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford.
# This file is part of OpenRA.
#
# OpenRA is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenRA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenRA. If not, see <http://www.gnu.org/licenses/>.
#
# Internal options
RESOURCES_PATH=`pwd`/../Resources
SUPPORT_PATH=~/Library/"Application Support"/OpenRA
# Download and install game mix files from the internet
# args:
# $1: package file
# $2: location to unpack package
# $3: package size
# $4: mod name
# $5: download url
PWD=`pwd`
if [ ! -d "$SUPPORT_PATH" ]; then
mkdir -p "$SUPPORT_PATH"
fi
cd "$SUPPORT_PATH"
mkdir -p "${2}"
if [ -e "Downloads/${1}" ]; then
/usr/bin/osascript << EOT
tell application "Terminal"
activate
do script "cd \"${SUPPORT_PATH}\"; unzip -o \"Downloads/${1}\" -d \"${2}\"; touch done; exit;"
end tell
EOT
# Hack around osascript returning before the download finishes
while [ ! -e "done" ]; do
sleep 1
done
rm "done"
else
CONTINUE=`/usr/bin/osascript << EOT
tell application "Finder"
activate
display dialog "OpenRA needs to download ${4}.\n\nDownload size: ${3}" \
buttons {"Download", "Quit"} \
default button "Download" \
with icon alias (POSIX file "$RESOURCES_PATH/OpenRA.icns")
set result to button returned of result
end tell
EOT`
if [ "$CONTINUE" != "Download" ]; then
exit 1
fi
/usr/bin/osascript << EOT
tell application "Terminal"
activate
do script "cd \"${SUPPORT_PATH}\"; curl --create-dirs -L -o \"./Downloads/${1}\" \"${5}\"; unzip -o \"Downloads/${1}\" -d \"${2}\"; touch done; exit;"
end tell
EOT
# Hack around osascript returning before the download finishes
while [ ! -e "done" ]; do
sleep 1
done
rm "done"
fi