From e9cbad1164e5ffdf8a9e2dde8655817b4083d1d6 Mon Sep 17 00:00:00 2001 From: "j.spijker@ultimaker.com" Date: Fri, 1 Jul 2022 05:34:52 +0200 Subject: [PATCH] Allow for pyinstaller to sign the files on MacOS Contributes to CURA-9365 --- Ultimaker-Cura.spec.jinja | 5 +++-- conanfile.py | 12 +++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Ultimaker-Cura.spec.jinja b/Ultimaker-Cura.spec.jinja index c3295eccd4..f9f2c1d8d7 100644 --- a/Ultimaker-Cura.spec.jinja +++ b/Ultimaker-Cura.spec.jinja @@ -1,5 +1,6 @@ # -*- mode: python ; coding: utf-8 -*- from PyInstaller.utils.hooks import collect_all +import os datas = {{ datas }} binaries = {{ binaries }} @@ -43,8 +44,8 @@ exe = EXE( disable_windowed_traceback=False, argv_emulation=False, target_arch=None, - codesign_identity=None, - entitlements_file=None, + codesign_identity=os.getenv('CODESIGN_IDENTITY', None), + entitlements_file={{ entitlements_file }}, icon=r'{{ icon }}' ) coll = COLLECT( diff --git a/conanfile.py b/conanfile.py index 38228aeddc..790ceb6757 100644 --- a/conanfile.py +++ b/conanfile.py @@ -137,7 +137,7 @@ class CuraConan(ConanFile): cura_marketplace_root = self._marketplace_root, cura_digital_factory_url = self._digital_factory_url)) - def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path): + def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file): pyinstaller_metadata = self._um_data(self.version)["pyinstaller"] datas = [] for data in pyinstaller_metadata["datas"].values(): @@ -187,7 +187,8 @@ class CuraConan(ConanFile): binaries = binaries, hiddenimports = pyinstaller_metadata["hiddenimports"], collect_all = pyinstaller_metadata["collect_all"], - icon = icon_path + icon = icon_path, + entitlements_file = entitlements_file )) def source(self): @@ -223,7 +224,8 @@ class CuraConan(ConanFile): if self.options.devtools: self._generate_pyinstaller_spec(self.generators_folder, Path(self.source_folder, self._um_data(self.version)["runinfo"]["entrypoint"]), - Path(self.source_folder, "packaging", self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)])) + Path(self.source_folder, "packaging", self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)]), + Path(self.source_folder, "packaging", "signing", "cura.entitlements" if self.settings.os == "Macos" else None)) def imports(self): self.copy("CuraEngine.exe", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False) @@ -297,8 +299,8 @@ class CuraConan(ConanFile): self._generate_cura_version(Path(self._site_packages, "cura")) self._generate_pyinstaller_spec(self._base_dir, Path(self.cpp_info.bin_paths[0], self._um_data(self.version)["runinfo"]["entrypoint"]), - Path(self.cpp_info.res_paths[2], self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)])) - + Path(self.cpp_info.res_paths[2], self._um_data(self.version)["pyinstaller"]["icon"][str(self.settings.os)]), + Path(self.source_folder, "packaging", "signing", "cura.entitlements" if self.settings.os == "Macos" else None)) def package(self): self.copy("cura_app.py", src = ".", dst = self.cpp.package.bindirs[0])