fix(runner): version mono NuGet packages for non-vanilla C# APIs #16

Merged
picklemustard merged 1 commit from fix/mono-module-nuget-versions into main 2026-09-23 13:55:09 +00:00

A mono build with a grafted module such as LimboAI generated GodotSharp,
GodotSharpEditor, Godot.NET.Sdk and Godot.SourceGenerators packages under
the exact version nuget.org serves. Projects restored the official
packages (or reused them from ~/.nuget/packages), got an assembly without
the module's classes, and the engine rejected it on the API hash.

The runner now derives a suffix from the engine commit, resolved module
commits, precision and API-affecting scons arguments (target excluded,
so an editor and its templates agree) and passes it as
GBB_MONO_VERSION_SUFFIX. The entrypoint folds it into
GODOT_VERSION_STATUS as -.gbb, the same mechanism
LimboAI's CI uses, and fails the build if the generated GodotSharp
package does not carry it. Vanilla mono builds are unchanged.

Also pass the spec's precision and deprecated=no through to
build_assemblies.py: double-precision builds previously shipped
single-precision assemblies, and deprecated=no builds kept the
deprecated managed API. --no-deprecated exists only from Godot 4.4, so
its support is checked before the editor pass.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

A mono build with a grafted module such as LimboAI generated GodotSharp, GodotSharpEditor, Godot.NET.Sdk and Godot.SourceGenerators packages under the exact version nuget.org serves. Projects restored the official packages (or reused them from ~/.nuget/packages), got an assembly without the module's classes, and the engine rejected it on the API hash. The runner now derives a suffix from the engine commit, resolved module commits, precision and API-affecting scons arguments (target excluded, so an editor and its templates agree) and passes it as GBB_MONO_VERSION_SUFFIX. The entrypoint folds it into GODOT_VERSION_STATUS as <status>-<hash>.gbb, the same mechanism LimboAI's CI uses, and fails the build if the generated GodotSharp package does not carry it. Vanilla mono builds are unchanged. Also pass the spec's precision and deprecated=no through to build_assemblies.py: double-precision builds previously shipped single-precision assemblies, and deprecated=no builds kept the deprecated managed API. --no-deprecated exists only from Godot 4.4, so its support is checked before the editor pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(runner): version mono NuGet packages for non-vanilla C# APIs
All checks were successful
CI / Dedupe (push) Successful in 11s
CI / Go (push) Successful in 4m10s
CI / Frontend (push) Successful in 32s
CI / Badges (push) Has been skipped
CI / Publish images (push) Has been skipped
CI / Dedupe (pull_request) Successful in 2s
CI / Go (pull_request) Successful in 1m49s
CI / Frontend (pull_request) Successful in 27s
CI / Badges (pull_request) Has been skipped
CI / Publish images (pull_request) Has been skipped
cb83b925a2
A mono build with a grafted module such as LimboAI generated GodotSharp,
GodotSharpEditor, Godot.NET.Sdk and Godot.SourceGenerators packages under
the exact version nuget.org serves. Projects restored the official
packages (or reused them from ~/.nuget/packages), got an assembly without
the module's classes, and the engine rejected it on the API hash.

The runner now derives a suffix from the engine commit, resolved module
commits, precision and API-affecting scons arguments (target excluded,
so an editor and its templates agree) and passes it as
GBB_MONO_VERSION_SUFFIX. The entrypoint folds it into
GODOT_VERSION_STATUS as <status>-<hash>.gbb, the same mechanism
LimboAI's CI uses, and fails the build if the generated GodotSharp
package does not carry it. Vanilla mono builds are unchanged.

Also pass the spec's precision and deprecated=no through to
build_assemblies.py: double-precision builds previously shipped
single-precision assemblies, and deprecated=no builds kept the
deprecated managed API. --no-deprecated exists only from Godot 4.4, so
its support is checked before the editor pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
StudioTeal/GodotBinaryBuilder!16
No description provided.