diff options
author | jspijker <j.spijker@ultimaker.com> | 2022-07-19 17:52:20 +0300 |
---|---|---|
committer | jspijker <j.spijker@ultimaker.com> | 2022-07-19 17:52:20 +0300 |
commit | a4461a618f49554c9977fedd6af362dbfe4bb3b1 (patch) | |
tree | 2c6b68b057299d6aa0a5ff6befb650ebb6d5f20f | |
parent | 118dab7cf0ff8d7a31336ed1b8faf1d81e7050df (diff) | |
parent | 3dad5d564d86ea76614107c6245f82df92a0619b (diff) |
Merge branch '5.1'
# Conflicts:
# conandata.yml
-rw-r--r-- | .github/workflows/conan-package-create.yml | 2 | ||||
-rw-r--r-- | .github/workflows/cura-installer.yml | 22 | ||||
-rw-r--r-- | Ultimaker-Cura.spec.jinja | 8 | ||||
-rw-r--r-- | conanfile.py | 3 | ||||
-rw-r--r-- | cura/CuraPackageManager.py | 2 |
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 |