From ce018da48f4dcfe94a7df8c0d867ec81a367cf7a Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Wed, 13 Jul 2022 15:01:26 +0200 Subject: [PATCH 01/18] Explicitly build and copy OpenSSL shared This is a workaround to ensure that we use and pack a shared library for OpenSSL 1.1.1l. We currently compile OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library. Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly and do a manual copy to the VirtualEnv, such that Pyinstaller can find it. Contributes to CURA-9365 --- .github/workflows/cura-installer.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 8247fc2d47..6b41c89857 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -163,6 +163,18 @@ jobs: env: TEMP_KEYCHAIN_PASSWORD: ${{ steps.macos-keychain.outputs.keychain-password }} + # FIXME: This is a workaround to ensure that we use and pack a shared library for OpenSSL 1.1.1l. We currently compile + # OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library. + # Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly + # and do a manual copy to the VirtualEnv, such that Pyinstaller can find it. + - name: Install OpenSSL shared + run: | + conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy + cp openssl/bin/*.dll ./cura_inst/Scripts/ + cp openssl/lib/*.lib ./cura_inst/Lib/ + cp openssl/lib/*.so* ./cura_inst/bin/ + cp openssl/lib/*.dylib* ./cura_inst/bin/ + - name: Create the Cura dist run: pyinstaller ./cura_inst/Ultimaker-Cura.spec From 81aa56c25968753a2aab525a0367d3fe3de54949 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Wed, 13 Jul 2022 15:27:57 +0200 Subject: [PATCH 02/18] Explicitly build and copy OpenSSL shared OS specific Contributes to CURA-9365 --- .github/workflows/cura-installer.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 6b41c89857..78a698f50f 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -167,13 +167,19 @@ jobs: # OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library. # Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly # and do a manual copy to the VirtualEnv, such that Pyinstaller can find it. - - name: Install OpenSSL shared + - name: Install OpenSSL shared (Bash) + if: ${{ runner.os != 'Windows' }} + run: | + conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy + cp openssl/lib/*.so* ./cura_inst/bin/ 2> /dev/null + cp openssl/lib/*.dylib* ./cura_inst/bin/ 2> /dev/null + + - name: Install OpenSSL shared (Powershell) + if: ${{ runner.os == 'Windows' }} run: | conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy cp openssl/bin/*.dll ./cura_inst/Scripts/ cp openssl/lib/*.lib ./cura_inst/Lib/ - cp openssl/lib/*.so* ./cura_inst/bin/ - cp openssl/lib/*.dylib* ./cura_inst/bin/ - name: Create the Cura dist run: pyinstaller ./cura_inst/Ultimaker-Cura.spec From 6b31e6a7763f10aac580e16bfe83869ae34cea4f Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Wed, 13 Jul 2022 16:32:18 +0200 Subject: [PATCH 03/18] Split up OpenSSL install and copy Contributes to CURA-9365 --- .github/workflows/cura-installer.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 78a698f50f..c0fa15564c 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -167,17 +167,19 @@ jobs: # OpenSSL statically for CPython, but our Python Dependenies (such as PyQt6) require a shared library. # Because Conan won't allow for building the same library with two different options (easily) we need to install it explicitly # and do a manual copy to the VirtualEnv, such that Pyinstaller can find it. + + - name: Install OpenSSL shared + run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy + - name: Install OpenSSL shared (Bash) if: ${{ runner.os != 'Windows' }} run: | - conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy - cp openssl/lib/*.so* ./cura_inst/bin/ 2> /dev/null - cp openssl/lib/*.dylib* ./cura_inst/bin/ 2> /dev/null + cp ./openssl/lib/*.so* ./cura_inst/bin/ + cp ./openssl/lib/*.dylib* ./cura_inst/bin/ - name: Install OpenSSL shared (Powershell) if: ${{ runner.os == 'Windows' }} run: | - conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy cp openssl/bin/*.dll ./cura_inst/Scripts/ cp openssl/lib/*.lib ./cura_inst/Lib/ From 0140c2a6013158e5c9e278e5a0380440a168ddfe Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Wed, 13 Jul 2022 18:53:06 +0200 Subject: [PATCH 04/18] allow copy to fail --- .github/workflows/cura-installer.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index c0fa15564c..b1bf5df563 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -174,8 +174,8 @@ jobs: - name: Install OpenSSL shared (Bash) if: ${{ runner.os != 'Windows' }} run: | - cp ./openssl/lib/*.so* ./cura_inst/bin/ - cp ./openssl/lib/*.dylib* ./cura_inst/bin/ + cp ./openssl/lib/*.so* ./cura_inst/bin/ || true + cp ./openssl/lib/*.dylib* ./cura_inst/bin/ || true - name: Install OpenSSL shared (Powershell) if: ${{ runner.os == 'Windows' }} From 57a0c214d1ec60413f639736d41a0d54588af06a Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Thu, 14 Jul 2022 09:24:32 +0200 Subject: [PATCH 05/18] Add option for additional conan install args Contributes to CURA-9365 --- .github/workflows/cura-installer.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index b1bf5df563..1c9aa53590 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -8,6 +8,10 @@ on: # Fixme: default to cura/latest@testing (which is main) default: 'cura/latest@ultimaker/stable' required: true + conan_args: + description: 'Conan args: eq.: --require-override=curaengine/5.1.0-beta+123@ultimaker/testing' + default: '' + required: false conan_config: description: 'Conan config branch to use' default: '' @@ -143,7 +147,7 @@ jobs: run: conan config install https://github.com/Ultimaker/conan-config.git - name: Create the Packages - run: conan install ${{ inputs.cura_conan_version }} --build=missing --update -if cura_inst -g VirtualPythonEnv -o cura:enterprise=${{ inputs.enterprise }} -o cura:staging=${{ inputs.staging }} --json "cura_inst/conan_install_info.json" + run: conan install ${{ inputs.cura_conan_version }} ${{ inputs.conan_args }} --build=missing --update -if cura_inst -g VirtualPythonEnv -o cura:enterprise=${{ inputs.enterprise }} -o cura:staging=${{ inputs.staging }} --json "cura_inst/conan_install_info.json" - name: Set Environment variables for Cura (bash) if: ${{ runner.os != 'Windows' }} From 7068c87130d4a7391925b221b0770905e2c23b1d Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Thu, 14 Jul 2022 10:38:59 +0200 Subject: [PATCH 06/18] Add copied openssl 1.1.1l binaries to pyinstall binaries Contributes to CURA-9342 --- .github/workflows/cura-installer.yml | 4 ++-- conanfile.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 1c9aa53590..dd655b1d9f 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -175,13 +175,13 @@ jobs: - name: Install OpenSSL shared run: conan install openssl/1.1.1l@_/_ --build=missing --update -o openssl:shared=True -g deploy - - name: Install OpenSSL shared (Bash) + - name: Copy OpenSSL shared (Bash) if: ${{ runner.os != 'Windows' }} run: | cp ./openssl/lib/*.so* ./cura_inst/bin/ || true cp ./openssl/lib/*.dylib* ./cura_inst/bin/ || true - - name: Install OpenSSL shared (Powershell) + - name: Copy OpenSSL shared (Powershell) if: ${{ runner.os == 'Windows' }} run: | cp openssl/bin/*.dll ./cura_inst/Scripts/ diff --git a/conanfile.py b/conanfile.py index 99b2fb1fe4..05e93d4065 100644 --- a/conanfile.py +++ b/conanfile.py @@ -171,6 +171,12 @@ class CuraConan(ConanFile): for bin in src_path.glob(binary["binary"]): binaries.append((str(bin), binary["dst"])) + # Add dynamic libs in the venv bin/Script and lib Path. This is needed because we might copy some additional libs + # e.q.: OpenSSL 1.1.1l in that directory with a separate: + # `conan install openssl@1.1.1l -g deploy && cp openssl/bin/*.so cura_inst/bin` + for bin in self._script_dir.glob("*.[so|dll|dylib]"): + binaries.append(str(bin), ".") + for _, dependency in self.dependencies.items(): # if dependency.ref.name == "cpython": # continue From 3ea7dd8565216a7431461efa06586a25d58912cd Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Thu, 14 Jul 2022 18:21:23 +0200 Subject: [PATCH 07/18] Use umbase 0.1.4 Contributes to CURA-9365 --- conandata.yml | 92 --------------------------------------------------- conanfile.py | 14 ++++---- 2 files changed, 7 insertions(+), 99 deletions(-) diff --git a/conandata.yml b/conandata.yml index 756cb09db3..6e2a5f4f27 100644 --- a/conandata.yml +++ b/conandata.yml @@ -182,95 +182,3 @@ Windows: "./icons/Cura.ico" Macos: "./icons/cura.icns" Linux: "./icons/cura-128.png" -"5.1.0-beta": - requirements: - - "arcus/(latest)@ultimaker/stable" - - "curaengine/(latest)@ultimaker/stable" - - "savitar/(latest)@ultimaker/stable" - - "pynest2d/(latest)@ultimaker/stable" - - "uranium/(latest)@ultimaker/stable" - - "fdm_materials/(latest)@ultimaker/stable" - - "cura_binary_data/(latest)@ultimaker/stable" - - "cpython/3.10.4" - runinfo: - entrypoint: "cura_app.py" - pyinstaller: - datas: - cura_plugins: - package: "cura" - src: "plugins" - dst: "share/cura/plugins" - cura_resources: - package: "cura" - src: "resources" - dst: "share/cura/resources" - uranium_plugins: - package: "uranium" - src: "plugins" - dst: "share/uranium/plugins" - uranium_resources: - package: "uranium" - src: "resources" - dst: "share/uranium/resources" - uranium_um_qt_qml_um: - package: "uranium" - src: "site-packages/UM/Qt/qml/UM" - dst: "PyQt6/Qt6/qml/UM" - cura_binary_data: - package: "cura_binary_data" - src: "resources/cura/resources" - dst: "share/cura/resources" - uranium_binary_data: - package: "cura_binary_data" - src: "resources/uranium/resources" - dst: "share/uranium/resources" - windows_binary_data: - package: "cura_binary_data" - src: "windows" - dst: "share/windows" - fdm_materials: - package: "fdm_materials" - src: "materials" - dst: "share/cura/resources/materials" - tcl: - package: "tcl" - src: "lib/tcl8.6" - dst: "tcl" - tk: - package: "tk" - src: "lib/tk8.6" - dst: "tk" - binaries: - curaengine: - package: "curaengine" - src: "bin" - dst: "." - binary: "CuraEngine" - hiddenimports: - - "pySavitar" - - "pyArcus" - - "pynest2d" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "logging.handlers" - - "zeroconf" - - "fcntl" - - "stl" - - "serial" - collect_all: - - "cura" - - "UM" - - "serial" - - "Charon" - - "sqlite3" - - "trimesh" - - "win32ctypes" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "stl" - icon: - Windows: "./icons/Cura.ico" - Macos: "./icons/cura.icns" - Linux: "./icons/cura-128.png" diff --git a/conanfile.py b/conanfile.py index 05e93d4065..f5f1d5fe6b 100644 --- a/conanfile.py +++ b/conanfile.py @@ -31,7 +31,7 @@ class CuraConan(ConanFile): # FIXME: Remove specific branch once merged to main # Extending the conanfile with the UMBaseConanfile https://github.com/Ultimaker/conan-ultimaker-index/tree/CURA-9177_Fix_CI_CD/recipes/umbase - python_requires = "umbase/0.1.2@ultimaker/testing" + python_requires = "umbase/0.1.4@ultimaker/testing" python_requires_extend = "umbase.UMBaseConanfile" options = { @@ -138,7 +138,7 @@ class CuraConan(ConanFile): cura_digital_factory_url = self._digital_factory_url)) def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file): - pyinstaller_metadata = self._um_data(self.version)["pyinstaller"] + pyinstaller_metadata = self._um_data(self.version, self.channel)["pyinstaller"] datas = [(str(self._base_dir.joinpath("conan_install_info.json")), ".")] for data in pyinstaller_metadata["datas"].values(): if "package" in data: # get the paths from conan package @@ -230,7 +230,7 @@ class CuraConan(ConanFile): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): - for req in self._um_data(self.version)["requirements"]: + for req in self._um_data(self.version, self.channel)["requirements"]: self.requires(req) def layout(self): @@ -249,8 +249,8 @@ class CuraConan(ConanFile): if self.options.devtools: entitlements_file = "'{}'".format(Path(self.source_folder, "packaging", "dmg", "cura.entitlements")) self._generate_pyinstaller_spec(location = self.generators_folder, - entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data(self.version)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data(self.version, self.channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data(self.version, self.channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def imports(self): @@ -347,8 +347,8 @@ echo "CURA_VERSION_FULL={{ cura_version_full }}" >> ${{ env_prefix }}GITHUB_ENV entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "dmg", "cura.entitlements")) self._generate_pyinstaller_spec(location = self._base_dir, - entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data(self.version)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data(self.version, self.channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data(self.version, self.channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def package(self): From 798facd63bd75b8b30144e6d5501431ea05d8656 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Mon, 18 Jul 2022 10:01:24 +0200 Subject: [PATCH 08/18] Add pkg-config to Linux system reqs Is needed to build CPython and it wasn't installed Contributes to CURA-9342 --- .github/workflows/conan-package-create.yml | 2 +- .github/workflows/cura-installer.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conan-package-create.yml b/.github/workflows/conan-package-create.yml index edfd6e5687..7901399f45 100644 --- a/.github/workflows/conan-package-create.yml +++ b/.github/workflows/conan-package-create.yml @@ -90,7 +90,7 @@ jobs: - name: Install Linux system requirements if: ${{ runner.os == 'Linux' }} - run: sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev -y + run: sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config -y - name: Clean Conan local cache if: ${{ inputs.conan_clean_local_cache }} diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index cfb85d75a3..704669d642 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -117,7 +117,7 @@ jobs: - name: Install Linux system requirements if: ${{ runner.os == 'Linux' }} run: | - sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev -y + sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config -y wget --no-check-certificate --quiet https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O $GITHUB_WORKSPACE/appimagetool chmod +x $GITHUB_WORKSPACE/appimagetool echo "APPIMAGETOOL_LOCATION=$GITHUB_WORKSPACE/appimagetool" >> $GITHUB_ENV From cd303b4e6fb2ea734b5ebb049840f230a6635d45 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Mon, 18 Jul 2022 11:34:21 +0200 Subject: [PATCH 09/18] Make sure all dynamic libs are copied to the dist Solve it dynamically in the Ultimaker-Cura.spec, Such that we can copy files manually (OpenSSL shared) to the bin/Script folder after the cura install step. Contributes to CURA-9342 --- Ultimaker-Cura.spec.jinja | 7 +++++++ conanfile.py | 9 +-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Ultimaker-Cura.spec.jinja b/Ultimaker-Cura.spec.jinja index 7609a64672..c4621d75f5 100644 --- a/Ultimaker-Cura.spec.jinja +++ b/Ultimaker-Cura.spec.jinja @@ -12,6 +12,13 @@ hiddenimports = {{ hiddenimports }} datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2] {% endfor %} +# Add dynamic libs in the venv bin/Script Path. This is needed because we might copy some additional libs +# e.q.: OpenSSL 1.1.1l in that directory with a separate: +# `conan install openssl@1.1.1l -g deploy && cp openssl/bin/*.so cura_inst/bin` +binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.so*")]) +binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.dll")]) +binaries.extend([(str(bin), ".") for bin in Path("{{ venv_script_path }}").glob("*.dylib")]) + block_cipher = None a = Analysis( diff --git a/conanfile.py b/conanfile.py index f5f1d5fe6b..45372fd209 100644 --- a/conanfile.py +++ b/conanfile.py @@ -171,15 +171,7 @@ class CuraConan(ConanFile): for bin in src_path.glob(binary["binary"]): binaries.append((str(bin), binary["dst"])) - # Add dynamic libs in the venv bin/Script and lib Path. This is needed because we might copy some additional libs - # e.q.: OpenSSL 1.1.1l in that directory with a separate: - # `conan install openssl@1.1.1l -g deploy && cp openssl/bin/*.so cura_inst/bin` - for bin in self._script_dir.glob("*.[so|dll|dylib]"): - binaries.append(str(bin), ".") - for _, dependency in self.dependencies.items(): - # if dependency.ref.name == "cpython": - # continue for bin_paths in dependency.cpp_info.bindirs: binaries.extend([(f"{p}", ".") for p in Path(bin_paths).glob("**/*.dll")]) binaries.extend([(f"{p}", ".") for p in Path(bin_paths).glob("**/*.dylib")]) @@ -203,6 +195,7 @@ class CuraConan(ConanFile): entrypoint = entrypoint_location, datas = datas, binaries = binaries, + venv_script_path = str(self._script_dir), hiddenimports = pyinstaller_metadata["hiddenimports"], collect_all = pyinstaller_metadata["collect_all"], icon = icon_path, From e4001798de2843af8aac1313309a7286697b8bb8 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 07:58:05 +0200 Subject: [PATCH 10/18] Update reqs in conandata Contributes to CURA-9365 --- conandata.yml | 108 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 100 insertions(+), 8 deletions(-) diff --git a/conandata.yml b/conandata.yml index b9e9acce7d..a98bdb3b3f 100644 --- a/conandata.yml +++ b/conandata.yml @@ -196,12 +196,12 @@ Linux: "./icons/cura-128.png" "5.1.0-beta": requirements: - - "arcus/5.1.0@ultimaker/stable" + - "arcus/5.1.0" - "curaengine/5.1.0@ultimaker/stable" - - "savitar/5.1.0@ultimaker/stable" - - "pynest2d/5.1.0@ultimaker/stable" + - "savitar/5.1.0" + - "pynest2d/5.1.0" - "uranium/5.1.0@ultimaker/stable" - - "fdm_materials/5.1.0@ultimaker/stable" + - "fdm_materials/5.1.0" - "cura_binary_data/5.1.0@ultimaker/stable" - "cpython/3.10.4" runinfo: @@ -288,12 +288,104 @@ Linux: "./icons/cura-128.png" "cura_8665": requirements: - - "arcus/(latest)@ultimaker/stable" + - "arcus/5.1.0" - "curaengine/(latest)@ultimaker/stable" - - "savitar/(latest)@ultimaker/stable" - - "pynest2d/(latest)@ultimaker/stable" + - "savitar/5.1.0" + - "pynest2d/5.1.0" - "uranium/(latest)@ultimaker/stable" - - "fdm_materials/(latest)@ultimaker/stable" + - "fdm_materials/5.1.0" + - "cura_binary_data/(latest)@ultimaker/stable" + - "cpython/3.10.4" + runinfo: + entrypoint: "cura_app.py" + pyinstaller: + datas: + cura_plugins: + package: "cura" + src: "plugins" + dst: "share/cura/plugins" + cura_resources: + package: "cura" + src: "resources" + dst: "share/cura/resources" + uranium_plugins: + package: "uranium" + src: "plugins" + dst: "share/uranium/plugins" + uranium_resources: + package: "uranium" + src: "resources" + dst: "share/uranium/resources" + uranium_um_qt_qml_um: + package: "uranium" + src: "site-packages/UM/Qt/qml/UM" + dst: "PyQt6/Qt6/qml/UM" + cura_binary_data: + package: "cura_binary_data" + src: "resources/cura/resources" + dst: "share/cura/resources" + uranium_binary_data: + package: "cura_binary_data" + src: "resources/uranium/resources" + dst: "share/uranium/resources" + windows_binary_data: + package: "cura_binary_data" + src: "windows" + dst: "share/windows" + fdm_materials: + package: "fdm_materials" + src: "materials" + dst: "share/cura/resources/materials" + tcl: + package: "tcl" + src: "lib/tcl8.6" + dst: "tcl" + tk: + package: "tk" + src: "lib/tk8.6" + dst: "tk" + binaries: + curaengine: + package: "curaengine" + src: "bin" + dst: "." + binary: "CuraEngine" + hiddenimports: + - "pySavitar" + - "pyArcus" + - "pynest2d" + - "PyQt6" + - "PyQt6.QtNetwork" + - "PyQt6.sip" + - "logging.handlers" + - "zeroconf" + - "fcntl" + - "stl" + - "serial" + collect_all: + - "cura" + - "UM" + - "serial" + - "Charon" + - "sqlite3" + - "trimesh" + - "win32ctypes" + - "PyQt6" + - "PyQt6.QtNetwork" + - "PyQt6.sip" + - "stl" + icon: + Windows: "./icons/Cura.ico" + Macos: "./icons/cura.icns" + Linux: "./icons/cura-128.png" +"cura_9342": + requirements: + - "arcus/5.1.0" + - "curaengine/(latest)@ultimaker/stable" + - "savitar/5.1.0" + - "pynest2d/5.1.0" + - "uranium/(latest)@ultimaker/stable" + - "fdm_materials/5.1.0" - "cura_binary_data/(latest)@ultimaker/stable" - "cpython/3.10.4" runinfo: From 3b1de601d4ff622766a1558e2b6d3111b71df779 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 08:26:49 +0200 Subject: [PATCH 11/18] Use new cache location to gert ride of the old Ultimaker capitalized Contributes to CURA-9365 (cherry picked from commit 03285f80fc51c47e6ac96c24b85aa4ebf99251c1) --- .github/workflows/cura-installer.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml index 3c3334010d..b633d49474 100644 --- a/.github/workflows/cura-installer.yml +++ b/.github/workflows/cura-installer.yml @@ -98,7 +98,7 @@ jobs: path: | $HOME/.conan/data $HOME/.conan/conan_download_cache - key: conan-${{ runner.os }}-${{ runner.arch }} + key: conan-${{ runner.os }}-${{ runner.arch }}-installer-cache - name: Cache Conan local repository packages (Powershell) uses: actions/cache@v3 @@ -108,7 +108,7 @@ jobs: C:\Users\runneradmin\.conan\data C:\.conan C:\Users\runneradmin\.conan\conan_download_cache - key: conan-${{ runner.os }}-${{ runner.arch }} + key: conan-${{ runner.os }}-${{ runner.arch }}-installer-cache - name: Install MacOS system requirements if: ${{ runner.os == 'Macos' }} From 0397a95381c0947bf203bbcf6cb74fc5ef981116 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 08:36:03 +0200 Subject: [PATCH 12/18] Use new cache location to gert ride of the old Ultimaker capitalized Contributes to CURA-9365 --- .github/workflows/conan-package-create.yml | 4 ++-- .github/workflows/conan-recipe-export.yml | 2 +- .github/workflows/unit-test.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/conan-package-create.yml b/.github/workflows/conan-package-create.yml index 7901399f45..b0e613493c 100644 --- a/.github/workflows/conan-package-create.yml +++ b/.github/workflows/conan-package-create.yml @@ -72,7 +72,7 @@ jobs: path: | $HOME/.conan/data $HOME/.conan/conan_download_cache - key: conan-${{ runner.os }}-${{ runner.arch }} + key: conan-${{ runner.os }}-${{ runner.arch }}-create-cache - name: Cache Conan local repository packages (Powershell) uses: actions/cache@v3 @@ -82,7 +82,7 @@ jobs: C:\Users\runneradmin\.conan\data C:\.conan C:\Users\runneradmin\.conan\conan_download_cache - key: conan-${{ runner.os }}-${{ runner.arch }} + key: conan-${{ runner.os }}-${{ runner.arch }}-create-cache - name: Install MacOS system requirements if: ${{ runner.os == 'Macos' }} diff --git a/.github/workflows/conan-recipe-export.yml b/.github/workflows/conan-recipe-export.yml index a53059f52a..9adca8ebb3 100644 --- a/.github/workflows/conan-recipe-export.yml +++ b/.github/workflows/conan-recipe-export.yml @@ -68,7 +68,7 @@ jobs: uses: actions/cache@v3 with: path: $HOME/.conan/data - key: ${{ runner.os }}-conan + key: ${{ runner.os }}-conan-export-cache - name: Get Conan configuration from branch if: ${{ inputs.conan_config_branch != '' }} diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 276649cd87..20ea83bdb1 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -99,7 +99,7 @@ jobs: path: | $HOME/.conan/data $HOME/.conan/conan_download_cache - key: conan-${{ runner.os }}-${{ runner.arch }} + key: conan-${{ runner.os }}-${{ runner.arch }}-unit-cache - name: Install Linux system requirements if: ${{ runner.os == 'Linux' }} From 8f87744cd5e22de6d8d7ca30795f189600544281 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 09:04:06 +0200 Subject: [PATCH 13/18] Pinned arcus, savitar and pynest2d to release Contributes to CURA-9365 --- conandata.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/conandata.yml b/conandata.yml index b9e9acce7d..3649bbeee8 100644 --- a/conandata.yml +++ b/conandata.yml @@ -12,10 +12,10 @@ # Subject to change in the future! "None": requirements: - - "arcus/(latest)@ultimaker/testing" + - "arcus/5.1.0" - "curaengine/(latest)@ultimaker/testing" - - "savitar/(latest)@ultimaker/testing" - - "pynest2d/(latest)@ultimaker/testing" + - "savitar/5.1.0" + - "pynest2d/5.1.0" - "uranium/(latest)@ultimaker/testing" - "fdm_materials/(latest)@ultimaker/testing" - "cura_binary_data/(latest)@ultimaker/testing" @@ -196,10 +196,10 @@ Linux: "./icons/cura-128.png" "5.1.0-beta": requirements: - - "arcus/5.1.0@ultimaker/stable" + - "arcus/5.1.0" - "curaengine/5.1.0@ultimaker/stable" - - "savitar/5.1.0@ultimaker/stable" - - "pynest2d/5.1.0@ultimaker/stable" + - "savitar/5.1.0" + - "pynest2d/5.1.0" - "uranium/5.1.0@ultimaker/stable" - "fdm_materials/5.1.0@ultimaker/stable" - "cura_binary_data/5.1.0@ultimaker/stable" @@ -288,10 +288,10 @@ Linux: "./icons/cura-128.png" "cura_8665": requirements: - - "arcus/(latest)@ultimaker/stable" + - "arcus/5.1.0" - "curaengine/(latest)@ultimaker/stable" - - "savitar/(latest)@ultimaker/stable" - - "pynest2d/(latest)@ultimaker/stable" + - "savitar/5.1.0" + - "pynest2d/5.1.0" - "uranium/(latest)@ultimaker/stable" - "fdm_materials/(latest)@ultimaker/stable" - "cura_binary_data/(latest)@ultimaker/stable" From 1c3a46c9e2c49ffeb6e4f5759cd1405e7d29221a Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 09:52:54 +0200 Subject: [PATCH 14/18] Use empty string for channel if channel is undefined Contributes to CURA-9365 --- conanfile.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/conanfile.py b/conanfile.py index b7164ecf56..52d9ac01f0 100644 --- a/conanfile.py +++ b/conanfile.py @@ -138,7 +138,8 @@ class CuraConan(ConanFile): cura_digital_factory_url = self._digital_factory_url)) def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file): - pyinstaller_metadata = self._um_data(self.version, self.channel)["pyinstaller"] + channel = "" if not self.channel else self.channel + pyinstaller_metadata = self._um_data(self.version, channel)["pyinstaller"] datas = [(str(self._base_dir.joinpath("conan_install_info.json")), ".")] for data in pyinstaller_metadata["datas"].values(): if "package" in data: # get the paths from conan package @@ -224,7 +225,8 @@ class CuraConan(ConanFile): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): - for req in self._um_data(self.version, self.channel)["requirements"]: + channel = "" if not self.channel else self.channel + for req in self._um_data(self.version, channel)["requirements"]: self.requires(req) def layout(self): @@ -241,10 +243,11 @@ class CuraConan(ConanFile): vr.generate() if self.options.devtools: + channel = "" if not self.channel else self.channel entitlements_file = "'{}'".format(Path(self.source_folder, "packaging", "dmg", "cura.entitlements")) self._generate_pyinstaller_spec(location = self.generators_folder, - entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data(self.version, self.channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data(self.version, self.channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data(self.version, channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data(self.version, channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def imports(self): @@ -340,9 +343,10 @@ echo "CURA_VERSION_FULL={{ cura_version_full }}" >> ${{ env_prefix }}GITHUB_ENV self._generate_cura_version(Path(self._site_packages, "cura")) entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "dmg", "cura.entitlements")) + channel = "" if not self.channel else self.channel self._generate_pyinstaller_spec(location = self._base_dir, - entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data(self.version, self.channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data(self.version, self.channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data(self.version, channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data(self.version, channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def package(self): From e92e815226e4402d3799f8f6b4332413f74962a9 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Jul 2022 10:08:54 +0200 Subject: [PATCH 15/18] Add video link for 5.1 --- resources/texts/change_log.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt index 79ba5b4d5a..8030327dd2 100644 --- a/resources/texts/change_log.txt +++ b/resources/texts/change_log.txt @@ -1,4 +1,6 @@ [5.1] +For an overview of the new features in Cura 5.1, please watch our video. + * Improved toolpath simplification algorithm The algorithm that reduces the resolution of the print has been rewritten, providing a more constant resolution to allow for greater precision without causing buffer underruns. From 3609871ba6aa0d0e730153e02adc386e9ce275dd Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 10:33:04 +0200 Subject: [PATCH 16/18] Use umbase 0.1.5 Contributes to CURA-9365 --- conanfile.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/conanfile.py b/conanfile.py index 52d9ac01f0..25d4afa03a 100644 --- a/conanfile.py +++ b/conanfile.py @@ -31,7 +31,7 @@ class CuraConan(ConanFile): # FIXME: Remove specific branch once merged to main # Extending the conanfile with the UMBaseConanfile https://github.com/Ultimaker/conan-ultimaker-index/tree/CURA-9177_Fix_CI_CD/recipes/umbase - python_requires = "umbase/0.1.4@ultimaker/testing" + python_requires = "umbase/0.1.5@ultimaker/testing" python_requires_extend = "umbase.UMBaseConanfile" options = { @@ -138,8 +138,7 @@ class CuraConan(ConanFile): cura_digital_factory_url = self._digital_factory_url)) def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file): - channel = "" if not self.channel else self.channel - pyinstaller_metadata = self._um_data(self.version, channel)["pyinstaller"] + pyinstaller_metadata = self._um_data()["pyinstaller"] datas = [(str(self._base_dir.joinpath("conan_install_info.json")), ".")] for data in pyinstaller_metadata["datas"].values(): if "package" in data: # get the paths from conan package @@ -225,8 +224,7 @@ class CuraConan(ConanFile): raise ConanInvalidConfiguration("Only versions 5+ are support") def requirements(self): - channel = "" if not self.channel else self.channel - for req in self._um_data(self.version, channel)["requirements"]: + for req in self._um_data()["requirements"]: self.requires(req) def layout(self): @@ -243,11 +241,10 @@ class CuraConan(ConanFile): vr.generate() if self.options.devtools: - channel = "" if not self.channel else self.channel entitlements_file = "'{}'".format(Path(self.source_folder, "packaging", "dmg", "cura.entitlements")) self._generate_pyinstaller_spec(location = self.generators_folder, - entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data(self.version, channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data(self.version, channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.source_folder, self._um_data()["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.source_folder, "packaging", self._um_data()["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def imports(self): @@ -343,10 +340,9 @@ echo "CURA_VERSION_FULL={{ cura_version_full }}" >> ${{ env_prefix }}GITHUB_ENV self._generate_cura_version(Path(self._site_packages, "cura")) entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "dmg", "cura.entitlements")) - channel = "" if not self.channel else self.channel self._generate_pyinstaller_spec(location = self._base_dir, - entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data(self.version, channel)["runinfo"]["entrypoint"])).replace("\\", "\\\\"), - icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data(self.version, channel)["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), + entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self._um_data()["runinfo"]["entrypoint"])).replace("\\", "\\\\"), + icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self._um_data()["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"), entitlements_file = entitlements_file if self.settings.os == "Macos" else "None") def package(self): From c8ce7bcb9da93ced5969ec90d7e81572af75fc30 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Tue, 19 Jul 2022 10:44:56 +0200 Subject: [PATCH 17/18] Use latest for stable channel Contributes to CURA-9365 --- conandata.yml | 94 +-------------------------------------------------- 1 file changed, 1 insertion(+), 93 deletions(-) diff --git a/conandata.yml b/conandata.yml index 3649bbeee8..ed7d1ef593 100644 --- a/conandata.yml +++ b/conandata.yml @@ -195,105 +195,13 @@ Macos: "./icons/cura.icns" Linux: "./icons/cura-128.png" "5.1.0-beta": - requirements: - - "arcus/5.1.0" - - "curaengine/5.1.0@ultimaker/stable" - - "savitar/5.1.0" - - "pynest2d/5.1.0" - - "uranium/5.1.0@ultimaker/stable" - - "fdm_materials/5.1.0@ultimaker/stable" - - "cura_binary_data/5.1.0@ultimaker/stable" - - "cpython/3.10.4" - runinfo: - entrypoint: "cura_app.py" - pyinstaller: - datas: - cura_plugins: - package: "cura" - src: "plugins" - dst: "share/cura/plugins" - cura_resources: - package: "cura" - src: "resources" - dst: "share/cura/resources" - uranium_plugins: - package: "uranium" - src: "plugins" - dst: "share/uranium/plugins" - uranium_resources: - package: "uranium" - src: "resources" - dst: "share/uranium/resources" - uranium_um_qt_qml_um: - package: "uranium" - src: "site-packages/UM/Qt/qml/UM" - dst: "PyQt6/Qt6/qml/UM" - cura_binary_data: - package: "cura_binary_data" - src: "resources/cura/resources" - dst: "share/cura/resources" - uranium_binary_data: - package: "cura_binary_data" - src: "resources/uranium/resources" - dst: "share/uranium/resources" - windows_binary_data: - package: "cura_binary_data" - src: "windows" - dst: "share/windows" - fdm_materials: - package: "fdm_materials" - src: "materials" - dst: "share/cura/resources/materials" - tcl: - package: "tcl" - src: "lib/tcl8.6" - dst: "tcl" - tk: - package: "tk" - src: "lib/tk8.6" - dst: "tk" - binaries: - curaengine: - package: "curaengine" - src: "bin" - dst: "." - binary: "CuraEngine" - hiddenimports: - - "pySavitar" - - "pyArcus" - - "pynest2d" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "logging.handlers" - - "zeroconf" - - "fcntl" - - "stl" - - "serial" - collect_all: - - "cura" - - "UM" - - "serial" - - "Charon" - - "sqlite3" - - "trimesh" - - "win32ctypes" - - "PyQt6" - - "PyQt6.QtNetwork" - - "PyQt6.sip" - - "stl" - icon: - Windows: "./icons/Cura.ico" - Macos: "./icons/cura.icns" - Linux: "./icons/cura-128.png" -"cura_8665": requirements: - "arcus/5.1.0" - "curaengine/(latest)@ultimaker/stable" - "savitar/5.1.0" - "pynest2d/5.1.0" - "uranium/(latest)@ultimaker/stable" - - "fdm_materials/(latest)@ultimaker/stable" + - "fdm_materials/5.1.0" - "cura_binary_data/(latest)@ultimaker/stable" - "cpython/3.10.4" runinfo: From ce8eb1056cb712883cfc53bfa340ad4ccfce987e Mon Sep 17 00:00:00 2001 From: Jelle Spijker Date: Tue, 19 Jul 2022 11:16:34 +0200 Subject: [PATCH 18/18] Add Path to the imports --- Ultimaker-Cura.spec.jinja | 1 + 1 file changed, 1 insertion(+) diff --git a/Ultimaker-Cura.spec.jinja b/Ultimaker-Cura.spec.jinja index c4621d75f5..74e4fd098b 100644 --- a/Ultimaker-Cura.spec.jinja +++ b/Ultimaker-Cura.spec.jinja @@ -1,5 +1,6 @@ # -*- mode: python ; coding: utf-8 -*- import os +from pathlib import Path from PyInstaller.utils.hooks import collect_all