Onboard onto the Evergine.Bindings toolbox - #3
Merged
Conversation
Moves this repository from the evergine-standards pipeline to the toolbox, so a new MuJoCo release is picked up, regenerated and proposed as a pull request instead of being noticed by somebody. - binding.yml: git-tree adapter following google-deepmind/mujoco stable releases, currently 3.11.0. Validated against the toolbox schema. - CI: binding-common-ci@v1, plus binding-native-coherence so a managed layer that drifts ahead of the shipped libraries is caught. Same inputs as before; @v1 and @v2 agree on all nine. - CD: resolve-upstream -> natives -> tracked-cd. - api-gate on pull requests, with native coherence. - toolbox-update weekly, so the agents never drift more than a week. - binding-updater, ci-doctor and cpp-wrapper-porter installed with gh aw add and compiled --strict. The porter is inert: it needs a wrapper: block, and this binding has none. Two decisions worth recording, both taken after reading the toolbox code rather than guessing: upstream.assets cannot serve this repository, so the natives are fetched by a job in CD instead. That path unpacks zip only and extracts flat with no remapping: MuJoCo publishes .tar.gz for both Linux RIDs, a .dmg for macOS, and a .zip for Windows whose members sit under bin/, so not one of the four could reach runtimes/<rid>/native/. macOS comes from the PyPI wheel, which carries the same universal2 binary in a zip, so one Linux job produces all four RIDs without a macOS runner to mount the .dmg. This is not optional: binding-tracked-cd hard-fails a source bump when runtimes/ exists and no natives were supplied, which is the right behaviour -- committing otherwise would ship a managed layer built from one revision against libraries built from another. runtimes/osx stays as it is and must not be split into osx-x64 and osx-arm64. check-native-arch reports an unrecognised RID as a warning, but rejects a fat binary whose slices disagree as an error, so splitting the universal2 dylib would turn a warning into a failure. The RID graph resolves both macOS RIDs to the architecture-less folder anyway; that was verified earlier by publishing a probe app against the package. mjVERSION_HEADER is exempted in the API gate: mujoco.h reports its own version, so every release would otherwise read as breaking.
Contributor
API gate: additiveEvery symbol that existed still exists, unchanged. Nothing that compiled before stops compiling.
Enum and constant values are part of the measured surface: a renumbering keeps compiling and sends the wrong number to the driver, so it counts as a removal. |
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.
Moves this repository from the evergine-standards pipeline to the toolbox, so a new MuJoCo release is picked up, regenerated and proposed as a PR instead of being noticed by somebody.
binding.ymlgit-treefollowinggoogle-deepmind/mujocostable releases, currently 3.11.0. Validated againstbinding.schema.jsonbinding-common-ci@v1+binding-native-coherence@v1binding-resolve-upstream→natives→binding-tracked-cdnative-coherence: truebinding-updater,ci-doctor,cpp-wrapper-porterviagh aw add+compile --strictNatives cannot use
upstream.assetsThat path unpacks
ziponly and extracts flat with no remapping. MuJoCo publishes.tar.gzfor both Linux RIDs, a.dmgfor macOS, and a.zipfor Windows whose members sit underbin/— none of the four could reachruntimes/<rid>/native/. So CD has anativesjob that fetches the release assets for the resolved tag and stages them at their final repository paths. macOS comes from the PyPI wheel, which carries the same universal2 binary in a zip, so one Linux job produces all four RIDs without a macOS runner to mount the.dmg.This is not optional:
binding-tracked-cdhard-fails a source bump whenruntimes/exists and no natives were supplied.runtimes/osxstayscheck-native-archreports an unrecognised RID as a warning, but rejects a fat binary whose slices disagree as an error — so splitting the universal2 dylib intoosx-x64/osx-arm64would turn a warning into a failure. The RID graph resolves both macOS RIDs to the architecture-less folder anyway, verified earlier by publishing a probe app per RID.mjVERSION_HEADERexemptedmujoco.hreports its own version, so without the exemption every release reads as breaking.