2013-02-16 22:46:17 +00:00
|
|
|
#!/bin/sh
|
2012-10-21 20:38:19 +00:00
|
|
|
#
|
|
|
|
# this simply automates the steps to create a DMG we can ship
|
2013-02-15 09:17:27 +00:00
|
|
|
#
|
|
|
|
# run this from the top subsurface directory
|
|
|
|
|
2015-09-04 19:13:52 +00:00
|
|
|
# find the directory above the sources - typically ~/src
|
|
|
|
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd ../../.. && pwd )
|
|
|
|
|
2013-02-15 09:17:27 +00:00
|
|
|
# install location of yourway-create-dmg
|
2015-09-04 19:13:52 +00:00
|
|
|
# by default we assume it's next to subsurface in ~/src/yoursway-create-dmg
|
|
|
|
DMGCREATE=${DIR}/yoursway-create-dmg/create-dmg
|
2013-02-15 09:17:27 +00:00
|
|
|
|
2013-02-16 06:28:31 +00:00
|
|
|
# same git version magic as in the Makefile
|
2015-09-04 19:13:52 +00:00
|
|
|
# for the naming of volume and dmg we want the 3 digits of the full version number
|
|
|
|
VERSION=$(cd ${DIR}/subsurface; ./scripts/get-version linux)
|
2013-02-16 06:28:31 +00:00
|
|
|
|
|
|
|
# first build and install Subsurface and then clean up the staging area
|
2015-01-02 23:49:08 +00:00
|
|
|
rm -rf ./Subsurface.app
|
2015-09-04 19:13:52 +00:00
|
|
|
LIBRARY_PATH=${DIR}/install-root/lib make -j8
|
|
|
|
LIBRARY_PATH=${DIR}/install-root/lib make install
|
|
|
|
|
|
|
|
# now adjust a few references that macdeployqt appears to miss
|
|
|
|
EXECUTABLE=Subsurface.app/Contents/MacOS/Subsurface
|
2016-06-05 17:55:13 +00:00
|
|
|
for i in libssh libssrfmarblewidget libgit2 libGrantlee_TextDocument.dylib libGrantlee_Templates.dylib; do
|
2015-09-04 19:13:52 +00:00
|
|
|
OLD=$(otool -L ${EXECUTABLE} | grep $i | cut -d\ -f1 | tr -d "\t")
|
2016-06-05 17:55:13 +00:00
|
|
|
if [ ! -z ${OLD} ] ; then
|
|
|
|
cp ${DIR}/install-root/lib/$(basename ${OLD}) Subsurface.app/Contents/Frameworks
|
|
|
|
SONAME=$(basename $OLD)
|
|
|
|
install_name_tool -change ${OLD} @executable_path/../Frameworks/${SONAME} ${EXECUTABLE}
|
|
|
|
if [[ "$i" = "libssh" ]] ; then
|
|
|
|
LIBSSH=$(basename ${OLD})
|
|
|
|
fi
|
|
|
|
if [[ "$i" = "libgit2" && ! -z ${LIBSSH} ]] ; then
|
2017-01-01 04:34:54 +00:00
|
|
|
CURLIBSSH=$(otool -L Subsurface.app/Contents/Frameworks/${SONAME} | grep libssh | cut -d\ -f1 | tr -d "\t")
|
|
|
|
install_name_tool -change ${CURLIBSSH} @executable_path/../Frameworks/${LIBSSH} Subsurface.app/Contents/Frameworks/${SONAME}
|
2016-06-05 17:55:13 +00:00
|
|
|
fi
|
2015-11-08 23:14:03 +00:00
|
|
|
fi
|
|
|
|
done
|
2015-12-03 20:46:30 +00:00
|
|
|
RPATH=$(otool -L ${EXECUTABLE} | grep rpath | cut -d\ -f1 | tr -d "\t" | cut -b 8- )
|
|
|
|
for i in ${RPATH}; do
|
|
|
|
install_name_tool -change @rpath/$i @executable_path/../Frameworks/$i ${EXECUTABLE}
|
|
|
|
done
|
2016-06-05 17:55:13 +00:00
|
|
|
MARBLELIB=$(ls Subsurface.app/Contents/Frameworks/libssrfmarblewidget*dylib)
|
|
|
|
RPATH=$(otool -L ${MARBLELIB} | grep rpath | cut -d\ -f1 | tr -d "\t" | cut -b 8- )
|
|
|
|
for i in ${RPATH}; do
|
|
|
|
install_name_tool -change @rpath/$i @executable_path/../Frameworks/$i ${MARBLELIB}
|
|
|
|
done
|
2015-11-08 23:14:03 +00:00
|
|
|
|
|
|
|
# next deal with libGrantlee
|
2016-06-05 17:55:13 +00:00
|
|
|
LIBG=$(ls Subsurface.app/Contents/Frameworks/libGrantlee_Templates*dylib)
|
2015-11-08 23:14:03 +00:00
|
|
|
for i in QtScript.framework/Versions/5/QtScript QtCore.framework/Versions/5/QtCore ; do
|
|
|
|
install_name_tool -change @rpath/$i @executable_path/../Frameworks/$i ${LIBG}
|
2015-09-04 19:13:52 +00:00
|
|
|
done
|
|
|
|
|
|
|
|
# it seems the compiler in XCode 4.6 doesn't build Grantlee5 correctly,
|
|
|
|
# so cheat and copy over pre-compiled binaries created with a newer compiler
|
|
|
|
# and adjust their references to the Grantlee template library
|
|
|
|
#
|
|
|
|
# -disabled for now as this is still under more investigation-
|
|
|
|
# cp -a /Users/hohndel/src/tmp/Subsurface.app/Contents Subsurface.app/
|
2015-11-08 23:14:03 +00:00
|
|
|
cp ${DIR}/tmp/Subsurface.app/Contents/Frameworks/lib{sql,usb,zip}* Subsurface.app/Contents/Frameworks
|
2015-09-04 19:13:52 +00:00
|
|
|
|
|
|
|
# clean up shared library dependency in the Grantlee plugins
|
|
|
|
for i in Subsurface.app/Contents/PlugIns/grantlee/5.0/*.so; do
|
|
|
|
OLD=$(otool -L $i | grep libGrantlee_Templates | cut -d\ -f1 | tr -d "\t")
|
|
|
|
SONAME=$(basename $OLD )
|
|
|
|
install_name_tool -change ${OLD} @executable_path/../Frameworks/${SONAME} $i;
|
2015-11-08 23:14:03 +00:00
|
|
|
mv $i Subsurface.app/Contents/PlugIns/grantlee
|
2015-09-04 19:13:52 +00:00
|
|
|
done
|
2015-11-08 23:14:03 +00:00
|
|
|
rmdir Subsurface.app/Contents/PlugIns/grantlee/5.0
|
2013-02-15 09:17:27 +00:00
|
|
|
|
2013-12-15 19:19:01 +00:00
|
|
|
# copy things into staging so we can create a nice DMG
|
|
|
|
rm -rf ./staging
|
|
|
|
mkdir ./staging
|
|
|
|
cp -a ./Subsurface.app ./staging
|
2013-02-15 09:17:27 +00:00
|
|
|
|
2015-09-04 19:13:52 +00:00
|
|
|
sh ${DIR}/subsurface/packaging/macosx/sign
|
2013-02-15 09:17:27 +00:00
|
|
|
|
2013-02-16 23:12:04 +00:00
|
|
|
if [ -f ./Subsurface-$VERSION.dmg ]; then
|
|
|
|
rm ./Subsurface-$VERSION.dmg.bak
|
|
|
|
mv ./Subsurface-$VERSION.dmg ./Subsurface-$VERSION.dmg.bak
|
2012-10-21 20:38:19 +00:00
|
|
|
fi
|
2013-02-15 09:17:27 +00:00
|
|
|
|
2015-09-04 19:13:52 +00:00
|
|
|
$DMGCREATE --background ${DIR}/subsurface/packaging/macosx/DMG-Background.png \
|
2013-02-16 23:12:04 +00:00
|
|
|
--window-size 500 300 --icon-size 96 --volname Subsurface-$VERSION \
|
2013-02-15 09:17:27 +00:00
|
|
|
--app-drop-link 380 205 \
|
2015-09-04 19:13:52 +00:00
|
|
|
--volicon ${DIR}/subsurface/packaging/macosx/Subsurface.icns \
|
2013-02-16 23:12:04 +00:00
|
|
|
--icon "Subsurface" 110 205 ./Subsurface-$VERSION.dmg ./staging
|