#!/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"