diff --git a/Ultimaker-Cura.spec.jinja b/Ultimaker-Cura.spec.jinja index ae0636a4cf..e6ad23bd91 100644 --- a/Ultimaker-Cura.spec.jinja +++ b/Ultimaker-Cura.spec.jinja @@ -12,9 +12,11 @@ datas += tmp_ret[0]; binaries += tmp_ret[1]; hiddenimports += tmp_ret[2] block_cipher = None +{% for conan_binary in conan_binaries %}binaries += r'{{ conan_binary }}' +{% endfor %} a = Analysis( - ['{{ entrypoint }}'], + [r'{{ entrypoint }}'], pathex=[], binaries=binaries, datas=datas, @@ -35,7 +37,7 @@ exe = EXE( a.scripts, [], exclude_binaries=True, - name='{{ name }}', + name=r'{{ name }}', debug=False, bootloader_ignore_signals=False, strip=False, @@ -56,5 +58,5 @@ coll = COLLECT( strip=False, upx=True, upx_exclude=[], - name='{{ name }}' + name=r'{{ name }}' ) diff --git a/conanfile.py b/conanfile.py index 533b631abf..e5a5a7f41f 100644 --- a/conanfile.py +++ b/conanfile.py @@ -168,6 +168,13 @@ class CuraConan(ConanFile): for bin in src_path.glob(binary["binary"]): binaries.append((str(bin), binary["dst"])) + conan_binaries = [] + for _, dependency in self.dependencies.host.items(): + for bin_paths in dependency.cpp_info.bin_paths: + conan_binaries.extend(Path(bin_paths).glob("**/*.dll")) + conan_binaries.extend(Path(bin_paths).glob("**/*.dylib")) + conan_binaries.extend(Path(bin_paths).glob("**/*.so")) + with open(Path(__file__).parent.joinpath("Ultimaker-Cura.spec.jinja"), "r") as f: pyinstaller = Template(f.read()) @@ -177,6 +184,7 @@ class CuraConan(ConanFile): entrypoint = entrypoint_location, datas = datas, binaries = binaries, + conan_binaries = conan_binaries, hiddenimports = pyinstaller_metadata["hiddenimports"], collect_all = pyinstaller_metadata["collect_all"], icon = icon_path