Conversation
added 4 commits
September 19, 2026 09:34
The platform settings (prefix, includes, parsing_header) describe the target, not the host.
A chunk of 100 compiles into a 5 GB translation unit; three of them at once fill a 16 GB runner.
The undefined-symbol filter scanned the whole symbol table once per method. pandas was only used for that table.
Every one of the ~7000 headers re-expanded the same preamble (parsing_header, the platform header, Standard_Handle.hxx and what it pulls in); a precompiled header of it is reused through -include-pch. The preamble text stays in the translation unit as well: its include is guarded, and its forward declarations must remain visible in dummy.cxx. The default argument list is copied instead of appended to, which also keeps the cache key stable.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While working on OCP I waited four hours for every CI run. Generating OCP with pywrap was the first hour of it, three times over, one per platform. Generating OCP (320 modules, ~7000 headers) on a 4-core runner went from 49 minutes to 12 on Linux, and about the same for Windows. The OSX bindings took 169 minutes on a mac runner and take 15 once they are generated on Linux as well (OCP side in CadQuery/OCP#229). Four commits:
--target=x86_64-apple-darwinand the platform settings taken from the target's section, so the OSX bindings generate on Linux.Found on the way and fixed:
argslist ofparse_tugrew with every call.