From 2c6adea15068ff828344c034142b74883fe6a9ae Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 20 Apr 2019 21:55:26 -0400 Subject: refactor 'make dist' archive creation into a shell script --- Makefile | 31 ++------------------- bin/build-dist | 61 ----------------------------------------- bin/build-distribution-archives | 27 ++++++++++++++++++ bin/build-python | 61 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 90 deletions(-) delete mode 100755 bin/build-dist create mode 100755 bin/build-distribution-archives create mode 100755 bin/build-python diff --git a/Makefile b/Makefile index 2171d4f4..3cae9299 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,8 @@ -EXTENSIONS:=inkstitch - -# This gets the branch name or the name of the tag -VERSION:=$(subst /,-,$(TRAVIS_BRANCH)) -OS:=$(TRAVIS_OS_NAME) -ARCH:=$(shell uname -m) dist: locales inx - bin/build-dist $(EXTENSIONS) + bin/build-python bin/build-electron - cp -a images/examples dist/inkstitch - cp -a palettes dist/inkstitch - cp -a symbols dist/inkstitch - cp -a fonts dist/inkstitch - cp -a icons dist/inkstitch/bin - cp -a locales dist/inkstitch/bin - cp -a print dist/inkstitch/bin - if [ "$$BUILD" = "osx" ]; then \ - cp -a electron/dist/mac dist/inkstitch/electron; \ - else \ - cp -a electron/dist/*-unpacked dist/inkstitch/electron; \ - fi - for d in inx/*; do \ - lang=$${d%.*}; \ - lang=$${lang#*/}; \ - cp $$d/*.inx dist; \ - if [ "$$BUILD" = "windows" ]; then \ - cd dist; zip -r ../inkstitch-$(VERSION)-win32-$$lang.zip *; cd ..; \ - else \ - cd dist; tar zcf ../inkstitch-$(VERSION)-$(OS)-$(ARCH)-$$lang.tar.gz *; cd ..; \ - fi; \ - done + bin/build-distribution-archives distclean: rm -rf build dist inx locales *.spec *.tar.gz *.zip electron/node_modules electron/dist diff --git a/bin/build-dist b/bin/build-dist deleted file mode 100755 index c740c782..00000000 --- a/bin/build-dist +++ /dev/null @@ -1,61 +0,0 @@ -#!/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 " - -# We need to use the precompiled bootloader linked with graphical Mac OS X -# libraries if we develop a GUI application for Mac: -if [ "$TRAVIS_OS_NAME" = "osx" ]; 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 " - -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 - -# on Mac, pyinstaller creates a .app version as well, but we don't need that -if [ "$TRAVIS_OS_NAME" = "osx" ]; then - rm -rf dist/inkstitch.app/ -fi - -# 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 diff --git a/bin/build-distribution-archives b/bin/build-distribution-archives new file mode 100755 index 00000000..1015d246 --- /dev/null +++ b/bin/build-distribution-archives @@ -0,0 +1,27 @@ +# TRAVIS_BRANCH is the branch name or the name of the tag. +VERSION="$(echo ${TRAVIS_BRANCH} | tr / -)" +OS="${TRAVIS_OS_NAME}" +ARCH="$(uname -m)" + +cp -a images/examples palettes symbols fonts dist/inkstitch +cp -a icons locales print dist/inkstitch/bin + +if [ "$BUILD" = "osx" ]; then + cp -a electron/dist/mac dist/inkstitch/electron +else + cp -a electron/dist/*-unpacked dist/inkstitch/electron +fi + +for d in inx/*; do + lang=${d%.*} + lang=${lang#*/} + cp $d/*.inx dist + + cd dist + if [ "$BUILD" = "windows" ]; then + zip -r ../inkstitch-${VERSION}-win32-${lang}.zip * + else + tar zcf ../inkstitch-${VERSION}-${OS}-${ARCH}-$lang.tar.gz * + fi + cd .. +done \ No newline at end of file diff --git a/bin/build-python b/bin/build-python new file mode 100755 index 00000000..c740c782 --- /dev/null +++ b/bin/build-python @@ -0,0 +1,61 @@ +#!/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 " + +# We need to use the precompiled bootloader linked with graphical Mac OS X +# libraries if we develop a GUI application for Mac: +if [ "$TRAVIS_OS_NAME" = "osx" ]; 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 " + +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 + +# on Mac, pyinstaller creates a .app version as well, but we don't need that +if [ "$TRAVIS_OS_NAME" = "osx" ]; then + rm -rf dist/inkstitch.app/ +fi + +# 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 -- cgit v1.2.3