#!/bin/bash set -e site_packages="$(python -c "import os; print(os.path.dirname(os.__file__) + '/site-packages')")" if [ "$TRAVIS_OS_NAME" = "linux" -a "$BUILD" != "windows" ]; then # pyinstaller misses these two pyinstaller_args+="--add-binary /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so:. " pyinstaller_args+="--add-binary /usr/lib/x86_64-linux-gnu/libproxy.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" # This lets pyinstaller see inkex.py, etc. pyinstaller_args+="-p inkscape-0.92.3/share/extensions " # output useful debugging info that helps us trace library dependency issues pyinstaller_args+="--log-level DEBUG " if [ "$BUILD" = "windows" ]; then wine c:\\Python\\scripts\\pyinstaller.exe $pyinstaller_args inkstitch.py else # without the LD_LIBRARY_PATH, it seems that pyinstaller can't find all of # wxpython's shared libraries LD_LIBRARY_PATH="${site_packages}/wx" 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 # Inkscape doesn't let us run native binaries as extensions(?!). Instead we # add this stub script which executes the binary that pyinstaller creates. cp stub.py dist/inkstitch.py