mac:build a fancy .dmg
This commit is contained in:
@@ -110,7 +110,9 @@ EXPATLIB="$(cmake .. -LA -N | grep "pkgcfg_lib_EXPAT_expat" | cut -d "=" -f2)"
|
|||||||
CODESIGNID="$(cmake .. -LA -N | grep "CODESIGNID" | cut -d "=" -f2)"
|
CODESIGNID="$(cmake .. -LA -N | grep "CODESIGNID" | cut -d "=" -f2)"
|
||||||
NOTARY="$(cmake .. -LA -N | grep "NOTARY" | cut -d "=" -f2)"
|
NOTARY="$(cmake .. -LA -N | grep "NOTARY" | cut -d "=" -f2)"
|
||||||
FANCY_DMG="$(cmake .. -LA -N | grep "FANCY_DMG" | cut -d "=" -f2)"
|
FANCY_DMG="$(cmake .. -LA -N | grep "FANCY_DMG" | cut -d "=" -f2)"
|
||||||
echo ${FANCY_DMG}
|
if [[ -n ${FANCY_DMG} ]] ; then
|
||||||
|
echo "Fancy .dmg build is ON."
|
||||||
|
fi
|
||||||
|
|
||||||
APP="${PROJECT_NAME}.app"
|
APP="${PROJECT_NAME}.app"
|
||||||
CONTENTS="${APP}/Contents"
|
CONTENTS="${APP}/Contents"
|
||||||
@@ -134,13 +136,13 @@ msg "Copying binary executable files."
|
|||||||
ditto "${CMAKE_BUILD_TYPE}/MacOS" "${MACOS}"
|
ditto "${CMAKE_BUILD_TYPE}/MacOS" "${MACOS}"
|
||||||
|
|
||||||
msg "Copying Resources directory."
|
msg "Copying Resources directory."
|
||||||
mv "${CMAKE_BUILD_TYPE}/Resources/share/AboutThisBuild.txt" "${RESOURCES}"
|
mv AboutThisBuild.txt "${RESOURCES}"
|
||||||
ditto "${CMAKE_BUILD_TYPE}/Resources" "${RESOURCES}"
|
ditto "${CMAKE_BUILD_TYPE}/Resources" "${RESOURCES}"
|
||||||
|
|
||||||
echo "\n--------\n" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "\n--------\n" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
echo "Bundle system: $(sysctl -n machdep.cpu.brand_string)" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "Bundle system: $(sysctl -n machdep.cpu.brand_string)" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
echo "Bundle OS: $(sw_vers -productName) $(sw_vers -productVersion) $(sw_vers -buildVersion) $(uname -mrs)" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "Bundle OS: $(sw_vers -productName) $(sw_vers -productVersion) $(sw_vers -buildVersion) $(uname -mrs)" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
echo "Bundle date: $(date -Ru) ZULU" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "Bundle date: $(date -Ru) UTC" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
echo "Bundle epoch: $(date +%s)" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "Bundle epoch: $(date +%s)" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
echo "Bundle UUID: $(uuidgen|tr 'A-Z' 'a-z')" >> "${RESOURCES}/AboutThisBuild.txt"
|
echo "Bundle UUID: $(uuidgen|tr 'A-Z' 'a-z')" >> "${RESOURCES}/AboutThisBuild.txt"
|
||||||
|
|
||||||
@@ -268,7 +270,7 @@ install_name_tool -delete_rpath RawTherapee.app/Contents/Frameworks "${EXECUTABL
|
|||||||
install_name_tool -add_rpath @executable_path "${EXECUTABLE}"-cli
|
install_name_tool -add_rpath @executable_path "${EXECUTABLE}"-cli
|
||||||
|
|
||||||
# Codesign the app
|
# Codesign the app
|
||||||
if ! test -z "${CODESIGNID}" ; then
|
if [ -n "${CODESIGNID}" ] ; then
|
||||||
msg "Codesigning Application."
|
msg "Codesigning Application."
|
||||||
install -m 0644 "${PROJECT_SOURCE_DATA_DIR}"/rt.entitlements "${CMAKE_BUILD_TYPE}"/rt.entitlements
|
install -m 0644 "${PROJECT_SOURCE_DATA_DIR}"/rt.entitlements "${CMAKE_BUILD_TYPE}"/rt.entitlements
|
||||||
plutil -convert binary1 "${CMAKE_BUILD_TYPE}"/rt.entitlements
|
plutil -convert binary1 "${CMAKE_BUILD_TYPE}"/rt.entitlements
|
||||||
@@ -281,7 +283,7 @@ spctl -a -vvvv "${APP}"
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Notarize the app
|
# Notarize the app
|
||||||
if ! test -z "$NOTARY" ; then
|
if [ -n "$NOTARY" ] ; then
|
||||||
msg "Notarizing the application:"
|
msg "Notarizing the application:"
|
||||||
ditto -c -k --sequesterRsrc --keepParent "${APP}" "${APP}.zip"
|
ditto -c -k --sequesterRsrc --keepParent "${APP}" "${APP}.zip"
|
||||||
uuid=`xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee.RawTherapee" ${NOTARY} --file "${APP}.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'`
|
uuid=`xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee.RawTherapee" ${NOTARY} --file "${APP}.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'`
|
||||||
@@ -312,6 +314,7 @@ local srcDir="$(mktemp -dt $$)"
|
|||||||
|
|
||||||
msg "Preparing disk image sources at ${srcDir}:"
|
msg "Preparing disk image sources at ${srcDir}:"
|
||||||
cp -R "${APP}" "${srcDir}"
|
cp -R "${APP}" "${srcDir}"
|
||||||
|
cp "${RESOURCES}"/share/LICENSE.txt "${srcDir}"
|
||||||
ln -s /Applications "${srcDir}"
|
ln -s /Applications "${srcDir}"
|
||||||
|
|
||||||
# Web bookmarks
|
# Web bookmarks
|
||||||
@@ -319,8 +322,10 @@ function CreateWebloc {
|
|||||||
defaults write "${srcDir}/$1" URL "$2"
|
defaults write "${srcDir}/$1" URL "$2"
|
||||||
mv "${srcDir}/$1".{plist,webloc}
|
mv "${srcDir}/$1".{plist,webloc}
|
||||||
}
|
}
|
||||||
CreateWebloc 'Website' 'https://www.rawtherapee.com/'
|
CreateWebloc 'Website' 'https://www.rawtherapee.com/'
|
||||||
CreateWebloc 'Manual' 'https://rawpedia.rawtherapee.com/'
|
CreateWebloc 'Documentation' 'https://rawpedia.rawtherapee.com/'
|
||||||
|
CreateWebloc 'Forum' 'https://discuss.pixls.us/c/software/rawtherapee'
|
||||||
|
CreateWebloc 'Report Bug' 'https://github.com/Beep6581/RawTherapee/issues/new'
|
||||||
|
|
||||||
# Disk image name
|
# Disk image name
|
||||||
dmg_name="${PROJECT_NAME// /_}_OSX_${MINIMUM_SYSTEM_VERSION}_${PROC_BIT_DEPTH}_${PROJECT_FULL_VERSION}"
|
dmg_name="${PROJECT_NAME// /_}_OSX_${MINIMUM_SYSTEM_VERSION}_${PROC_BIT_DEPTH}_${PROJECT_FULL_VERSION}"
|
||||||
@@ -330,10 +335,25 @@ dmg_name="${dmg_name}_${lower_build_type}"
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg "Creating disk image:"
|
msg "Creating disk image:"
|
||||||
|
if [ ! -z ${FANCY_DMG} ] ; then
|
||||||
|
echo "Building Fancy .dmg"
|
||||||
|
cp -R "${PROJECT_SOURCE_DATA_DIR}/rtdmg.icns" "${srcDir}/.VolumeIcon.icns"
|
||||||
|
cp -R "${PROJECT_SOURCE_DATA_DIR}/rtdmg-bkgd.png" "${srcDir}/.background/background.png"
|
||||||
|
SetFile -c incC "${srcDir}/.VolumeIcon.icns"
|
||||||
|
create-dmg ${dmg_name}.dmg "${srcDir}" \
|
||||||
|
--volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" \
|
||||||
|
--volicon "${srcDir}/.VolumeIcon.icns" \
|
||||||
|
--sandbox-safe \
|
||||||
|
--no-internet-enable \
|
||||||
|
--eula LICENSE.txt \
|
||||||
|
--hdiutil-verbose \
|
||||||
|
--rez /Library/Developer/CommandLineTools/usr/bin/Rez
|
||||||
|
else
|
||||||
hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg"
|
hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg"
|
||||||
|
fi
|
||||||
|
|
||||||
# Sign disk image
|
# Sign disk image
|
||||||
if ! test -z "$CODESIGNID" ; then
|
if [ -n "$CODESIGNID" ] ; then
|
||||||
codesign --deep --force -v -s "${CODESIGNID}" --timestamp "${dmg_name}.dmg"
|
codesign --deep --force -v -s "${CODESIGNID}" --timestamp "${dmg_name}.dmg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -374,4 +394,4 @@ CreateDmg
|
|||||||
msg "Finishing build:"
|
msg "Finishing build:"
|
||||||
echo "Script complete."
|
echo "Script complete."
|
||||||
#
|
#
|
||||||
# TODO filter out the benign errors; Build a fancy dmg
|
# TODO filter out the benign errors
|
||||||
|
Reference in New Issue
Block a user