kopia lustrzana https://github.com/inkstitch/inkstitch
Rejbasket/pyinstaller fix installer checks (#2718)
* netowrkx deps added in build * check for user inkscape config before installing * get os version in exception * update electron app location according to pyinstaller redesign * fixed broken libgeos syslinks * contents-directory added pyinstaller args fix broken linux and win versions * updated inkex * fix print_pdf --------- authored-by: rejbasketpull/2722/head
rodzic
87d7fa387d
commit
d929336f08
|
@ -72,7 +72,11 @@ jobs:
|
||||||
python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.2.1-cp38-cp38-linux_x86_64.whl
|
python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04/wxPython-4.2.1-cp38-cp38-linux_x86_64.whl
|
||||||
|
|
||||||
python -m pip install -r requirements.txt
|
python -m pip install -r requirements.txt
|
||||||
python -m pip install pyinstaller==5.13.2
|
# for networkx
|
||||||
|
python -m pip install pandas
|
||||||
|
python -m pip install pyarrow
|
||||||
|
|
||||||
|
python -m pip install pyinstaller
|
||||||
|
|
||||||
# scipy gives us a ELF error when stripped
|
# scipy gives us a ELF error when stripped
|
||||||
sudo apt-get install gcc g++ gfortran python3-dev libopenblas-dev liblapack-dev
|
sudo apt-get install gcc g++ gfortran python3-dev libopenblas-dev liblapack-dev
|
||||||
|
@ -118,7 +122,10 @@ jobs:
|
||||||
python -m pip install scipy==1.9.0
|
python -m pip install scipy==1.9.0
|
||||||
pip install wxPython
|
pip install wxPython
|
||||||
python -m pip install -r requirements.txt
|
python -m pip install -r requirements.txt
|
||||||
python -m pip install pyinstaller==5.13.2
|
# for networkx
|
||||||
|
python -m pip install pandas
|
||||||
|
|
||||||
|
python -m pip install pyinstaller
|
||||||
|
|
||||||
echo "${{ env.pythonLocation }}\bin" >> $GITHUB_PATH
|
echo "${{ env.pythonLocation }}\bin" >> $GITHUB_PATH
|
||||||
- shell: bash
|
- shell: bash
|
||||||
|
@ -166,7 +173,11 @@ jobs:
|
||||||
python -m pip install wheel
|
python -m pip install wheel
|
||||||
pip install wxPython
|
pip install wxPython
|
||||||
python -m pip install -r requirements.txt
|
python -m pip install -r requirements.txt
|
||||||
python -m pip install pyinstaller==5.13.2
|
# for networkx
|
||||||
|
python -m pip install pandas
|
||||||
|
python -m pip install pyarrow
|
||||||
|
|
||||||
|
python -m pip install pyinstaller
|
||||||
|
|
||||||
echo "${{ env.pythonLocation }}\bin" >> $GITHUB_PATH
|
echo "${{ env.pythonLocation }}\bin" >> $GITHUB_PATH
|
||||||
- shell: bash
|
- shell: bash
|
||||||
|
@ -225,7 +236,11 @@ jobs:
|
||||||
pip install PyGObject
|
pip install PyGObject
|
||||||
pip install wxPython
|
pip install wxPython
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
pip install pyinstaller==5.13.2
|
# for networkx
|
||||||
|
pip install pandas
|
||||||
|
pip install pyarrow
|
||||||
|
|
||||||
|
pip install pyinstaller
|
||||||
|
|
||||||
echo "${{ env.pythonLocation }}/bin" >> $GITHUB_PATH
|
echo "${{ env.pythonLocation }}/bin" >> $GITHUB_PATH
|
||||||
- shell: bash
|
- shell: bash
|
||||||
|
|
|
@ -8,8 +8,21 @@ if [ "$BUILD" = "osx" ]; then
|
||||||
# adding version to Info.plist
|
# adding version to Info.plist
|
||||||
plutil -replace CFBundleShortVersionString -string ${VERSION} dist/inkstitch.app/Contents/Info.plist
|
plutil -replace CFBundleShortVersionString -string ${VERSION} dist/inkstitch.app/Contents/Info.plist
|
||||||
rm -rf dist/inkstitch/
|
rm -rf dist/inkstitch/
|
||||||
# this removes the extra dylibs that cause notary to fail.
|
# unlinking the libgeos and dot dylib folder syslinks and fix broken syslinks for notary.
|
||||||
rm -rf dist/inkstitch.app/Contents/MacOS/shapely/.dylibs
|
# copying libgeos dylibs with ditto preserves information to pass notary.
|
||||||
|
unlink dist/inkstitch.app/Contents/Resources/shapely/.dylibs
|
||||||
|
|
||||||
|
unlink dist/inkstitch.app/Contents/Resources/libgeos.3.11.2.dylib
|
||||||
|
unlink dist/inkstitch.app/Contents/Resources/libgeos_c.1.17.2.dylib
|
||||||
|
|
||||||
|
unlink dist/inkstitch.app/Contents/Frameworks/libgeos.3.11.2.dylib
|
||||||
|
unlink dist/inkstitch.app/Contents/Frameworks/libgeos_c.1.17.2.dylib
|
||||||
|
|
||||||
|
ditto dist/inkstitch.app/Contents/Frameworks/shapely/__dot__dylibs/libgeos.3.11.2.dylib dist/inkstitch.app/Contents/Resources/
|
||||||
|
ditto dist/inkstitch.app/Contents/Frameworks/shapely/__dot__dylibs/libgeos_c.1.17.2.dylib dist/inkstitch.app/Contents/Resources/
|
||||||
|
|
||||||
|
ditto dist/inkstitch.app/Contents/Frameworks/shapely/__dot__dylibs/libgeos.3.11.2.dylib dist/inkstitch.app/Contents/Frameworks/
|
||||||
|
ditto dist/inkstitch.app/Contents/Frameworks/shapely/__dot__dylibs/libgeos_c.1.17.2.dylib dist/inkstitch.app/Contents/Frameworks/
|
||||||
# Install location for pkgbuild
|
# Install location for pkgbuild
|
||||||
PKG_INSTALL_PATH="/tmp/inkstitch/"
|
PKG_INSTALL_PATH="/tmp/inkstitch/"
|
||||||
# Checking arch of macos and setting path of electron for arm64 or intel
|
# Checking arch of macos and setting path of electron for arm64 or intel
|
||||||
|
@ -36,7 +49,7 @@ if [ "$BUILD" = "osx" ]; then
|
||||||
DEV_IDENT="Developer ID Application: Lex Neva (929A568N58)"
|
DEV_IDENT="Developer ID Application: Lex Neva (929A568N58)"
|
||||||
echo "Signing of inkstitch.app"
|
echo "Signing of inkstitch.app"
|
||||||
# Coyping inkstitch-gui.app into inkstitch
|
# Coyping inkstitch-gui.app into inkstitch
|
||||||
ditto "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/MacOS/electron
|
ditto "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/Frameworks/electron
|
||||||
# signing the binary may fix notary issue
|
# signing the binary may fix notary issue
|
||||||
/usr/bin/codesign -s "${DEV_IDENT}" \
|
/usr/bin/codesign -s "${DEV_IDENT}" \
|
||||||
--deep \
|
--deep \
|
||||||
|
@ -92,7 +105,7 @@ if [ "$BUILD" = "osx" ]; then
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# local builds will not be signed or notarized
|
# local builds will not be signed or notarized
|
||||||
cp -a "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/MacOS/electron
|
cp -a "${ELECTRON_BUILD_PATH}" dist/inkstitch.app/Contents/Frameworks/electron
|
||||||
pkgbuild --root dist/inkstitch.app \
|
pkgbuild --root dist/inkstitch.app \
|
||||||
--component-plist installer_scripts/inkstitch.plist \
|
--component-plist installer_scripts/inkstitch.plist \
|
||||||
--ownership recommended \
|
--ownership recommended \
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
info_year=$( date "+%Y" )
|
info_year=$( date "+%Y" )
|
||||||
|
# PyInstaller v6.x rearranges folder configuration causing broken builds, This re-enables old onedir layout.
|
||||||
|
pyinstaller_args+="--contents-directory . "
|
||||||
|
|
||||||
# We need to use the precompiled bootloader linked with graphical Mac OS X
|
# We need to use the precompiled bootloader linked with graphical Mac OS X
|
||||||
# libraries if we develop a GUI application for Mac:
|
# libraries if we develop a GUI application for Mac:
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<key>BundleOverwriteAction</key>
|
<key>BundleOverwriteAction</key>
|
||||||
<string>install</string>
|
<string>install</string>
|
||||||
<key>RootRelativeBundlePath</key>
|
<key>RootRelativeBundlePath</key>
|
||||||
<string>Contents/MacOS/electron/inkstitch-gui.app</string>
|
<string>Contents/Frameworks/electron/inkstitch-gui.app</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -1,25 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
inkstitch_folder=($HOME/Library/Application\ Support/org.inkscape.Inkscape/config/inkscape/extensions/inkstitch)
|
inkstitch_folder=($HOME/Library/Application\ Support/org.inkscape.Inkscape/config/inkscape/extensions/inkstitch)
|
||||||
location_inkscape=(/Applications/Inkscape.app)
|
|
||||||
|
|
||||||
# Checking if Inkscape is installed
|
|
||||||
if [[ -d "${location_inkscape}" ]]; then
|
|
||||||
echo "Inkscape is found and installed "${location_Inkscape}"."
|
|
||||||
else
|
|
||||||
osascript <<-AppleScript
|
|
||||||
set theDialogText to "Ink/Stich is an Inkscape plugin. Please install and run Inkscape before installing Ink/Stitch."
|
|
||||||
display dialog theDialogText buttons {"Okay"} default button "Okay"
|
|
||||||
AppleScript
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checking if Inkscape configuration folders are created
|
# Checking if Inkscape configuration folders are created
|
||||||
if [[ -d "${inkstitch_folder%config*}" ]]; then
|
if [[ -d "${inkstitch_folder%config*}" ]]; then
|
||||||
echo "Inkscape configs are found and installed "${inkstitch_folder%config*}"."
|
echo "Inkscape configs are found and installed "${inkstitch_folder%config*}"."
|
||||||
else
|
else
|
||||||
osascript <<-AppleScript
|
osascript <<-AppleScript
|
||||||
set theDialogText to "Please run Inkscape before installing Ink/Stitch."
|
set theDialogText to "Ink/Stich is an Inkscape plugin. Please install and run Inkscape before installing Ink/Stitch."
|
||||||
display dialog theDialogText buttons {"Okay"} default button "Okay"
|
display dialog theDialogText buttons {"Okay"} default button "Okay"
|
||||||
AppleScript
|
AppleScript
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -118,6 +118,20 @@ begin
|
||||||
Result := 1;
|
Result := 1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ ///////////////////////////////////////////////////////////////////// }
|
||||||
|
function InitializeSetup(): Boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
|
||||||
|
if DirExists(ExpandConstant('{userappdata}\inkscape\extensions\')) then
|
||||||
|
Log('Found Inks')
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
MsgBox('Error: Inkscape Extensions folder not found! Install and then run Inkscape to create the extension folder.', mbInformation, MB_OK);
|
||||||
|
Result := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ ///////////////////////////////////////////////////////////////////// }
|
{ ///////////////////////////////////////////////////////////////////// }
|
||||||
procedure CurStepChanged(CurStep: TSetupStep);
|
procedure CurStepChanged(CurStep: TSetupStep);
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -3,12 +3,38 @@
|
||||||
# Copyright (c) 2010 Authors
|
# Copyright (c) 2010 Authors
|
||||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||||
import traceback
|
import traceback
|
||||||
|
import sys
|
||||||
|
import platform
|
||||||
|
import subprocess
|
||||||
|
from glob import glob
|
||||||
|
|
||||||
|
|
||||||
class InkstitchException(Exception):
|
class InkstitchException(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def get_os_version():
|
||||||
|
if sys.platform == "win32":
|
||||||
|
# To get the windows version, python functions are used
|
||||||
|
# Using python subprocess with cmd.exe in windows is currently a security risk
|
||||||
|
os_ver = "Windows " + platform.release() + " version: " + platform.version()
|
||||||
|
if sys.platform == "darwin":
|
||||||
|
# macOS command line progam provides accurate info than python functions
|
||||||
|
mac_v = subprocess.run(["sw_vers"], capture_output=True, text=True)
|
||||||
|
os_ver = str(mac_v.stdout.strip())
|
||||||
|
if sys.platform == "linux":
|
||||||
|
# Getting linux version method used here is for systemd and nonsystemd linux.
|
||||||
|
try:
|
||||||
|
ltmp = subprocess.run(["cat"] + glob("/etc/*-release"), capture_output=True, text=True)
|
||||||
|
lnx_ver = ltmp.stdout.splitlines()
|
||||||
|
lnx_ver = str(list(filter(lambda x: "PRETTY_NAME" in x, lnx_ver)))
|
||||||
|
os_ver = lnx_ver[15:][:-3]
|
||||||
|
except FileNotFoundError:
|
||||||
|
os_ver = "Cannot get Linux distro version"
|
||||||
|
|
||||||
|
return os_ver
|
||||||
|
|
||||||
|
|
||||||
def format_uncaught_exception():
|
def format_uncaught_exception():
|
||||||
"""Format the current exception as a request for a bug report.
|
"""Format the current exception as a request for a bug report.
|
||||||
|
|
||||||
|
@ -30,7 +56,9 @@ def format_uncaught_exception():
|
||||||
"- create a new issue at")
|
"- create a new issue at")
|
||||||
message += " https://github.com/inkstitch/inkstitch/issues/new\n\n"
|
message += " https://github.com/inkstitch/inkstitch/issues/new\n\n"
|
||||||
message += _("Include the error description and also (if possible) the svg file.")
|
message += _("Include the error description and also (if possible) the svg file.")
|
||||||
message += '\n\n\n'
|
message += '\n\n'
|
||||||
|
message += get_os_version()
|
||||||
|
message += '\n\n'
|
||||||
message += version.get_inkstitch_version() + '\n'
|
message += version.get_inkstitch_version() + '\n'
|
||||||
message += traceback.format_exc()
|
message += traceback.format_exc()
|
||||||
|
|
||||||
|
|
|
@ -231,7 +231,7 @@ class Print(InkstitchExtension):
|
||||||
# for all color blocks together.
|
# for all color blocks together.
|
||||||
|
|
||||||
layers = svg.findall("./g[@%s='layer']" % INKSCAPE_GROUPMODE)
|
layers = svg.findall("./g[@%s='layer']" % INKSCAPE_GROUPMODE)
|
||||||
stitch_plan_layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']")
|
stitch_plan_layer = svg.findone(".//*[@id='__inkstitch_stitch_plan__']")
|
||||||
|
|
||||||
# Make sure there is no leftover translation from stitch plan preview
|
# Make sure there is no leftover translation from stitch plan preview
|
||||||
stitch_plan_layer.pop('transform')
|
stitch_plan_layer.pop('transform')
|
||||||
|
|
|
@ -222,7 +222,7 @@ def color_block_to_paths(color_block, svg, destination, visual_commands):
|
||||||
|
|
||||||
|
|
||||||
def render_stitch_plan(svg, stitch_plan, realistic=False, visual_commands=True):
|
def render_stitch_plan(svg, stitch_plan, realistic=False, visual_commands=True):
|
||||||
layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']")
|
layer = svg.findone(".//*[@id='__inkstitch_stitch_plan__']")
|
||||||
if layer is None:
|
if layer is None:
|
||||||
layer = inkex.Group(attrib={
|
layer = inkex.Group(attrib={
|
||||||
'id': '__inkstitch_stitch_plan__',
|
'id': '__inkstitch_stitch_plan__',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
./pyembroidery
|
./pyembroidery
|
||||||
|
|
||||||
# get up to date inkex version (October 23 2023)
|
# get up to date inkex version (Febuary 10, 2024)
|
||||||
inkex @ git+https://gitlab.com/inkscape/extensions.git@b38c022b0394c7eb665c4a0927b226d2f5840fad
|
inkex @ git+https://gitlab.com/inkscape/extensions.git@99db88135c3e557b343dd3d878eea8de2676d2ab
|
||||||
|
|
||||||
wxPython>=4.1.1
|
wxPython>=4.1.1
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue