From 4150d2a1b766cc3ae7028fc477e677f57ab0bcd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sat, 22 Nov 2025 10:50:17 +0100 Subject: [PATCH] Update various toolchains for 4.6 - Fedora 43 - SCons 4.10.1 - MinGW 13.0.0 with GCC 15.2.1 and binutils 2.45 - Emscripten 4.0.20 - Xcode 26.1.1 --- Dockerfile.android | 2 +- Dockerfile.appleembedded | 4 +- Dockerfile.base | 4 +- Dockerfile.osx | 13 +++--- Dockerfile.web | 2 +- Dockerfile.windows | 2 +- Dockerfile.xcode | 9 +---- README.md | 40 +++++++++---------- build.sh | 4 +- .../extract_xcode_sdks.sh | 0 10 files changed, 36 insertions(+), 44 deletions(-) rename extract_xcode_sdks.sh => files/extract_xcode_sdks.sh (100%) diff --git a/Dockerfile.android b/Dockerfile.android index ec9c5d7..36f9c16 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -13,6 +13,6 @@ RUN dnf -y install --setopt=install_weak_deps=False \ unzip ${CMDLINETOOLS} && \ rm ${CMDLINETOOLS} && \ yes | cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" --licenses && \ - cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" 'cmdline-tools;latest' 'build-tools;35.0.0' 'platforms;android-35' 'cmake;3.31.6' + cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" 'cmdline-tools;latest' 'build-tools;35.0.1' 'platforms;android-35' 'cmake;3.31.6' CMD /bin/bash diff --git a/Dockerfile.appleembedded b/Dockerfile.appleembedded index 1708bdc..e376195 100644 --- a/Dockerfile.appleembedded +++ b/Dockerfile.appleembedded @@ -6,8 +6,8 @@ RUN dnf -y install --setopt=install_weak_deps=False \ RUN git clone --depth 1 --no-checkout https://github.com/tpoechtrager/cctools-port.git && \ cd /root/cctools-port && \ - git fetch --depth 1 origin 7224fd5c9390ea15cff6ee69ff92ea677b40014b && \ - git checkout 7224fd5c9390ea15cff6ee69ff92ea677b40014b + git fetch --depth 1 origin 1cce4a06877992f708b2e0e2ab217a0cfb923a4f && \ + git checkout 1cce4a06877992f708b2e0e2ab217a0cfb923a4f COPY files/appleembedded/build.sh /root/cctools-port/usage_examples/ios_toolchain/build.sh COPY files/appleembedded/wrapper.c /root/cctools-port/usage_examples/ios_toolchain/wrapper.c diff --git a/Dockerfile.base b/Dockerfile.base index 66d1789..e080dab 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -1,4 +1,4 @@ -FROM fedora:42 +FROM fedora:43 WORKDIR /root @@ -8,6 +8,6 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 RUN dnf -y install --setopt=install_weak_deps=False \ bash binutils bzip2 curl file findutils gettext git make nano patch pkgconfig python3-pip unzip which xz \ dotnet-sdk-8.0 && \ - pip install scons==4.9.1 + pip install scons==4.10.1 CMD /bin/bash diff --git a/Dockerfile.osx b/Dockerfile.osx index 77f481b..e35982f 100644 --- a/Dockerfile.osx +++ b/Dockerfile.osx @@ -5,26 +5,25 @@ FROM godot-fedora:${img_version} # # sudo dnf install gnupg2 -ENV XCODE_SDKV=26.0.1 -ENV APPLE_SDKV=26.0 -ENV OSX_SDK=26.0 +ENV XCODE_SDKV=26.1.1 +ENV APPLE_SDKV=26.1 RUN dnf -y install --setopt=install_weak_deps=False \ automake autoconf bzip2-devel cmake gawk gcc gcc-c++ libdispatch libicu-devel libtool \ libxml2-devel openssl-devel uuid-devel yasm gpg && \ git clone --progress https://github.com/tpoechtrager/osxcross && \ cd /root/osxcross && \ - git checkout f873f534c6cdb0776e457af8c7513da1e02abe59 && \ + git checkout 121ce150c7857a9474dfff8a8e431482806b3e1b && \ # Patch to fix visionOS support. # See: https://github.com/llvm/llvm-project/issues/142502 patch -p1 < /root/files/patches/osxcross-fix-visionos.patch && \ - ln -s /root/files/MacOSX${OSX_SDK}.sdk.tar.xz /root/osxcross/tarballs && \ + ln -s /root/files/MacOSX${APPLE_SDKV}.sdk.tar.xz /root/osxcross/tarballs && \ export UNATTENDED=1 && \ - export SDK_VERSION=${OSX_SDK} && \ + export SDK_VERSION=${APPLE_SDKV} && \ # Custom build Apple Clang to ensure compatibility. # Find the equivalent LLVM version for the SDK from: # https://en.wikipedia.org/wiki/Xcode#Toolchain_versions - CLANG_VERSION=19.1.4 ENABLE_CLANG_INSTALL=1 INSTALLPREFIX=/usr ./build_apple_clang.sh && \ + CLANG_VERSION=19.1.5 ENABLE_CLANG_INSTALL=1 INSTALLPREFIX=/usr ./build_apple_clang.sh && \ ./build.sh && \ ./build_compiler_rt.sh && \ rm -rf /root/osxcross/build diff --git a/Dockerfile.web b/Dockerfile.web index 362ab84..713e78c 100644 --- a/Dockerfile.web +++ b/Dockerfile.web @@ -1,7 +1,7 @@ ARG img_version FROM godot-fedora:${img_version} -ENV EMSCRIPTEN_VERSION=4.0.10 +ENV EMSCRIPTEN_VERSION=4.0.20 RUN dnf -y install --setopt=install_weak_deps=False libatomic && \ git clone --branch ${EMSCRIPTEN_VERSION} --progress https://github.com/emscripten-core/emsdk && \ diff --git a/Dockerfile.windows b/Dockerfile.windows index 0182305..3d72309 100644 --- a/Dockerfile.windows +++ b/Dockerfile.windows @@ -3,7 +3,7 @@ FROM godot-fedora:${img_version} RUN dnf -y install --setopt=install_weak_deps=False \ mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static && \ - export LLVM_MINGW_VERSION=20250528 && \ + export LLVM_MINGW_VERSION=20251118 && \ export LLVM_MINGW_NAME=llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-x86_64 && \ curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/${LLVM_MINGW_NAME}.tar.xz && \ tar xf ${LLVM_MINGW_NAME}.tar.xz && \ diff --git a/Dockerfile.xcode b/Dockerfile.xcode index 99f9cf4..984e866 100644 --- a/Dockerfile.xcode +++ b/Dockerfile.xcode @@ -10,12 +10,5 @@ RUN dnf -y install --setopt=install_weak_deps=False \ ENV XCODE_SDKV= ENV APPLE_SDKV= -ENV OSX_SDKV= -ENV IOS_SDKV= -ENV TVOS_SDKV= -ENV VISIONOS_SDKV= -COPY extract_xcode_sdks.sh /root/extract_xcode_sdks.sh -RUN chmod +x /root/extract_xcode_sdks.sh - -CMD /root/extract_xcode_sdks.sh +CMD /root/files/extract_xcode_sdks.sh diff --git a/README.md b/README.md index 1093934..73208c0 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,14 @@ be welcome (but back when we tried we ran into performance issues). The `build.sh` script included is used to build the containers themselves. The two arguments can take any value and are meant to convey what Godot branch -you are building for (e.g. `4.5`) and what Linux distribution the `Dockerfile.base` -is based on (e.g. `f42` for Fedora 42). +you are building for (e.g. `4.6`) and what Linux distribution the `Dockerfile.base` +is based on (e.g. `f43` for Fedora 43). Run the command using: - ./build.sh 4.5 f42 + ./build.sh 4.6 f43 -The above will generate images using the tag '4.5-f42'. +The above will generate images using the tag '4.6-f43'. You can then specify it in the `build.sh` of [godot-build-scripts](https://github.com/godotengine/godot-build-scripts). @@ -67,13 +67,14 @@ you can comment out the corresponding lines from the script: These are the expected container image sizes, so you can plan your disk usage in advance: REPOSITORY TAG SIZE - localhost/godot-fedora 4.5-f42 949 MB - localhost/godot-linux 4.5-f42 2.74 GB - localhost/godot-windows 4.5-f42 2.54 GB - localhost/godot-web 4.5-f42 2.35 GB - localhost/godot-android 4.5-f42 4.19 GB - localhost/godot-osx 4.5-f42 5.30 GB - localhost/godot-appleembedded 4.5-f42 14.1 GB + localhost/godot-fedora 4.6-f43 978 MB + localhost/godot-linux 4.6-f43 2.77 GB + localhost/godot-windows 4.6-f43 2.65 GB + localhost/godot-web 4.6-f43 2.74 GB + localhost/godot-android 4.6-f43 4.22 GB + localhost/godot-xcode 4.6-f43 1.56 GB + localhost/godot-osx 4.6-f43 14.6 GB + localhost/godot-appleembedded 4.6-f43 16.0 GB In addition to this, generating containers will also require some host disk space (up to 10 GB) for the dependencies (Xcode). @@ -83,14 +84,13 @@ In addition to this, generating containers will also require some host disk spac These are the toolchains currently in use for Godot 4.3 and later: -- Base image: Fedora 42 -- SCons: 4.9.1 +- Base image: Fedora 43 +- SCons: 4.10.1 - Linux: GCC 13.2.0 built against glibc 2.28, binutils 2.40, from our own [Linux SDK](https://github.com/godotengine/buildroot) - Windows: - * x86_64/x86_32: MinGW 12.0.0, GCC 14.2.1, binutils 2.43.1 - * arm64: llvm-mingw 20250528, LLVM 20.1.6 -- Web: Emscripten 4.0.10 -- Android: Android NDK 28.1.13356709, build-tools 35.0.0, platform android-35, CMake 3.31.6, JDK 21 -- Apple: Xcode 16.4 with Apple Clang (LLVM 19.1.4), cctools 1024.3, ld64 955.13 - * macOS: MacOSX SDK 15.5 - * Apple Embedded: iPhoneOS and iPhoneSimulator SDKs 18.5, AppleTVOS and AppleTVSimulator SDKs 18.5, XROS and XRSimulator SDKs 2.5 + * x86_64/x86_32: MinGW 13.0.0, GCC 15.2.1, binutils 2.45 + * arm64: llvm-mingw 20251118, LLVM 21.1.6 +- Web: Emscripten 4.0.20 +- Android: Android NDK 28.1.13356709, build-tools 35.0.1, platform android-35, CMake 3.31.6, JDK 21 +- Apple: Xcode 26.1.1 with Apple Clang (LLVM 19.1.5), cctools 1030.6.3, ld64 956.6 + * SDKs: MacOSX, iPhoneOS, iPhoneSimulator, AppleTVOS, AppleTVSimulator, XROS, XRSimulator diff --git a/build.sh b/build.sh index e23ac43..46ca5ed 100755 --- a/build.sh +++ b/build.sh @@ -58,8 +58,8 @@ podman_build windows podman_build web podman_build android -XCODE_SDK=26.0.1 -APPLE_SDKV=26.0 +XCODE_SDK=26.1.1 +APPLE_SDKV=26.1 if [ ! -e "${files_root}"/MacOSX${APPLE_SDKV}.sdk.tar.xz ] || [ ! -e "${files_root}"/Xcode-Developer${XCODE_SDK}.tar.xz ]; then if [ ! -r "${files_root}"/Xcode_${XCODE_SDK}.xip ]; then echo diff --git a/extract_xcode_sdks.sh b/files/extract_xcode_sdks.sh similarity index 100% rename from extract_xcode_sdks.sh rename to files/extract_xcode_sdks.sh