Overhaul the packaging scripts:

- Ingame mod versions now always match the package version
- Adds macOS compatibility
- Removes trait and lua api docs pending future overhaul
- Individual platform packages can be compiled directly
- Improved error checking
- Removes unnecessary redundancy and indirection
This commit is contained in:
Paul Chote
2017-04-30 12:24:14 +00:00
parent 3111b2cf9b
commit 696b48b7bf
11 changed files with 218 additions and 296 deletions

View File

@@ -1,22 +1,32 @@
#!/bin/bash
# OpenRA packaging script for Debian based distributions
LINUX_BUILD_ROOT="$(readlink -f "$2")"
DEB_BUILD_ROOT=./root
command -v fakeroot >/dev/null 2>&1 || { echo >&2 "Debian packaging requires fakeroot."; exit 1; }
command -v dpkg-deb >/dev/null 2>&1 || { echo >&2 "Debian packaging requires dpkg-deb."; exit 1; }
LIBDIR=/usr/lib/openra
DOCDIR=/usr/share/doc/openra
LINTIANORDIR=/usr/share/lintian/overrides
E_BADARGS=85
if [ $# -ne "3" ]
then
echo "Usage: `basename $0` version root-dir outputdir"
exit $E_BADARGS
fi
DATE=`echo $1 | grep -o "[0-9]\\+-\\?[0-9]\\?"`
# Set the working dir to the location of this script
cd $(dirname $0)
TAG="${1}"
LINUX_BUILD_ROOT="${2}"
OUTPUTDIR="${3}"
DEB_BUILD_ROOT="$(pwd)/build"
LIBDIR=/usr/lib/openra
DOCDIR=/usr/share/doc/openra
LINTIANORDIR=/usr/share/lintian/overrides
E_BADARGS=85
DATE=`echo ${TAG} | grep -o "[0-9]\\+-\\?[0-9]\\?"`
TYPE=`echo $1 | grep -o "^[a-z]*"`
VERSION="$DATE.$TYPE"
VERSION="${DATE}.${TYPE}"
# Copy template files into a clean build directory (required)
mkdir "${DEB_BUILD_ROOT}"
@@ -62,21 +72,32 @@ rm "${DEB_BUILD_ROOT}/${LIBDIR}/COPYING"
chmod -R g-w "${DEB_BUILD_ROOT}"
# Create the control file
PACKAGE_SIZE=`du --apparent-size -c "${DEB_BUILD_ROOT}/usr" | grep "total" | awk '{print $1}'`
sed "s/{VERSION}/$VERSION/" DEBIAN/control | sed "s/{SIZE}/$PACKAGE_SIZE/" > "${DEB_BUILD_ROOT}/DEBIAN/control"
if [[ "$OSTYPE" == "darwin"* ]]; then
# BSD du doesn't have an --apparent-size flag, so we must accept a different result
PACKAGE_SIZE=`du -c "${DEB_BUILD_ROOT}/usr" | grep "total" | awk '{print $1}'`
else
PACKAGE_SIZE=`du --apparent-size -c "${DEB_BUILD_ROOT}/usr" | grep "total" | awk '{print $1}'`
fi
sed "s/{VERSION}/${VERSION}/" DEBIAN/control | sed "s/{SIZE}/${PACKAGE_SIZE}/" > "${DEB_BUILD_ROOT}/DEBIAN/control"
# Build it in the temp directory, but place the finished deb in our starting directory
pushd "${DEB_BUILD_ROOT}" >/dev/null
# Calculate md5sums and clean up the ./usr/ part of them
find . -type f -not -path "./DEBIAN/*" -print0 | xargs -0 -n1 md5sum | sed 's|\./usr/|usr/|' > DEBIAN/md5sums
if [[ "$OSTYPE" == "darwin"* ]]; then
find . -type f -not -path "./DEBIAN/*" -print0 | xargs -0 -n1 openssl md5 | awk '{ print $2, substr($1, 7, length($1)-8) }' > DEBIAN/md5sums
else
find . -type f -not -path "./DEBIAN/*" -print0 | xargs -0 -n1 md5sum | sed 's|\./usr/|usr/|' > DEBIAN/md5sums
fi
chmod 0644 DEBIAN/md5sums
# Replace any dashes in the version string with periods
PKGVERSION=`echo $1 | sed "s/-/\\./g"`
PKGVERSION=`echo ${TAG} | sed "s/-/\\./g"`
# Start building, the file should appear in the output directory
fakeroot dpkg-deb -b . "$3/openra_${PKGVERSION}_all.deb"
fakeroot dpkg-deb -b . "${OUTPUTDIR}/openra_${PKGVERSION}_all.deb"
# Clean up
popd >/dev/null