diff options
Diffstat (limited to 'bin/build-distribution-archives')
| -rwxr-xr-x | bin/build-distribution-archives | 159 |
1 files changed, 140 insertions, 19 deletions
diff --git a/bin/build-distribution-archives b/bin/build-distribution-archives index 6402122b..c7973022 100755 --- a/bin/build-distribution-archives +++ b/bin/build-distribution-archives @@ -1,34 +1,155 @@ -#!/bin/bash - VERSION="$(echo ${GITHUB_REF} | sed -e 's|refs/heads/||' -e 's|refs/tags/||' -e 's|/|-|g')" OS="${BUILD:-$(uname)}" ARCH="$(uname -m)" +mkdir artifacts if [ "$BUILD" = "osx" ]; then - cp -a images/examples palettes symbols fonts LICENSE VERSION dist/inkstitch.app/Contents - cp -a icons locales print dist/inkstitch.app/Contents/MacOS - cp -a electron/build/mac dist/inkstitch.app/Contents/electron + cp -a icons locales print LICENSE VERSION images/examples palettes symbols fonts inx dist/inkstitch.app/Contents/Resources + # adding version to Info.plist + sed -i '' 's/0.0.0/'${VERSION}'/' dist/inkstitch.app/Contents/Info.plist rm -rf dist/inkstitch/ + # Install location for pkgbuild + PKG_INSTALL_PATH="/tmp/inkstitch/" + # Checking arch of macos and setting path of electron for arm64 or intel + echo "Checking for macOS arch." + if [ "${ARCH}" = "arm64" ]; then + ELECTRON_BUILD_PATH="electron/build/mac-arm64" + echo "found arm64" + else + ELECTRON_BUILD_PATH="electron/build/mac" + echo "found intel" + fi + # inside the scripts folder are: + # - preinstaller (checks for previously installed inkstitch and deletes it, Inkscape check with error message) and + # - postinstaller (moves inkstitch folder from /tmp to user Inkscape extensions folder in $HOME) + # The postinstaller is a workaround for a proper way to install in user $HOME space + + # Build on GitHub will be handled differently from local builds. + # Local builds will not be signed nor notarized. They are run to produce releases for legacy versions of macOS. + # Notarization for development branches can be forced with this variable set to true + NOTARIZE_DEVELOPMENT_BUILDS=false + + if [[ ! -z "${GITHUB_REF}" ]]; then + # This code signs and notarize the inkstitch.app + DEV_IDENT="Developer ID Application: Lex Neva (929A568N58)" + echo "Signing of inkstitch.app" + # Coyping inkstitch-gui.app into inkstitch + ditto "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/MacOS/electron + # signing the binary may fix notary issue + /usr/bin/codesign -s "${DEV_IDENT}" \ + --deep \ + --force \ + --entitlements installer_scripts/entitlements.plist \ + -o runtime \ + --timestamp \ + dist/inkstitch.app/Contents/MacOS/inkstitch -v + # last signing before packaging + /usr/bin/codesign -s "${DEV_IDENT}" \ + --deep \ + --force \ + --entitlements installer_scripts/entitlements.plist \ + -o runtime \ + --timestamp \ + dist/inkstitch.app -v + echo "Running pkgbuild" + INSTALLER_IDENT="Developer ID Installer: Lex Neva (929A568N58)" + /usr/bin/pkgbuild --root dist/inkstitch.app \ + -s "${INSTALLER_IDENT}" \ + --component-plist installer_scripts/inkstitch.plist \ + --ownership recommended \ + --identifier org.inkstitch.installer \ + --version ${VERSION} \ + --scripts installer_scripts/scripts \ + --install-location ${PKG_INSTALL_PATH}inkstitch.app \ + artifacts/inkstitch-${VERSION}-${OS}.pkg + if [[ "${GITHUB_REF}" =~ ^refs/tags/v[0-9.]+$ || $NOTARIZE_DEVELOPMENT_BUILDS == true ]]; then + echo "Notary starting" + bash bin/notarize-app "929A568N58" \ + "${NOTARY_ACCOUNT}" \ + "${NOTARY_PASSWORD}" \ + "org.inkstitch.app" \ + artifacts/inkstitch-${VERSION}-${OS}.pkg + fi + else + # local builds will not be signed or notarized + cp -a "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/MacOS/electron + pkgbuild --root dist/inkstitch.app \ + --component-plist installer_scripts/inkstitch.plist \ + --ownership recommended \ + --identifier org.inkstitch.installer \ + --version ${VERSION} \ + --scripts installer_scripts/scripts \ + --install-location ${PKG_INSTALL_PATH}inkstitch.app \ + artifacts/inkstitch-${VERSION}-${OS}.pkg + fi + # Creating the zip for Drag n' Drop install + cd dist + python -m zipfile -c ../artifacts/inkstitch-${VERSION}-${OS}.zip * + cd .. else - cp -a images/examples palettes symbols fonts LICENSE VERSION dist/inkstitch + cp -a images/examples palettes symbols fonts inx LICENSE VERSION dist/inkstitch cp -a icons locales print dist/inkstitch/bin cp -a electron/build/*-unpacked dist/inkstitch/electron + fi -mkdir artifacts +if [ "$BUILD" = "windows" ]; then + # build the installer locally + # remotely it will be called through build.yml after signing + if [[ -z "${GITHUB_REF}" ]]; then + bash bin/build-windows-installer + fi +fi -for d in inx/*; do - lang=${d%.*} - lang=${lang#*/} - cp $d/*.inx dist +if [ "$BUILD" = "linux" ]; then + gem install fpm - cd dist - if [ "$BUILD" = "windows" ]; then - # The python zipfile command line utility can't handle directories - # containing files with UTF-8 names on Windows, so we use 7-zip instead. - 7z a ../artifacts/inkstitch-${VERSION}-${OS}-${lang}.zip * + if [[ "$VERSION" =~ ^v[0-9][.0-9]+$ ]]; then + VERSION=${VERSION#v} else - python -m zipfile -c ../artifacts/inkstitch-${VERSION}-${OS}-${lang}.zip * + # dpkg requires versions to start with a number, so we have to add + # 0.0.1 for development builds + VERSION="0.0.1-${VERSION}" fi - cd .. -done + + echo -n "$INKSTITCH_GPG_KEY" | base64 -d | gpg --import + cat <<EOF > $HOME/.rpmmacros +%_gpg_name EA93BCE2CCD0FB2E77B2CC29E8120E50709E5C44 +%_signature gpg +EOF + + deb_version="$(sed -E 's/[^a-zA-Z0-9.+]/./g' <<< "$VERSION")" + fpm -s dir \ + -t deb \ + -n inkstitch \ + -v "$deb_version" \ + -d "inkscape >= 1.0.0" \ + --license "GPL-3.0" \ + --description "An open-source machine embroidery design platform based on Inkscape" \ + --url "https://inkstitch.org" \ + --maintainer "maintainer@inkstitch.org" \ + --after-install bin/after-install \ + --before-remove bin/before-remove \ + --verbose \ + dist/inkstitch=/opt + + fpm -s dir \ + -t rpm \ + -n inkstitch \ + -v "$VERSION" \ + -d "inkscape >= 1.0.0" \ + --license "GPL-3.0" \ + --description "An open-source machine embroidery design platform based on Inkscape" \ + --url "https://inkstitch.org" \ + --maintainer "maintainer@inkstitch.org" \ + --after-install bin/after-install \ + --before-remove bin/before-remove \ + --verbose \ + dist/inkstitch=/opt + + rpmsign --addsign inkstitch*.rpm + mv inkstitch*.deb inkstitch*.rpm artifacts/ + + tar -C dist -Jcf artifacts/inkstitch-${VERSION}-${OS}.tar.xz inkstitch + cat "$(dirname "$0")/linux-sh-installer" artifacts/inkstitch-${VERSION}-${OS}.tar.xz > artifacts/inkstitch-${VERSION}-${OS}.sh +fi |
