Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjspijker <j.spijker@ultimaker.com>2022-07-19 17:52:20 +0300
committerjspijker <j.spijker@ultimaker.com>2022-07-19 17:52:20 +0300
commita4461a618f49554c9977fedd6af362dbfe4bb3b1 (patch)
tree2c6b68b057299d6aa0a5ff6befb650ebb6d5f20f
parent118dab7cf0ff8d7a31336ed1b8faf1d81e7050df (diff)
parent3dad5d564d86ea76614107c6245f82df92a0619b (diff)
Merge branch '5.1'
# Conflicts: # conandata.yml
-rw-r--r--.github/workflows/conan-package-create.yml2
-rw-r--r--.github/workflows/cura-installer.yml22
-rw-r--r--Ultimaker-Cura.spec.jinja8
-rw-r--r--conanfile.py3
-rw-r--r--cura/CuraPackageManager.py2
5 files changed, 33 insertions, 4 deletions
diff --git a/.github/workflows/conan-package-create.yml b/.github/workflows/conan-package-create.yml
index ac0389fa79..ac0333bc9f 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: Get Conan configuration from branch
if: ${{ inputs.conan_config_branch != '' }}
diff --git a/.github/workflows/cura-installer.yml b/.github/workflows/cura-installer.yml
index 6f2d1b7a98..1fa6d538a3 100644
--- a/.github/workflows/cura-installer.yml
+++ b/.github/workflows/cura-installer.yml
@@ -116,7 +116,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
@@ -166,6 +166,26 @@ 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
+
+ - 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: Copy OpenSSL shared (Powershell)
+ if: ${{ runner.os == 'Windows' }}
+ run: |
+ cp openssl/bin/*.dll ./cura_inst/Scripts/
+ cp openssl/lib/*.lib ./cura_inst/Lib/
+
- name: Create the Cura dist
run: pyinstaller ./cura_inst/Ultimaker-Cura.spec
diff --git a/Ultimaker-Cura.spec.jinja b/Ultimaker-Cura.spec.jinja
index 7609a64672..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
@@ -12,6 +13,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 25d4afa03a..0d0dbac3d1 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -172,8 +172,6 @@ class CuraConan(ConanFile):
binaries.append((str(bin), binary["dst"]))
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")])
@@ -197,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,
diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py
index 4937618917..456aac97ac 100644
--- a/cura/CuraPackageManager.py
+++ b/cura/CuraPackageManager.py
@@ -14,6 +14,7 @@ from cura.Settings.GlobalStack import GlobalStack
from UM.PackageManager import PackageManager # The class we're extending.
from UM.Resources import Resources # To find storage paths for some resource types.
from UM.i18n import i18nCatalog
+from urllib.parse import unquote_plus
catalog = i18nCatalog("cura")
@@ -82,6 +83,7 @@ class CuraPackageManager(PackageManager):
def getMaterialFilePackageId(self, file_name: str, guid: str) -> str:
"""Get the id of the installed material package that contains file_name"""
+ file_name = unquote_plus(file_name)
for material_package in [f for f in os.scandir(self._installation_dirs_dict["materials"]) if f.is_dir()]:
package_id = material_package.name