Bug fixes, preparing for Debian pkg support

This commit is contained in:
Antonin Décimo
2013-11-20 21:03:33 +01:00
parent 92face581a
commit c41a566c20
2 changed files with 62 additions and 29 deletions

View File

@@ -15,6 +15,7 @@ A directory (default is `./releases`) will be created, and filled with the zippe
### OPTIONS ### OPTIONS
- *-h*, help - *-h*, help
- *-l*, generates a .love file - *-l*, generates a .love file
- *-d*, generates a Debian package **currently not working**
- *-m*, generates a Mac OS X app - *-m*, generates a Mac OS X app
- *-w*, generates Windows x86 and x86_64 executables - *-w*, generates Windows x86 and x86_64 executables
- *-w32*, generates Windows x86 executable - *-w32*, generates Windows x86 executable

View File

@@ -20,6 +20,7 @@ OPTIONS
-h, print this help -h, print this help
-l, generates a .love file -l, generates a .love file
-d, generates a Debian package
-m, generates a Mac OS X app -m, generates a Mac OS X app
-w, generates Windows x86 and x86_64 executables -w, generates Windows x86 and x86_64 executables
-w32, generates Windows x86 executable -w32, generates Windows x86 executable
@@ -29,6 +30,7 @@ OPTIONS
-u, company name. Provide it for OSX CFBundleIdentifier, otherwise USER is used -u, company name. Provide it for OSX CFBundleIdentifier, otherwise USER is used
-v, love version. Default is 0.8.0. Prior to it, no special Win64 version is available -v, love version. Default is 0.8.0. Prior to it, no special Win64 version is available
Use '-v dev' for nightly builds Use '-v dev' for nightly builds
-V, project's version (eg 3.1.4). Must not include revision nor commit id
--refresh, refresh the cache located in '~/.cache/love-release' --refresh, refresh the cache located in '~/.cache/love-release'
--debug, dumps script variables. Does not make releases --debug, dumps script variables. Does not make releases
@@ -139,19 +141,21 @@ function getoptex()
## Debug function ## ## Debug function ##
function debug() function debug()
{ {
echo "PROJECT_NAME: $PROJECT_NAME" echo "PROJECT_NAME: $PROJECT_NAME
echo "COMPANY_NAME: $COMPANY_NAME" PROJECT_VERSION: $PROJECT_VERSION
echo "RELEASE_LOVE: $RELEASE_LOVE" COMPANY_NAME: $COMPANY_NAME
echo "RELEASE_OSX: $RELEASE_OSX" RELEASE_LOVE: $RELEASE_LOVE
echo "RELEASE_WIN_32: $RELEASE_WIN_32" RELEASE_OSX: $RELEASE_OSX
echo "RELEASE_WIN_64: $RELEASE_WIN_64" RELEASE_WIN_32: $RELEASE_WIN_32
echo "LOVE_VERSION: $LOVE_VERSION" RELEASE_WIN_64: $RELEASE_WIN_64
echo "LOVE_SUPPORT_WIN_64: $LOVE_SUPPORT_WIN_64" RELEASE_DEBIAN: $RELEASE_DEBIAN
echo "RELEASE_DIR: $RELEASE_DIR" LOVE_VERSION: $LOVE_VERSION
echo "CACHE_DIR: $CACHE_DIR" LOVE_SUPPORT_WIN_64: $LOVE_SUPPORT_WIN_64
echo "CONFIG_FILE: $CONFIG_FILE" RELEASE_DIR: $RELEASE_DIR
echo "CONFIG_FOUND: $CONFIG_FOUND" CACHE_DIR: $CACHE_DIR
echo "DEBUG: $DEBUG" CONFIG_FILE: $CONFIG_FILE
CONFIG_FOUND: $CONFIG_FOUND
DEBUG: $DEBUG"
} }
@@ -160,6 +164,7 @@ RELEASE_LOVE=false
RELEASE_OSX=false RELEASE_OSX=false
RELEASE_WIN_32=false RELEASE_WIN_32=false
RELEASE_WIN_64=false RELEASE_WIN_64=false
RELEASE_DEBIAN=false
PROJECT_NAME=${PWD##/*/} PROJECT_NAME=${PWD##/*/}
RELEASE_DIR=$PWD/releases RELEASE_DIR=$PWD/releases
COMPANY_NAME=$USER COMPANY_NAME=$USER
@@ -170,6 +175,7 @@ CACHE_DIR=~/.cache/love-release
CONFIG_FILE=~/.config/love-release.cfg CONFIG_FILE=~/.config/love-release.cfg
CONFIG_FOUND=false CONFIG_FOUND=false
DEBUG=false DEBUG=false
GIT=`git log --pretty=format:'%h' -n 1 $1`
## Config file ## ## Config file ##
@@ -214,6 +220,10 @@ if [ -f $CONFIG_FILE ]; then
if [ -n $RELEASE_WIN_64_TMP ]; then if [ -n $RELEASE_WIN_64_TMP ]; then
RELEASE_WIN_64=$RELEASE_WIN_64_TMP RELEASE_WIN_64=$RELEASE_WIN_64_TMP
fi fi
RELEASE_DEBIAN_TMP=${CFG[$PROJECT_NAME"_release-debian"]}
if [ -n $RELEASE_DEBIAN_TMP ]; then
RELEASE_DEBIAN=$RELEASE_DEBIAN_TMP
fi
COMPANY_NAME_TMP=${CFG[$PROJECT_NAME"_company-name"]} COMPANY_NAME_TMP=${CFG[$PROJECT_NAME"_company-name"]}
if [ -n $COMPANY_NAME_TMP ]; then if [ -n $COMPANY_NAME_TMP ]; then
COMPANY_NAME=$COMPANY_NAME_TMP COMPANY_NAME=$COMPANY_NAME_TMP
@@ -221,7 +231,7 @@ if [ -f $CONFIG_FILE ]; then
fi fi
done done
else else
echo '## Config file for love-release.sh ## echo "## Configuration file for love-release.sh ##
# Declare your projects here, to automate release process and not having to retype every options # Declare your projects here, to automate release process and not having to retype every options
# The name MUST be the same as your projects root directory # The name MUST be the same as your projects root directory
@@ -231,19 +241,20 @@ PROJECTS=()
declare -A CFG declare -A CFG
i=0 i=0
# CFG[${PROJECTS[i]}"_company-name"]="MyCompany" # CFG[${PROJECTS[i]}\"_company-name\"]=\"MyCompany\"
# CFG[${PROJECTS[i]}"_love-version"]="0.8.0" # CFG[${PROJECTS[i]}\"_love-version\"]=\"0.8.0\"
# CFG[${PROJECTS[i]}"_release-dir"]="releases" # CFG[${PROJECTS[i]}\"_release-dir\"]=\"releases\"
# CFG[${PROJECTS[i]}"_release-love"]=true # CFG[${PROJECTS[i]}\"_release-love\"]=true
# CFG[${PROJECTS[i]}"_release-osx"]=true # CFG[${PROJECTS[i]}\"_release-osx\"]=true
# CFG[${PROJECTS[i]}"_release-win32"]=true # CFG[${PROJECTS[i]}\"_release-win32\"]=true
# CFG[${PROJECTS[i]}"_release-win64"]=true # CFG[${PROJECTS[i]}\"_release-win64\"]=true
# ((i++))' > $CONFIG_FILE # CFG[${PROJECTS[i]}\"_release-debian\"]=true
# ((i++))" > $CONFIG_FILE
fi fi
## Parsing options ## ## Parsing options ##
while getoptex "h; l; m; w. r: u: v: refresh debug" "$@" while getoptex "h; d; l; m; w. r: u: v: refresh debug" "$@"
do do
if [ $OPTOPT = "h" ]; then # print help if [ $OPTOPT = "h" ]; then # print help
echo "$HELP" echo "$HELP"
@@ -261,6 +272,8 @@ do
RELEASE_WIN_32=true RELEASE_WIN_32=true
RELEASE_WIN_64=true RELEASE_WIN_64=true
fi fi
elif [ $OPTOPT = "d"]; then
RELEASE_DEBIAN=true
elif [ $OPTOPT = "r" ]; then elif [ $OPTOPT = "r" ]; then
RELEASE_DIR=$OPTARG RELEASE_DIR=$OPTARG
elif [ $OPTOPT = "u" ]; then elif [ $OPTOPT = "u" ]; then
@@ -285,11 +298,12 @@ for file in "$@"
do do
PROJECT_FILES="$PROJECT_FILES $file" PROJECT_FILES="$PROJECT_FILES $file"
done done
if [ $RELEASE_LOVE = false ] && [ $RELEASE_OSX = false ] && [ $RELEASE_WIN_32 = false ] && [ $RELEASE_WIN_64 = false ] && [ $CONFIG_FOUND = false ]; then if [ $RELEASE_LOVE = false ] && [ $RELEASE_OSX = false ] && [ $RELEASE_WIN_32 = false ] && [ $RELEASE_WIN_64 = false ] && [ $RELEASE_DEBIAN = false ] && [ $CONFIG_FOUND = false ]; then
RELEASE_LOVE=true RELEASE_LOVE=true
RELEASE_OSX=true RELEASE_OSX=true
RELEASE_WIN_32=true RELEASE_WIN_32=true
RELEASE_WIN_64=true RELEASE_WIN_64=true
RELEASE_DEBIAN=true
fi fi
@@ -357,6 +371,25 @@ if [ $LOVE_SUPPORT_WIN_64 = "1" ] && [ $RELEASE_WIN_64 = true ]; then
rm -rf love-$LOVE_VERSION-win-x64.zip love-$LOVE_VERSION-win-x64 rm -rf love-$LOVE_VERSION-win-x64.zip love-$LOVE_VERSION-win-x64
fi fi
## Debian package ##
if [ $RELEASE_DEBIAN = true ]; then
mkdir -p $PROJECT_NAME/{DEBIAN,usr/{bin,share/games}}
echo "Package: $PROJECT
Version:
Architecture: all
Maintainer: $COMPANY_NAME
Installed-Size:
Depends: love (>= $LOVE_VERSION)
Section: games
Priority: extra
Homepage:
Description: " > $PROJECT_NAME/DEBIAN/control
echo "#!/bin/bash
set -e
love /usr/share/games/$PROJECT_NAME/$PROJECT_NAME.love" > $PROJECT_NAME/usr/bin/$PROJECT_NAME
chmod +x $PROJECT_NAME/usr/bin/$PROJECT_NAME
fi
## Mac OS X ## ## Mac OS X ##
if [ $RELEASE_OSX = true ]; then if [ $RELEASE_OSX = true ]; then
if [ -f $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ]; then if [ -f $CACHE_DIR/love-$LOVE_VERSION-macosx-ub.zip ]; then
@@ -375,9 +408,9 @@ if [ $RELEASE_OSX = true ]; then
rm -rf $PROJECT_NAME-osx.zip 2> /dev/null rm -rf $PROJECT_NAME-osx.zip 2> /dev/null
mv love.app $PROJECT_NAME.app mv love.app $PROJECT_NAME.app
cp $PROJECT_NAME.love $PROJECT_NAME.app/Contents/Resources cp $PROJECT_NAME.love $PROJECT_NAME.app/Contents/Resources
echo '<?xml version="1.0" encoding="UTF-8"?> echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version="1.0"> <plist version=\"1.0\">
<dict> <dict>
<key>BuildMachineOSBuild</key> <key>BuildMachineOSBuild</key>
<string>11D50b</string> <string>11D50b</string>
@@ -449,8 +482,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string>NSApplication</string> <string>NSApplication</string>
</dict> </dict>
</plist> </plist>" > $PROJECT_NAME.app/Contents/Info.plist
' > $PROJECT_NAME.app/Contents/Info.plist
zip -qr $PROJECT_NAME-osx.zip $PROJECT_NAME.app zip -qr $PROJECT_NAME-osx.zip $PROJECT_NAME.app
rm -rf love-$LOVE_VERSION-macosx-ub.zip $PROJECT_NAME.app rm -rf love-$LOVE_VERSION-macosx-ub.zip $PROJECT_NAME.app
fi fi