Skip to content

[3.x] Update to Fedora 39, newer toolchains, add Linux arm64 #135

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 16, 2024

Conversation

akien-mga
Copy link
Member

Syncs with the config of the current main branch (as used for 4.2+) as far as possible (backports the last couple of years of PRs, minus the removal of some platforms and of the Mono builds).

Notably backports #128 and #131, giving us these toolchains:

  • Base image: Fedora 39
  • Mono version: 6.12.0.198
  • SCons: 4.5.2
  • Linux: GCC 13.2.0 built against glibc 2.28, binutils 2.40, from our own Linux SDK
  • Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
  • HTML5: Emscripten 3.1.39 (standard builds), Emscripten 1.39.9 (Mono builds)
  • Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 11
  • macOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.0
  • iOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.0
  • UWP: Unchanged, current Dockerfile still unsupported

Syncs with the config of the current `main` branch (as used for 4.2+)
as far as possible (backports the last couple of years of PRs, minus
the removal of some platforms and of the Mono builds).

Notably backports #128 and #131, giving us these toolchains:

- Base image: Fedora 39
- Mono version: 6.12.0.198
- SCons: 4.5.2
- Linux: GCC 13.2.0 built against glibc 2.28, binutils 2.40, from our own [Linux SDK](https://github.com/godotengine/buildroot)
- Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
- HTML5: Emscripten 3.1.39 (standard builds), Emscripten 1.39.9 (Mono builds)
- Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 11
- macOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), MacOSX SDK 14.0
- iOS: Xcode 15.0 with Apple Clang (LLVM 16.0.0), iPhoneOS SDK 17.0
- UWP: Unchanged, current Dockerfile still unsupported
@akien-mga
Copy link
Member Author

For the record, there are some newer versions of some of the toolchains listed above. This PR syncs with #128 which was mostly up-to-date as of Sep 2023, and since we've tested those versions well by now, I'm using the same for 3.x.

As for Mono, 6.12.0.198 is the last version we built on https://github.com/godotengine/godot-mono-builds/releases/tag/release-4912f62 so I just reused that.
Technically the Mono website lists 6.12.0.199 as the stable version (the only change seems to be updating the nuget artifact they're using, I'm not sure it affects us). And there's a few commits on top in the Preview version. We might want to upgrade further eventually, but for now this should be perfectly fine.

@akien-mga akien-mga merged commit 6503175 into 3.x Jan 16, 2024
@akien-mga akien-mga deleted the 3.x-update-f39-mono-6.12.0.198 branch January 16, 2024 12:34
GodotBuilder pushed a commit to godotengine/godot-build-scripts that referenced this pull request Jan 17, 2024
Backport of #89 and #90, in sync with godotengine/build-containers#135.

In the 3.x branch, the situation with `arch` and `bits` is very brittle,
so we only add the explicit `arch` argument for the arm32/arm64 builds.
x86_32 still relies on `bits=32`.

This would all be worth refactoring upstream like we did for 4.0, but
it's a major undertaking and breaking change, which I'd prefer to avoid
in 3.6.

For Linux builds, we move the `strip` calls to the build stage, as this
needs to be done with the arch-appropriate `strip` binary, so it's easier
done there. In `master`, we now let the compiler strip during the build
with `-s`, but this change wasn't backported to 3.x.
GodotBuilder pushed a commit to godotengine/godot-build-scripts that referenced this pull request Jan 17, 2024
Backport of #89 and #90, in sync with godotengine/build-containers#135.

In the 3.x branch, the situation with `arch` and `bits` is very brittle,
so we only add the explicit `arch` argument for the arm32/arm64 builds.
x86_32 still relies on `bits=32`.

This would all be worth refactoring upstream like we did for 4.0, but
it's a major undertaking and breaking change, which I'd prefer to avoid
in 3.6.

For Linux builds, we move the `strip` calls to the link stage, as this
needs to be done with the arch-appropriate `strip` binary, so it's easier
done there. In `master`, we now let the compiler strip automatically
during the build if no debug symbols are requested, but this change
wasn't backported to 3.x.
GodotBuilder pushed a commit to godotengine/godot-build-scripts that referenced this pull request Jan 17, 2024
Backport of #89 and #90, in sync with godotengine/build-containers#135.

In the 3.x branch, the situation with `arch` and `bits` is very brittle,
so we only add the explicit `arch` argument for the arm32/arm64 builds.
x86_32 still relies on `bits=32`.

This would all be worth refactoring upstream like we did for 4.0, but
it's a major undertaking and breaking change, which I'd prefer to avoid
in 3.6.

For Linux builds, we move the `strip` calls to the link stage, as this
needs to be done with the arch-appropriate `strip` binary, so it's easier
done there. In `master`, we now let the compiler strip automatically
during the build if no debug symbols are requested, but this change
wasn't backported to 3.x.
GodotBuilder pushed a commit to godotengine/godot-build-scripts that referenced this pull request Jan 18, 2024
Backport of #89 and #90, in sync with godotengine/build-containers#135.

In the 3.x branch, the situation with `arch` and `bits` is very brittle,
so we only add the explicit `arch` argument for the arm32/arm64 builds.
x86_32 still relies on `bits=32`.

This would all be worth refactoring upstream like we did for 4.0, but
it's a major undertaking and breaking change, which I'd prefer to avoid
in 3.6.

For Linux builds, we move the `strip` calls to the link stage, as this
needs to be done with the arch-appropriate `strip` binary, so it's easier
done there. In `master`, we now let the compiler strip automatically
during the build if no debug symbols are requested, but this change
wasn't backported to 3.x.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant