Add Debian module

This commit is contained in:
Antonin Décimo
2014-08-19 14:40:03 +02:00
parent 6d641c951c
commit 5fb41ff660
4 changed files with 125 additions and 3 deletions

View File

@@ -81,7 +81,7 @@ to set the game icon on Windows.
`--package-name` Set the name of the package and the command that will be used to launch your game.
By default, it is the name of your project converted to lowercase,
with eventual spaces replaced by dashes.
`--version` Set the version of your package.
`--package-version` Set the version of your package.
#### ANDROID
Note that every argument passed to the options should be alphanumerical,

View File

@@ -103,7 +103,7 @@ Set the name of the package and the command that will be use to launch your game
By default, it is the name of your project converted to lowercase,
with eventual spaces replaced by dashes.
.TP
.B \-\-version \fIversion\fR
.B \-\-package\-version \fIversion\fR
Set the version of your package.
.SH ANDROID
Note that every argument passed to the options should be alphanumerical,

View File

@@ -14,15 +14,19 @@ LOVE_VERSION=0.9.1
## - a colon ":" if it requires an argument
## SCRIPT_ARGS="a; osname:"
SCRIPT_ARGS="l; w."
SCRIPT_ARGS="l; d; w."
## Windows
SCRIPT_ARGS="icon: $SCRIPT_ARGS"
## Debian
SCRIPT_ARGS="package-version: maintainer-name: maintainer-email: homepage: description: package-name: $SCRIPT_ARGS"
## Add a short summary of your platform script here
## SHORT_HELP=" -a Create an executable for a
## --osname Create an executable for osname"
SHORT_HELP=" -l Create a plain Love file
-d Create a Debian package
-w, Create a Windows application
-w32 Create a Windows x86 application
-w64 Create a Windows x64 application"
@@ -184,6 +188,8 @@ do
## fi
if [ "$OPTOPT" = "l" ]; then
source "$PLATFORMS_DIR"/love.sh
elif [ "$OPTOPT" = "d" ]; then
source "$PLATFORMS_DIR"/debian.sh
elif [ "$OPTOPT" = "w" ]; then
if [ "$OPTARG" = "32" ]; then
RELEASE_WIN_32=true

116
scripts/debian.sh Normal file
View File

@@ -0,0 +1,116 @@
# Debian package
init_module "Debian"
# Options
package_name_defined_argument=false
while getoptex "$SCRIPT_ARGS" "$@"
do
if [ "$OPTOPT" = "package-version" ]; then
PACKAGE_VERSION=$OPTARG
elif [ "$OPTOPT" = "homepage" ]; then
PROJECT_HOMEPAGE=$OPTARG
elif [ "$OPTOPT" = "description" ]; then
PROJECT_DESCRIPTION=$OPTARG
elif [ "$OPTOPT" = "maintainer-name" ]; then
MAINTAINER_NAME=$OPTARG
elif [ "$OPTOPT" = "maintainer-email" ]; then
MAINTAINER_EMAIL=$OPTARG
elif [ "$OPTOPT" = "package-name" ]; then
PACKAGE_NAME=$OPTARG
package_name_defined_argument=true
fi
done
if [ "$package_name_defined_argument" = false ]; then
PACKAGE_NAME=$(echo $PROJECT_NAME | sed -e 's/[^-a-zA-Z0-9_]/-/g')
fi
create_love_file
# Debian
MISSING_INFO=0
ERROR_MSG="Could not build Debian package."
if [ -z "$PACKAGE_VERSION" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG\nMissing project's version. Use --package-version."
fi
if [ -z "$PROJECT_HOMEPAGE" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG\nMissing project's homepage. Use --homepage."
fi
if [ -z "$PROJECT_DESCRIPTION" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG\nMissing project's description. Use --description."
fi
if [ -z "$MAINTAINER_NAME" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG\nMissing maintainer's name. Use --maintainer-name."
fi
if [ -z "$MAINTAINER_EMAIL" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG\nMissing maintainer's email. Use --maintainer-email."
fi
if [ "$MISSING_INFO" -eq 1 ]; then
exit_module "$MISSING_INFO" "$ERROR_MSG"
fi
TEMP=`mktemp -d`
mkdir -p $TEMP/DEBIAN
echo "Package: $PACKAGE_NAME" > $TEMP/DEBIAN/control
echo "Version: $PACKAGE_VERSION" >> $TEMP/DEBIAN/control
echo "Architecture: all" >> $TEMP/DEBIAN/control
echo "Maintainer: $MAINTAINER_NAME <$MAINTAINER_EMAIL>" >> $TEMP/DEBIAN/control
echo "Installed-Size: $(echo "$(stat -c %s "$PROJECT_NAME".love) / 1024" | bc)" >> $TEMP/DEBIAN/control
echo "Depends: love (>= $LOVE_VERSION)" >> $TEMP/DEBIAN/control
echo "Priority: extra" >> $TEMP/DEBIAN/control
echo "Homepage: $PROJECT_HOMEPAGE" >> $TEMP/DEBIAN/control
echo "Description: $PROJECT_DESCRIPTION" >> $TEMP/DEBIAN/control
chmod 0644 $TEMP/DEBIAN/control
DESKTOP=$TEMP/usr/share/applications/"$PACKAGE_NAME".desktop
mkdir -p $TEMP/usr/share/applications
echo "[Desktop Entry]" > $DESKTOP
echo "Name=$PROJECT_NAME" >> $DESKTOP
echo "Comment=$PROJECT_DESCRIPTION" >> $DESKTOP
echo "Exec=$PACKAGE_NAME" >> $DESKTOP
echo "Type=Application" >> $DESKTOP
echo "Categories=Game;" >> $DESKTOP
echo "Icon=love" >> $DESKTOP
chmod 0644 $DESKTOP
PACKAGE_DIR=/usr/share/games/"$PACKAGE_NAME"/
PACKAGE_LOC=$PACKAGE_NAME-$PACKAGE_VERSION.love
mkdir -p $TEMP"$PACKAGE_DIR"
cp "$LOVE_FILE" $TEMP"$PACKAGE_DIR""$PACKAGE_LOC"
chmod 0644 $TEMP"$PACKAGE_DIR""$PACKAGE_LOC"
BIN_LOC=/usr/bin/
mkdir -p $TEMP$BIN_LOC
echo "#!/usr/bin/env bash" > $TEMP$BIN_LOC"$PACKAGE_NAME"
echo "set -e" >> $TEMP$BIN_LOC"$PACKAGE_NAME"
echo "love $PACKAGE_DIR$PACKAGE_LOC" >> $TEMP$BIN_LOC"$PACKAGE_NAME"
chmod 0755 $TEMP$BIN_LOC"$PACKAGE_NAME"
cd $TEMP
for line in $(find usr/ -type f); do
md5sum $line >> $TEMP/DEBIAN/md5sums
done
chmod 0644 $TEMP/DEBIAN/md5sums
for line in $(find usr/ -type d); do
chmod 0755 $line
done
fakeroot dpkg-deb -b $TEMP "$RELEASE_DIR"/"$PACKAGE_NAME"-"$PACKAGE_VERSION"_all.deb
cd "$RELEASE_DIR"
rm -rf $TEMP
remove_love_file
exit_module