pull/629/head
Lex Neva 2020-03-06 22:39:25 -05:00
rodzic 7cc8b0c14e
commit a4277d19a6
21 zmienionych plików z 32 dodań i 94 usunięć

Wyświetl plik

@ -55,7 +55,3 @@ mv dist/bin dist/inkstitch
if [ "$BUILD" = "osx" ]; then if [ "$BUILD" = "osx" ]; then
rm -rf dist/inkstitch.app/ rm -rf dist/inkstitch.app/
fi 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

Wyświetl plik

@ -1,11 +1,12 @@
import errno import errno
import os
import gettext import gettext
import os
import sys
from os.path import dirname from os.path import dirname
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
from ..i18n import translation as default_translation, locale_dir, N_ from ..i18n import N_, locale_dir, translation as default_translation
_top_path = dirname(dirname(dirname(os.path.realpath(__file__)))) _top_path = dirname(dirname(dirname(os.path.realpath(__file__))))
inx_path = os.path.join(_top_path, "inx") inx_path = os.path.join(_top_path, "inx")
@ -25,6 +26,16 @@ def build_environment():
env.install_gettext_translations(current_translation) env.install_gettext_translations(current_translation)
env.globals["locale"] = current_locale env.globals["locale"] = current_locale
if "BUILD" in os.environ:
# building a ZIP release, with inkstitch packaged as a binary
if sys.platform == "win32":
env.globals["command_tag"] = '<command reldir="extensions">inkstitch/bin/inkstitch.exe</command>'
else:
env.globals["command_tag"] = '<command reldir="extensions">inkstitch/bin/inkstitch</command>'
else:
# user is running inkstitch.py directly as a developer
env.globals["command_tag"] = '<command reldir="extensions" interpreter="python">inkstitch.py</command>'
return env return env

69
stub.py
Wyświetl plik

@ -1,69 +0,0 @@
#!/usr/bin/env python
import os
import subprocess
import sys
import traceback
# ink/stitch
#
# stub.py: pyinstaller execution stub
#
# pyinstaller packages the inkstitch extensions into nice tidy executables.
# That's great, but Inkscape can't execute a plain binary as an extension(!).
#
# This Python script exists only to execute the actual extension binary. It
# can be copied to, e.g., "embroider_params.py", in which case it will look
# for a binary at inkstitch/bin/embroider_params.
script_name = os.path.basename(__file__)
if script_name.endswith('.py'):
binary_name = script_name[:-3]
else:
# Probably not right, but we can at least try.
binary_name = script_name
binary_path = os.path.join("inkstitch", "bin", binary_name)
args = sys.argv[:]
args[0] = binary_path
# os.execve works here for Linux, but only this seems to get the
# extension output to Inkscape on Windows
try:
extension = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = extension.communicate()
except BaseException:
print >> sys.stderr, "Unexpected error launching Ink/Stitch."
print >> sys.stderr, "If you're having trouble, please file an issue here, including the text below:"
print >> sys.stderr, " https://github.com/inkstitch/inkstitch/issues\n"
print >> sys.stderr, "Tried to launch:", binary_path
print >> sys.stderr, "Arguments:", args
print >> sys.stderr, "Debugging information:\n"
print >> sys.stderr, traceback.format_exc()
sys.exit(1)
if sys.platform == "win32":
import msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
try:
# In Python 3, we need to use sys.stdout.buffer to write binary data to stdout.
sys.stdout.buffer.write(stdout)
sys.stdout.buffer.flush()
except AttributeError:
# Python 2 doesn't have sys.stdout.buffer but we can write binary data to stdout by default.
sys.stdout.write(stdout)
sys.stdout.flush()
stderr = stderr.strip()
if stderr:
try:
sys.stderr.buffer.write(stderr)
sys.stderr.buffer.flush()
except AttributeError:
sys.stderr.write(stderr)
sys.stderr.flush()
sys.exit(extension.returncode)

Wyświetl plik

@ -16,6 +16,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -14,6 +14,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -14,6 +14,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -23,6 +23,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -14,6 +14,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -19,6 +19,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</input> </input>
<param name="extension" type="string" gui-hidden="true">input</param> <param name="extension" type="string" gui-hidden="true">input</param>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -18,6 +18,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -17,6 +17,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -16,6 +16,6 @@
{% set params = "output_params_" + format + ".xml" %} {% set params = "output_params_" + format + ".xml" %}
{% include params ignore missing %} {% include params ignore missing %}
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -19,6 +19,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -12,6 +12,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -13,6 +13,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>

Wyświetl plik

@ -16,6 +16,6 @@
{% endfor %} {% endfor %}
<param name="extension" type="string" gui-hidden="true">zip</param> <param name="extension" type="string" gui-hidden="true">zip</param>
<script> <script>
<command reldir="extensions" interpreter="python">inkstitch.py</command> {{ command_tag | safe }}
</script> </script>
</inkscape-extension> </inkscape-extension>