barrier/dist/macos/bundle/build_installer.sh.in
2021-09-22 22:58:15 +00:00

84 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# add warning for users running manually
warn() { tput bold; tput setaf 3; echo "$@"; tput sgr0 ; }
warn "The scripts build_installer.sh and reref_dylibs.sh have been deprecated."
warn "Please use build_dist.sh instead to deploy using macdeployqt"
# change this to rename the installer package
B_DMG="Barrier-@BARRIER_VERSION@.dmg"
cd "$( dirname "$0" )"
OWNDIR="$( pwd )"
B_REREF_SCRIPT="$OWNDIR/reref_dylibs.sh"
if [ ! -x "$B_REREF_SCRIPT" ]; then
echo "Missing script: $B_REREF_SCRIPT"
exit 1
fi
# remove any old copies so there's no confusion about whether this
# process completes successfully or not
rm -rf temp.dmg "$B_DMG"
cd Barrier.app/Contents 2>/dev/null
if [ $? -ne 0 ]; then
echo "Please make sure that the build completed successfully"
echo "before trying to create the installer."
exit 1
fi
# MacOS folder holds the executables, non-system libraries,
# and the startup script
rm -rf MacOS
mkdir MacOS || exit 1
cd MacOS || exit 1
# copy all executables
cp @CMAKE_RUNTIME_OUTPUT_DIRECTORY@/* . || exit 1
# copy the qt platform plugin
# TODO: this is hacky and will probably break if there is more than one qt
# version installed. need a better way to find this library
B_COCOA=$(find /usr/local/Cellar/qt -type f -name libqcocoa.dylib | head -1)
if [ "x$B_COCOA" = "x" ]; then
B_COCOA=$(find /opt/local/libexec/qt5/plugins -type f -name libqcocoa.dylib | head -1)
fi
if [ "x$B_COCOA" = "x" ]; then
echo "Could not find cocoa platform plugin"
exit 1
fi
mkdir platforms
cp $B_COCOA platforms/ || exit 1
# make sure we can r/w all these binaries
chmod -R u+rw * || exit 1
# only one executable (barrier) needs non-system libraries although it's
# libraries can call each other. use a recursive script to handle the
# re-referencing
$B_REREF_SCRIPT barrier || exit 1
# the cocoa platform plugin also needs to know where to find the qt libraries.
# because it exists in a subdirectory we append ../ to the relative path of the
# libraries in its metadata
$B_REREF_SCRIPT platforms/libqcocoa.dylib ../ || exit 1
echo "Barrier.app created successfully"
# sanity check so we don't distribute a dmg with debug symbols
if [ "@CMAKE_BUILD_TYPE@" != "Release" ]; then
echo "dmg only created for Release builds"
exit 1
fi
# create the DMG to be distributed in build/bundle
cd ../../..
hdiutil create -size 64m -fs HFS+ -volname "Barrier" temp.dmg || exit 1
hdiutil attach temp.dmg -mountpoint mnt || exit 1
cp -r Barrier.app mnt/ || exit 1
hdiutil detach mnt || exit 1
hdiutil convert temp.dmg -format UDZO -o "$B_DMG" || exit 1
rm temp.dmg
echo "dmg $B_DMG created successfully"