From 9600f18545ddf78c08c84a5f67c41cb59c9d556c Mon Sep 17 00:00:00 2001 From: HellAholic Date: Mon, 24 Nov 2025 08:43:45 +0100 Subject: [PATCH 1/4] Add arm64 C++20 profile and update dependencies Introduced a new arm64_cpp20_profile for Windows builds with C++20 and updated several dependency configurations. Added 'shapely/2.0.6' to requirements, removed 'pynavlib' from requirements and pip lists, and updated cpython to version 3.12.7 in conanfile.py. --- arm64_cpp20_profile | 33 ++++++++++++++++++++++++ conandata.yml | 63 +-------------------------------------------- conanfile.py | 2 +- 3 files changed, 35 insertions(+), 63 deletions(-) create mode 100644 arm64_cpp20_profile diff --git a/arm64_cpp20_profile b/arm64_cpp20_profile new file mode 100644 index 00000000000..d9d4cceb24f --- /dev/null +++ b/arm64_cpp20_profile @@ -0,0 +1,33 @@ +[settings] +arch=armv8 +build_type=Release +compiler=msvc +compiler.cppstd=20 +compiler.runtime=dynamic +compiler.runtime_type=Release +compiler.version=194 +os=Windows +[options] +asio-grpc/*:local_allocator=recycling_allocator +boost/*:header_only=True +clipper/*:shared=True +cpython/*:shared=True +cpython/*:with_curses=False +cpython/*:with_tkinter=False +dulcificum/*:shared=False +grpc/*:csharp_plugin=False +grpc/*:node_plugin=False +grpc/*:objective_c_plugin=False +grpc/*:php_plugin=False +grpc/*:python_plugin=False +grpc/*:ruby_plugin=False +mpdecimal/*:shared=True +onetbb/*:tbbproxy=False +pyarcus/*:shared=True +pynest2d/*:shared=True +pysavitar/*:shared=True +[conf] +tools.build:skip_test=True +tools.cmake.cmaketoolchain:generator=Ninja +tools.gnu:define_libcxx11_abi=True +tools.system.package_manager:sudo=True diff --git a/conandata.yml b/conandata.yml index f1cc1178188..12dc4b9c86b 100644 --- a/conandata.yml +++ b/conandata.yml @@ -9,6 +9,7 @@ requirements: - "dulcificum/5.10.0" - "pysavitar/5.11.0-alpha.0" - "pynest2d/5.10.0" + - "shapely/2.0.6" requirements_internal: - "fdm_materials/5.12.0-alpha.0@ultimaker/testing" - "cura_private_data/5.12.0-alpha.0@internal/testing" @@ -127,7 +128,6 @@ pyinstaller: - "PyQt6.sip" - "stl" - "keyrings.alt" - - "pynavlib" collect_all_WINDOWS_ONLY: - "PyQt6.Qt" - "PyQt6.Qt6" @@ -410,51 +410,6 @@ pip_requirements_core: hashes: - sha256:b6feb6455337df834f6c9962d6ccf771515b7d939bca142b29c20c2376bc6111 - sha256:7979803c74610e11ef0c0d68a2942b152df52da55336e0c9d58daf1831cbdf33 - shapely: - version: "2.0.6" - hashes: - - sha256:29a34e068da2d321e926b5073539fd2a1d4429a2c656bd63f0bd4c8f5b236d0b - - sha256:e1c84c3f53144febf6af909d6b581bc05e8785d57e27f35ebaa5c1ab9baba13b - - sha256:2ad2fae12dca8d2b727fa12b007e46fbc522148a584f5d6546c539f3464dccde - - sha256:b3304883bd82d44be1b27a9d17f1167fda8c7f5a02a897958d86c59ec69b705e - - sha256:3ec3a0eab496b5e04633a39fa3d5eb5454628228201fb24903d38174ee34565e - - sha256:28f87cdf5308a514763a5c38de295544cb27429cfa655d50ed8431a4796090c4 - - sha256:5aeb0f51a9db176da9a30cb2f4329b6fbd1e26d359012bb0ac3d3c7781667a9e - - sha256:9a7a78b0d51257a367ee115f4d41ca4d46edbd0dd280f697a8092dd3989867b2 - - sha256:f32c23d2f43d54029f986479f7c1f6e09c6b3a19353a3833c2ffb226fb63a855 - - sha256:b3dc9fb0eb56498912025f5eb352b5126f04801ed0e8bdbd867d21bdbfd7cbd0 - - sha256:d93b7e0e71c9f095e09454bf18dad5ea716fb6ced5df3cb044564a00723f339d - - sha256:c02eb6bf4cfb9fe6568502e85bb2647921ee49171bcd2d4116c7b3109724ef9b - - sha256:cec9193519940e9d1b86a3b4f5af9eb6910197d24af02f247afbfb47bcb3fab0 - - sha256:83b94a44ab04a90e88be69e7ddcc6f332da7c0a0ebb1156e1c4f568bbec983c3 - - sha256:537c4b2716d22c92036d00b34aac9d3775e3691f80c7aa517c2c290351f42cd8 - - sha256:98fea108334be345c283ce74bf064fa00cfdd718048a8af7343c59eb40f59726 - - sha256:42fd4cd4834747e4990227e4cbafb02242c0cffe9ce7ef9971f53ac52d80d55f - - sha256:665990c84aece05efb68a21b3523a6b2057e84a1afbef426ad287f0796ef8a48 - - sha256:42805ef90783ce689a4dde2b6b2f261e2c52609226a0438d882e3ced40bb3013 - - sha256:6d2cb146191a47bd0cee8ff5f90b47547b82b6345c0d02dd8b25b88b68af62d7 - - sha256:e3fdef0a1794a8fe70dc1f514440aa34426cc0ae98d9a1027fb299d45741c381 - - sha256:2c665a0301c645615a107ff7f52adafa2153beab51daf34587170d85e8ba6805 - - sha256:0334bd51828f68cd54b87d80b3e7cee93f249d82ae55a0faf3ea21c9be7b323a - - sha256:d37d070da9e0e0f0a530a621e17c0b8c3c9d04105655132a87cfff8bd77cc4c2 - - sha256:fa7468e4f5b92049c0f36d63c3e309f85f2775752e076378e36c6387245c5462 - - sha256:ed5867e598a9e8ac3291da6cc9baa62ca25706eea186117034e8ec0ea4355653 - - sha256:81d9dfe155f371f78c8d895a7b7f323bb241fb148d848a2bf2244f79213123fe - - sha256:fbb7bf02a7542dba55129062570211cfb0defa05386409b3e306c39612e7fbcc - - sha256:837d395fac58aa01aa544495b97940995211e3e25f9aaf87bc3ba5b3a8cd1ac7 - - sha256:c6d88ade96bf02f6bfd667ddd3626913098e243e419a0325ebef2bbd481d1eb6 - - sha256:8b3b818c4407eaa0b4cb376fd2305e20ff6df757bf1356651589eadc14aab41b - - sha256:1bbc783529a21f2bd50c79cef90761f72d41c45622b3e57acf78d984c50a5d13 - - sha256:2423f6c0903ebe5df6d32e0066b3d94029aab18425ad4b07bf98c3972a6e25a1 - - sha256:2de00c3bfa80d6750832bde1d9487e302a6dd21d90cb2f210515cefdb616e5f5 - - sha256:3a82d58a1134d5e975f19268710e53bddd9c473743356c90d97ce04b73e101ee - - sha256:392f66f458a0a2c706254f473290418236e52aa4c9b476a072539d63a2460595 - - sha256:eba5bae271d523c938274c61658ebc34de6c4b33fdf43ef7e938b5776388c1be - - sha256:7060566bc4888b0c8ed14b5d57df8a0ead5c28f9b69fb6bed4476df31c51b0af - - sha256:b02154b3e9d076a29a8513dffcb80f047a5ea63c897c0cd3d3679f29363cf7e5 - - sha256:44246d30124a4f1a638a7d5419149959532b99dfa25b54393512e6acc9c211ac - - sha256:2b542d7f1dbb89192d3512c52b679c822ba916f93479fa5d4fc2fe4fa0b3c9e8 - - sha256:997f6159b1484059ec239cacaa53467fd8b5564dabe186cd84ac2944663b0bf6 cython: version: "0.29.26" hashes: @@ -596,22 +551,6 @@ pip_requirements_core: hashes: - sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8 - sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755 - pynavlib: - version: "0.9.4" - hashes: - - sha256:fdd5ab5b6e0a2c9bbcebb154ac7303daf845865a1649be04e1bd8e8e5889401f - - sha256:493c4b3cacc939b021a694d99723106dbd7ee5515ad4dfc1c7fc8219ef20cf3a - - sha256:332831553a70be05fe58c43a08109b42970cfedc6086ffb4306859142a0e9210 - - sha256:9173f61ad83172c306b92bbe38f949889c158cd6dfdc924db01f257a437bf2a6 - - Macos: - pynavlib: - version: "0.9.4" - hashes: - - sha256:567efd0af97f9014326898b209eea94d9f5cc58e9f589ccf8354584568fcb87d - - sha256:f0d7ce426e816788aa96b419fd7da263eafb99aca46ce3b6e5dbaf2bbf6b614a - - sha256:33962a322033a78db05a8c2cc3d59e057fbea5b04879c3c54e2fe3041d691a12 - - sha256:d06d94b1dee4ba024b4a121869e572f571673a3b8c15b4055f52236d43c19a02 pip_requirements_dev: any_os: diff --git a/conanfile.py b/conanfile.py index 698b4b32f1d..c6e9d0bd986 100644 --- a/conanfile.py +++ b/conanfile.py @@ -598,7 +598,7 @@ def requirements(self): if self.options.enterprise: for req in self.conan_data["requirements_enterprise"]: self.requires(req) - self.requires("cpython/3.12.2") + self.requires("cpython/3.12.7") def layout(self): self.folders.source = "." From 2498c97e18b1c5a24a35f9dcceb70fc8636c21f2 Mon Sep 17 00:00:00 2001 From: HellAholic Date: Tue, 2 Dec 2025 10:48:33 +0100 Subject: [PATCH 2/4] Remove the local generated profile Jinja template is updated so this file should now be automatically generated --- arm64_cpp20_profile | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 arm64_cpp20_profile diff --git a/arm64_cpp20_profile b/arm64_cpp20_profile deleted file mode 100644 index d9d4cceb24f..00000000000 --- a/arm64_cpp20_profile +++ /dev/null @@ -1,33 +0,0 @@ -[settings] -arch=armv8 -build_type=Release -compiler=msvc -compiler.cppstd=20 -compiler.runtime=dynamic -compiler.runtime_type=Release -compiler.version=194 -os=Windows -[options] -asio-grpc/*:local_allocator=recycling_allocator -boost/*:header_only=True -clipper/*:shared=True -cpython/*:shared=True -cpython/*:with_curses=False -cpython/*:with_tkinter=False -dulcificum/*:shared=False -grpc/*:csharp_plugin=False -grpc/*:node_plugin=False -grpc/*:objective_c_plugin=False -grpc/*:php_plugin=False -grpc/*:python_plugin=False -grpc/*:ruby_plugin=False -mpdecimal/*:shared=True -onetbb/*:tbbproxy=False -pyarcus/*:shared=True -pynest2d/*:shared=True -pysavitar/*:shared=True -[conf] -tools.build:skip_test=True -tools.cmake.cmaketoolchain:generator=Ninja -tools.gnu:define_libcxx11_abi=True -tools.system.package_manager:sudo=True From e206ad36d150e0608056a3346eb37cc8e5422bfd Mon Sep 17 00:00:00 2001 From: HellAholic Date: Tue, 2 Dec 2025 11:16:15 +0100 Subject: [PATCH 3/4] modify pynavlib package for Windows x64 and add back the hashes Added pynavlib version 0.9.4 with corresponding hashes to pip_requirements_core for Windows x64 and MacOS platforms. This enables platform-specific installation of pynavlib where supported. --- conandata.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/conandata.yml b/conandata.yml index 12dc4b9c86b..718216c683a 100644 --- a/conandata.yml +++ b/conandata.yml @@ -552,6 +552,25 @@ pip_requirements_core: - sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8 - sha256:d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755 + Windows_x64: + # pynavlib is only available for Windows x64, not ARM64 + pynavlib: + version: "0.9.4" + hashes: + - sha256:fdd5ab5b6e0a2c9bbcebb154ac7303daf845865a1649be04e1bd8e8e5889401f + - sha256:493c4b3cacc939b021a694d99723106dbd7ee5515ad4dfc1c7fc8219ef20cf3a + - sha256:332831553a70be05fe58c43a08109b42970cfedc6086ffb4306859142a0e9210 + - sha256:9173f61ad83172c306b92bbe38f949889c158cd6dfdc924db01f257a437bf2a6 + + Macos: + pynavlib: + version: "0.9.4" + hashes: + - sha256:567efd0af97f9014326898b209eea94d9f5cc58e9f589ccf8354584568fcb87d + - sha256:f0d7ce426e816788aa96b419fd7da263eafb99aca46ce3b6e5dbaf2bbf6b614a + - sha256:33962a322033a78db05a8c2cc3d59e057fbea5b04879c3c54e2fe3041d691a12 + - sha256:d06d94b1dee4ba024b4a121869e572f571673a3b8c15b4055f52236d43c19a02 + pip_requirements_dev: any_os: pytest: {} From 39199e648e343d86db0a81c32da14b7e35cbaba3 Mon Sep 17 00:00:00 2001 From: HellAholic Date: Tue, 2 Dec 2025 11:19:17 +0100 Subject: [PATCH 4/4] Add pynavlib to PyInstaller hidden imports Included 'pynavlib' in the PyInstaller hiddenimports list. On Windows ARM64, 'pynavlib' is excluded from collect_all due to lack of ARM64 wheels. --- conandata.yml | 1 + conanfile.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/conandata.yml b/conandata.yml index 718216c683a..bc98dfa7947 100644 --- a/conandata.yml +++ b/conandata.yml @@ -128,6 +128,7 @@ pyinstaller: - "PyQt6.sip" - "stl" - "keyrings.alt" + - "pynavlib" collect_all_WINDOWS_ONLY: - "PyQt6.Qt" - "PyQt6.Qt6" diff --git a/conanfile.py b/conanfile.py index c6e9d0bd986..e85e079c342 100644 --- a/conanfile.py +++ b/conanfile.py @@ -548,6 +548,10 @@ def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, e if self.settings.os == "Windows": hiddenimports += pyinstaller_metadata["hiddenimports_WINDOWS_ONLY"] collect_all += pyinstaller_metadata["collect_all_WINDOWS_ONLY"] + + # Remove pynavlib on ARM64 Windows (no ARM64 wheels available) + if self.settings.os == "Windows" and self.settings.arch == "armv8": + collect_all = [item for item in collect_all if item != "pynavlib"] # Write the actual file: with open(os.path.join(location, "UltiMaker-Cura.spec"), "w") as f: