Conversation
added 6 commits
September 19, 2026 12:31
The default of N_PROC follows the machine; -DN_PROC still overrides it.
OSX target when generating on another host, symbol lookups by bisection (pandas is no longer used), one preamble parse per process, smaller collections chunks.
Same recipe as Windows: the OSX headers come from the SDK the job already downloads, the symbols from the osx-64 occt package (the virtual __osx package has to be declared on a Linux host). The SDK is the sysroot, so that the host's glibc stays out of the include path; the include layout is chosen by PLATFORM, which the native macOS job still sets from the host. The occt version of the symbol dumps is read from environment.devenv.yml, the one place it is pinned; the Windows dump had stayed at 8.0.0, and members new in 8.0.1 were missing from the Windows bindings.
The generator walks sets in many places; with hash randomisation every run orders enums, members and collection chunks differently, and one V3d member came and went. Pinning the seed at the command that runs bindgen covers CI and local builds alike.
The five collections chunks of 100 were 5 GB translation units each and met at the end of the build; at 25 the largest unit is 3.2 GB and four jobs fit the runners. The Mac step had a space after its line continuation, which ended the cmake command before the build type and the SDK: OSX was compiled without optimisation.
sccache with the GitHub Actions cache backend. The generation is reproducible, so the translation units a commit does not touch are hits. SCCACHE_GHA_VERSION namespaces the keys: bumping it starts from an empty cache.
kimstik
marked this pull request as draft
September 20, 2026 20:56
kimstik
marked this pull request as ready for review
September 20, 2026 20:56
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 #226 I waited four hours for every CI run of the bindings, most of it on steps that repeat the same work. The same jobs now take about 1h50 from scratch and 37 minutes when the object cache hits, on the same free runners. Six commits, one idea each:
N_PROCdefaults to the machine's cores instead of 2.-DN_PROCstill overrides.PYTHONHASHSEED=0for bindgen: the generation is reproducible. Two runs give byte-identical sources, so builds can be diffed.SCCACHE_GHA_VERSIONto start empty.Also fixed:
Compile (Mac).V3d_ImageDumpOptionsmember that came and went.argslist ofparse_tugrew with every call.Depends on CadQuery/pywrap#66.