#!/bin/bash set -e info_year=$( date "+%Y" ) site_packages="$(python -c "import os; print(os.path.dirname(os.__file__) + '/site-packages')")" arch=$(uname -m) if [ "$BUILD" = "linux" ]; then pyinstaller_args+="--add-binary /usr/lib/"$arch"-linux-gnu/gio/modules/libgiolibproxy.so:. " pyinstaller_args+="--add-binary /usr/lib/"$arch"-linux-gnu/libproxy.so.1:. " pyinstaller_args+="--add-binary /lib/"$arch"-linux-gnu/libnsl.so.1:. " pyinstaller_args+="--add-binary /usr/lib/"$arch"-linux-gnu/libxcb.so.1:. " fi # This one's tricky. ink/stitch doesn't actually _use_ gi.repository.Gtk, # but it does use GTK (through wxPython). pyinstaller has some special # logic to handle GTK apps that is engaged when you import # gi.repository.Gtk that pulls in things like themes, icons, etc. Without # that, the Params dialog is unthemed and barely usable. This hidden # import option is actually the only reason we had to install python-gi # above! pyinstaller_args+="--hidden-import gi.repository.Gtk " # mac and windows build seem to miss wx import pyinstaller_args+="--hidden-import wx " # We need to use the precompiled bootloader linked with graphical Mac OS X # libraries if we develop a GUI application for Mac: if [ "$BUILD" = "osx" -o "$BUILD" = "windows" ]; then pyinstaller_args+="--windowed " fi # This lets pyinstaller see inkex.py, etc. pyinstaller_args+="-p inkscape/share/extensions " # output useful debugging info that helps us trace library dependency issues pyinstaller_args+="--log-level DEBUG " # This adds bundle identifier in reverse DSN format for macos if [ "$BUILD" = "osx" ]; then pyinstaller_args+="--osx-bundle-identifier org.inkstitch.app " pyinstaller_args+="-i electron/build/icons/mac/inkstitch.icns" if [[ -z ${GITHUB_REF} ]]; then echo "Dev or Local Build" else bash bin/import-macos-keys fi fi if [ "$BUILD" = "windows" ]; then if [[ "$VERSION" =~ ^v[0-9][.0-9]+$ ]]; then # setting the file and product version for release # Code to remove the periods in the version number ENT=. SAL=${VERSION#v}$ENT INFO_VERSION=() while [[ $SAL ]]; do INFO_VERSION+=( "${SAL%%"$ENT"*}" ); SAL=${SAL#*"$ENT"}; done; sed -i'' 's/3, 2, 1,/'"${INFO_VERSION[0]}, ${INFO_VERSION[1]}, ${INFO_VERSION[2]},"'/' installer_scripts/file_version_info.txt fi # set year and version in version_info sed -i'' 's/1.1.1/'"${VERSION#v}"'/' installer_scripts/file_version_info.txt sed -i'' 's/1234/'"${info_year}"'/' installer_scripts/file_version_info.txt # sets icon to inkstitch.exe pyinstaller_args+="--i electron/build/icons/win/inkstitch.ico " pyinstaller_args+="--version-file installer_scripts/file_version_info.txt " python -m PyInstaller $pyinstaller_args inkstitch.py else LD_LIBRARY_PATH="${site_packages}/wx" python -m PyInstaller $pyinstaller_args --strip inkstitch.py; fi # pyinstaller put a whole mess of libraries under dist/inkstitch. We'd like # to put some more user-accessible stuff like examples and palettes in # folders under inkstitch/ (see ../Makefile) so let's move the pyinstaller # stuff into its own dir. shopt -s dotglob mkdir dist/bin mv dist/inkstitch/* dist/bin mv dist/bin dist/inkstitch