X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=scripts%2Fbuild%2Fmacosx_makePackage.sh;h=a359ecd12c824f24606b2ecb036fe60e3bed2a13;hb=f09a86ab1cc01a80aa6fd52a875920e18d1d3a5b;hp=a9326c0ad19b5f24404f7cf6b852261e9e1dce84;hpb=d6888a62baaa3cbb5fcf461aafa1fbf5197c4f49;p=quassel.git diff --git a/scripts/build/macosx_makePackage.sh b/scripts/build/macosx_makePackage.sh index a9326c0a..a359ecd1 100755 --- a/scripts/build/macosx_makePackage.sh +++ b/scripts/build/macosx_makePackage.sh @@ -1,4 +1,7 @@ #!/bin/bash +# Don't consider packaging a success if any commands fail +# See http://redsymbol.net/articles/unofficial-bash-strict-mode/ +set -euo pipefail myname=$0 if [ -s "$myname" ] && [ -x "$myname" ]; then @@ -41,31 +44,39 @@ if [ ! -f "$mypath" ]; then fi SCRIPTDIR=$(dirname $mypath) -QUASSEL_VERSION=$(git-describe) +QUASSEL_VERSION=$(git describe) BUILDTYPE=$1 # check the working dir -WORKINGDIR=$2 -if [[ ! -n $2 ]]; then - WORKINGDIR="." -fi +# Default to "." using Bash default-value syntax +WORKINGDIR="${2:-.}" WORKINGDIR="${WORKINGDIR}/" PACKAGETMPDIR="${WORKINGDIR}PACKAGE_TMP_DIR_${BUILDTYPE}" QUASSEL_DMG="Quassel${BUILDTYPE}_MacOSX-x86_64_${QUASSEL_VERSION}.dmg" +# Default to null string +if [[ -z ${3:-} ]]; then + ADDITIONAL_PLUGINS="" +else + # Options provided, append to list + ADDITIONAL_PLUGINS=",$3" +fi + +echo "ADDITIONAL_PLUGINS: ${ADDITIONAL_PLUGINS}" + mkdir $PACKAGETMPDIR case $BUILDTYPE in "Client") cp -r ${WORKINGDIR}Quassel\ Client.app ${PACKAGETMPDIR}/ - ${SCRIPTDIR}/macosx_DeployApp.py --plugins=qcocoa "${PACKAGETMPDIR}/Quassel Client.app" + ${SCRIPTDIR}/macosx_DeployApp.py --plugins=qcocoa,qgenericbearer,qcorewlanbearer,qmacstyle${ADDITIONAL_PLUGINS} "${PACKAGETMPDIR}/Quassel Client.app" ;; "Core") cp ${WORKINGDIR}quasselcore ${PACKAGETMPDIR}/ - ${SCRIPTDIR}/macosx_DeployApp.py --nobundle --plugins=qsqlite,qsqlpsql ${PACKAGETMPDIR} + ${SCRIPTDIR}/macosx_DeployApp.py --nobundle --plugins=qsqlite,qsqlpsql${ADDITIONAL_PLUGINS} ${PACKAGETMPDIR} ;; "Mono") cp -r ${WORKINGDIR}Quassel.app ${PACKAGETMPDIR}/ - ${SCRIPTDIR}/macosx_DeployApp.py --plugins=qsqlite,qsqlpsql,qcocoa "${PACKAGETMPDIR}/Quassel.app" + ${SCRIPTDIR}/macosx_DeployApp.py --plugins=qsqlite,qsqlpsql,qcocoa,qgenericbearer,qcorewlanbearer,qmacstyle${ADDITIONAL_PLUGINS} "${PACKAGETMPDIR}/Quassel.app" ;; *) echo >&2 "Valid parameters are \"Client\", \"Core\", or \"Mono\"." @@ -73,5 +84,38 @@ case $BUILDTYPE in exit 1 ;; esac + +echo "Creating macOS disk image with hdiutil: 'Quassel ${BUILDTYPE} - ${QUASSEL_VERSION}'" + +# hdiutil seems to have a bit of a reputation for failing to create disk images +# for various reasons. +# +# If you've come here to see why on earth your macOS build is failing despite +# making changes entirely unrelated to macOS, you have my sympathy. +# +# There are two main approaches: +# +# 1. Let hdiutil calculate a size automatically +# +# 2. Separately calculate the size with a margin of error, then specify this +# to hdiutil during disk image creation. +# +# Both seem to have caused issues, but in recent tests, option #1 seemed more +# reliable. +# +# Option 1: + hdiutil create -srcfolder ${PACKAGETMPDIR} -format UDBZ -volname "Quassel ${BUILDTYPE} - ${QUASSEL_VERSION}" "${WORKINGDIR}${QUASSEL_DMG}" >/dev/null + +# If hdiutil changes over time and fails often, you can try the other option. +# +# Option 2: +# +#PACKAGESIZE_MARGIN="1.1" +#PACKAGESIZE=$(echo "$(du -ms ${PACKAGETMPDIR} | cut -f1) * $PACKAGESIZE_MARGIN" | bc) +#echo "PACKAGESIZE: $PACKAGESIZE MB" +#hdiutil create -srcfolder ${PACKAGETMPDIR} -format UDBZ -size ${PACKAGESIZE}M -volname "Quassel ${BUILDTYPE} - ${QUASSEL_VERSION}" "${WORKINGDIR}${QUASSEL_DMG}" >/dev/null + + +# Regardless of choice, clean up the packaging temporary directory rm -rf ${PACKAGETMPDIR}