84 lines
2.5 KiB
Bash
Executable File
84 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# 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
|
|
|
|
# create a startup script that will change to the binary directory
|
|
# before starting barrier
|
|
printf "%s\n" "#!/bin/sh" "cd \$(dirname \$0)" "exec ./barrier" > barrier.sh
|
|
chmod +x barrier.sh
|
|
|
|
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_DMB created successfully"
|