Mercurial > hg > vamp-plugin-pack
view deploy/osx/build-and-package.sh @ 123:ddcb0e606d28 v1.0
Include get-version in build process
author | Chris Cannam |
---|---|
date | Fri, 15 May 2020 17:33:29 +0100 |
parents | bf0fc15c3e21 |
children |
line wrap: on
line source
#!/bin/bash # Run this from the project root, without arguments, or with the # single argument --no-notarization to skip the notarize step set -e notarize=yes if [ "$1" = "--no-notarization" ]; then notarize=no elif [ -n "$1" ]; then echo "Usage: $0 [--no-notarization]" exit 2 fi set -u app="Vamp Plugin Pack Installer" identity="Developer ID Application: Chris Cannam" version=`perl -p -e 's/^[^"]*"([^"]*)".*$/$1/' version.h` qmake=$(grep '^# Command: ' Makefile | awk '{ print $3; }') echo "Proceed to rebuild, package, and sign version $version using" echo -n "qmake path \"$qmake\" [Yn] ? " read yn case "$yn" in "") ;; [Yy]) ;; *) exit 3;; esac echo "Proceeding" source="$app.app" volume="$app"-"$version" target="$volume"/"$app".app dmg="$volume".dmg if [ -d "$volume" ]; then echo "Target directory $volume already exists, not overwriting" exit 2 fi if [ -f "$dmg" ]; then echo "Target disc image $dmg already exists, not overwriting" exit 2 fi if [ "$notarize" = no ]; then echo echo "Note: The --no-notarization flag is set: won't be submitting for notarization" fi rm -rf "$app.app" rm -rf "$volume" rm -f "$dmg" ./repoint install rm -rf .qmake.stash "$qmake" -r make clean rm -rf out echo echo "Building plugins..." make -j3 -f Makefile.plugins echo "Done" echo echo "Building get-version..." make -j3 -f Makefile.get-version echo "Done" echo echo "Signing plugins and get-version..." codesign -s "$identity" -fv --timestamp --options runtime out/*.dylib out/get-version echo "Done" if [ "$notarize" = no ]; then echo echo "The --no-notarization flag was set: not submitting for notarization" else echo echo "Notarizing plugins and get-version..." rm -f plugins.zip ditto -c -k out plugins.zip deploy/osx/notarize.sh plugins.zip echo "Done" ## No, it doesn't seem to be possible to pass a dylib to stapler # echo # echo "Stapling plugins..." # xcrun stapler staple out/*.dylib # echo "Done" fi echo echo "Building installer..." make -j3 -f Makefile.installer echo "Done" echo echo "Deploying installer..." deploy/osx/deploy.sh "$app" || exit 1 echo "Done" echo echo "Making target tree..." mkdir "$volume" || exit 1 #cp README.md "$volume/README.txt" #cp README.OSC "$volume/README-OSC.txt" #cp COPYING "$volume/COPYING.txt" #cp CHANGELOG "$volume/CHANGELOG.txt" #cp CITATION "$volume/CITATION.txt" cp -rp "$source" "$target" # update file timestamps so as to make the build date apparent find "$volume" -exec touch \{\} \; echo "Done" echo echo "Signing installer..." find "$target" -name \*.dylib -print | while read fr; do codesign -s "$identity" -fv --deep --timestamp --options runtime "$fr" done codesign -s "$identity" -fv --deep --timestamp --options runtime "$target/Contents/MacOS/$app" codesign -s "$identity" -fv --deep --timestamp --options runtime "$target" echo "Done" echo echo "Making dmg..." rm -f "$dmg" hdiutil create -srcfolder "$volume" "$dmg" -volname "$volume" -fs HFS+ && rm -r "$volume" echo "Done" echo echo "Signing dmg..." codesign -s "$identity" -fv --timestamp "$dmg" echo "Done" if [ "$notarize" = no ]; then echo echo "The --no-notarization flag was set: not submitting for notarization" else echo echo "Submitting disk image for notarization..." deploy/osx/notarize.sh "$dmg" echo "Done" echo echo "Stapling disk image..." xcrun stapler staple "$dmg" echo "Done" fi