Improve automated checks for GDExtension compatibility#113743
Conversation
a115f26 to
49bf182
Compare
dba9425 to
6ed1267
Compare
076b2da to
262f560
Compare
5aaf1b6 to
2aad03c
Compare
dsnopek
left a comment
There was a problem hiding this comment.
Thanks!
Overall, this looks really great to me - I've got only a few minor notes :-)
.github/workflows/linux_builds.yml
Outdated
| doc-test: true | ||
| proj-conv: true | ||
| api-compat: true | ||
| api-compat-load: true |
There was a problem hiding this comment.
I don't know that this needs its own variable? It could probably just use the pre-existing api-compat. But this up to the build system folks - maybe they'll like having a separate variable
There was a problem hiding this comment.
Reusing api-compat would indeed be preferable
| api-compat-load: true |
5d3831d to
a255d3e
Compare
a255d3e to
a468c31
Compare
9b59968 to
f9dd9ca
Compare
f9dd9ca to
d7df4a0
Compare
dsnopek
left a comment
There was a problem hiding this comment.
Thanks!
From a GDExtension perspective, this looks great to me. :-) This still needs some review from the build system and CI folks, though
(FYI, the current test failures are just issues with downloading the ANGLE libs - I'll re-run the failed jobs after they finish)
d7df4a0 to
8b656b6
Compare
Repiteo
left a comment
There was a problem hiding this comment.
I'm very torn on this implementation. On one hand, unless there's a very good reason to do so, we should be using C++ instead of C. This would allow using the godot-cpp helper methods directly, which I think should be encouraged for any GDExtension test. On the other hand, this is meant to be as minimal as possible, so maybe the specialized setup is warranted here? I never realized how the lack of a godot-c equivalent forced direct reliance on the standard library.
.github/workflows/linux_builds.yml
Outdated
| doc-test: true | ||
| proj-conv: true | ||
| api-compat: true | ||
| api-compat-load: true |
There was a problem hiding this comment.
Reusing api-compat would indeed be preferable
| api-compat-load: true |
Personally, I think using C (or at least not using godot-cpp) here is the right choice. If this test used godot-cpp, it wouldn't really use any of its helpers (maybe just loading the interface functions?), and would still be implemented pretty much the exact same way as it is now. All we would get is slower build times and the potential for godot-cpp changes/bugs to break the test. |
==== - Create minimal GDExtension which tries to load methods specified in a gdextension_api.json. - Run said GDExtension in the CI.
8b656b6 to
e517509
Compare
Repiteo
left a comment
There was a problem hiding this comment.
I have some reservations on this not being in a separate repo, but having this check in place is more pertinent. Sorry for the wait, and great job!
|
Thanks! |
…omated-checks-for-gdextension-compatibility Improve automated checks for GDExtension compatibility
closes: #113519
Implements the first proposed solution in this thread, i.e.:
Effect of running said check against Godot 4.5.1-stable:
Effect of running said check against Godot Engine v4.6.dev.custom_build.63e14e13f:
Errors