diff --git a/package/osx/make_dmg.sh b/package/osx/make_dmg.sh index 0cd6a3867..5b06cd9f3 100755 --- a/package/osx/make_dmg.sh +++ b/package/osx/make_dmg.sh @@ -1,53 +1,55 @@ #!/bin/bash +set -euo pipefail # Assembles an installation bundle from a built copy of Slic3r. # Requires PAR::Packer to be installed for the version of # perl copied. # Adapted from script written by bubnikv for Prusa3D. # Run from slic3r repo root directory. -SLIC3R_VERSION=$(grep "VERSION" xs/src/libslic3r/libslic3r.h | awk -F\" '{print $2}') - -if [ "$#" -ne 1 ]; then - echo "Usage: $(basename $0) dmg_name" - exit 1; -fi WD=$(dirname $0) +appname=Slic3r + # Determine if this is a tagged (release) commit. # Change the build id accordingly. -if [ $(git describe &>/dev/null) ]; then - TAGGED=true +if [ $(git describe --exact-match &>/dev/null) ]; then + echo "This is a tagged build" SLIC3R_BUILD_ID=$(git describe) else - TAGGED=false - SLIC3R_BUILD_ID=${SLIC3R_VERSION} -fi -if [ -z ${GIT_BRANCH+x} ] && [ -z ${APPVEYOR_REPO_BRANCH+x} ]; then - current_branch=$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!') -else - current_branch="unknown" - if [ ! -z ${GIT_BRANCH+x} ]; then - echo "Setting to GIT_BRANCH" - current_branch=$(echo $GIT_BRANCH | cut -d / -f 2) + # Get the current branch + if [ -z ${GIT_BRANCH+x} ] && [ -z ${APPVEYOR_REPO_BRANCH+x} ]; then + current_branch=$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!') + else + current_branch="unknown" + if [ ! -z ${GIT_BRANCH+x} ]; then + echo "Setting to GIT_BRANCH" + current_branch=$(echo $GIT_BRANCH | cut -d / -f 2) + fi + if [ ! -z ${APPVEYOR_REPO_BRANCH+x} ]; then + echo "Setting to APPVEYOR_REPO_BRANCH" + current_branch=$APPVEYOR_REPO_BRANCH + fi fi - if [ ! -z ${APPVEYOR_REPO_BRANCH+x} ]; then - echo "Setting to APPVEYOR_REPO_BRANCH" - current_branch=$APPVEYOR_REPO_BRANCH + + if [ "$current_branch" == "master" ]; then + echo "This is a build of the master branch" + SLIC3R_VERSION=$(grep "VERSION" xs/src/libslic3r/libslic3r.h | awk -F\" '{print $2}') + SLIC3R_BUILD_ID=${SLIC3R_VERSION}-$(git rev-parse --short HEAD) + else + echo "This is a build of a non-master branch" + appname=Slic3r-${current_branch} + SLIC3R_BUILD_ID=${current_branch}-$(git rev-parse --short HEAD) fi fi +dmgfile=slic3r-${SLIC3R_BUILD_ID}.dmg +echo "DMG filename: ${dmgfile}" + # If we're on a branch, add the branch name to the app name. -if [ "$current_branch" == "master" ]; then - appname=Slic3r - dmgfile=slic3r-${SLIC3R_BUILD_ID}-${1}.dmg -else - appname=Slic3r-$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!') - dmgfile=slic3r-${SLIC3R_BUILD_ID}-${1}-$(git symbolic-ref HEAD | sed 's!refs\/heads\/!!').dmg -fi + rm -rf $WD/_tmp mkdir -p $WD/_tmp - # OSX Application folder shenanigans. appfolder="$WD/${appname}.app" macosfolder=$appfolder/Contents/MacOS @@ -104,10 +106,9 @@ echo "Copying perl from $PERL_BIN" cp -f $PERL_BIN $macosfolder/perl-local ${PP_BIN} \ -M $(grep -v "^#" ${WD}/../common/coreperl | xargs | awk 'BEGIN { OFS=" -M "}; {$1=$1; print $0}') \ - -B -p -e "print 123" -o $WD/_tmp/test.par -unzip -o $WD/_tmp/test.par -d $WD/_tmp/ + -B -p -e "print 123" -o $WD/_tmp/bundle.par +unzip -o $WD/_tmp/bundle.par -d $WD/_tmp/ cp -rf $WD/_tmp/lib/* $macosfolder/local-lib/lib/perl5/ -rm -rf $WD/_tmp echo "Cleaning bundle" rm -rf $macosfolder/local-lib/bin @@ -140,29 +141,31 @@ make_plist echo $PkgInfoContents >$appfolder/Contents/PkgInfo -if [[ -e "${KEYCHAIN_FILE}" ]]; then +KEYCHAIN_FILE_=${KEYCHAIN_FILE:-} +if [ ! -z $KEYCHAIN_FILE_ ]; then echo "Signing app..." chmod -R +w $macosfolder/* - security list-keychains -s "${KEYCHAIN_FILE}" - security default-keychain -s "${KEYCHAIN_FILE}" - security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE}" + security list-keychains -s "${KEYCHAIN_FILE_}" + security default-keychain -s "${KEYCHAIN_FILE_}" + security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE_}" codesign --sign "${KEYCHAIN_IDENTITY}" --deep "$appfolder" else echo "No KEYCHAIN_FILE env variable; skipping codesign" fi echo "Creating dmg file...." -hdiutil create -fs HFS+ -srcfolder "$appfolder" -volname "$appname" "$dmgfile" +hdiutil create -fs HFS+ -srcfolder "$appfolder" -volname "$appname" "$WD/_tmp/$dmgfile" # Compress the DMG image -hdiutil convert "$dmgfile" -format UDZO -imagekey zlib-level=9 -o "$dmgfile-compressed.dmg" -mv "$dmgfile-compressed.dmg" "$dmgfile" +hdiutil convert "$WD/_tmp/$dmgfile" -format UDZO -imagekey zlib-level=9 -o "$dmgfile" -if [[ -e "${KEYCHAIN_FILE}" ]]; then +if [ ! -z $KEYCHAIN_FILE_ ]; then echo "Signing app dmg..." chmod +w $dmgfile - security list-keychains -s "${KEYCHAIN_FILE}" - security default-keychain -s "${KEYCHAIN_FILE}" - security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE}" + security list-keychains -s "${KEYCHAIN_FILE_}" + security default-keychain -s "${KEYCHAIN_FILE_}" + security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_FILE_}" codesign --sign "${KEYCHAIN_IDENTITY}" "$dmgfile" fi + +rm -rf $WD/_tmp diff --git a/package/osx/plist.sh b/package/osx/plist.sh index 8c62d2088..331a03d01 100755 --- a/package/osx/plist.sh +++ b/package/osx/plist.sh @@ -18,11 +18,7 @@ cat << EOF > $plistfile CFBundleShortVersionString EOF -if [ $TAGGED ]; then - echo " Slic3r $SLIC3R_BUILD_ID" >>$plistfile -else - echo " Slic3r $SLIC3R_BUILD_ID-$(git rev-parse --short head)" >>$plistfile -fi +echo " Slic3r $SLIC3R_BUILD_ID" >>$plistfile cat << EOF >> $plistfile CFBundleIdentifier