Update to Fedora 39, update all toolchains
- Base image: Fedora 39 - SCons: 4.5.2 - Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1 - Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40 - Web: Emscripten 3.1.39 - Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 17 CMake 3.22.1, JDK 17 - 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 Switches macOS/iOS builds to use Apple Clang, to maximize compatibility with upstream Xcode. Also add gettext which is needed by Godot build scripts to compile PO files to MO.
This commit is contained in:
parent
913ae1ef3b
commit
ced8cc8618
|
@ -6,13 +6,13 @@ ENV ANDROID_NDK_VERSION=23.2.8568313
|
|||
ENV ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}
|
||||
|
||||
RUN dnf -y install --setopt=install_weak_deps=False \
|
||||
java-11-openjdk-devel ncurses-compat-libs && \
|
||||
java-17-openjdk-devel ncurses-compat-libs && \
|
||||
mkdir -p sdk && cd sdk && \
|
||||
export CMDLINETOOLS=commandlinetools-linux-8512546_latest.zip && \
|
||||
export CMDLINETOOLS=commandlinetools-linux-10406996_latest.zip && \
|
||||
curl -LO https://dl.google.com/android/repository/${CMDLINETOOLS} && \
|
||||
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;32.0.0' 'platforms;android-32' 'cmake;3.18.1'
|
||||
cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" 'cmdline-tools;latest' 'build-tools;33.0.2' 'platforms;android-33' 'cmake;3.22.1'
|
||||
|
||||
CMD /bin/bash
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM fedora:36
|
||||
FROM fedora:39
|
||||
|
||||
WORKDIR /root
|
||||
|
||||
|
@ -6,8 +6,8 @@ ENV DOTNET_NOLOGO=1
|
|||
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
|
||||
RUN dnf -y install --setopt=install_weak_deps=False \
|
||||
bash bzip2 curl file findutils git make nano patch pkgconfig python3-pip unzip which xz \
|
||||
bash bzip2 curl file findutils gettext git make nano patch pkgconfig python3-pip unzip which xz \
|
||||
dotnet-sdk-6.0 && \
|
||||
pip install scons==4.4.0
|
||||
pip install scons==4.5.2
|
||||
|
||||
CMD /bin/bash
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
ARG img_version
|
||||
FROM godot-osx:${img_version}
|
||||
|
||||
ENV IOS_SDK=16.1
|
||||
ENV IOS_SDK=17.0
|
||||
|
||||
RUN dnf -y install --setopt=install_weak_deps=False \
|
||||
automake autoconf gcc gcc-c++ gcc-objc gcc-objc++ cmake libicu-devel libtool libxml2-devel openssl-devel perl python yasm && \
|
||||
git clone --progress https://github.com/tpoechtrager/cctools-port.git && \
|
||||
git clone --progress https://github.com/tpoechtrager/cctools-port && \
|
||||
cd /root/cctools-port && \
|
||||
git checkout 11c93763d7e7ce7305163341d08052374e4712de && \
|
||||
git checkout 437ced391dbf14dce86f977ca050a750d5682f39 && \
|
||||
curl -LO https://github.com/tpoechtrager/cctools-port/pull/136.patch && \
|
||||
git apply 136.patch && \
|
||||
# arm64 device
|
||||
usage_examples/ios_toolchain/build.sh /root/files/iPhoneOS${IOS_SDK}.sdk.tar.xz arm64 && \
|
||||
mkdir -p /root/ioscross/arm64 && \
|
||||
mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64 && \
|
||||
mkdir /root/ioscross/arm64/usr && \
|
||||
ln -s /root/ioscross/arm64/bin /root/ioscross/arm64/usr/bin && \
|
||||
# Prepare for simulator builds
|
||||
sed -i '/WRAPPER_SDKDIR/s/iPhoneOS/iPhoneSimulator/' usage_examples/ios_toolchain/build.sh && \
|
||||
# arm64 simulator
|
||||
# Disabled for now as it doesn't work with cctools-port and current LLVM:
|
||||
# Cf. https://github.com/tpoechtrager/cctools-port/issues/102
|
||||
#sed -i 's/miphoneos-version-min/mios-simulator-version-min/g' usage_examples/ios_toolchain/wrapper.c && \
|
||||
#usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz arm64 && \
|
||||
#mkdir -p /root/ioscross/arm64_sim && \
|
||||
#mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64_sim && \
|
||||
#mkdir /root/ioscross/arm64_sim/usr && \
|
||||
#ln -s /root/ioscross/arm64_sim/bin /root/ioscross/arm64_sim/usr/bin && \
|
||||
usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz arm64 && \
|
||||
mkdir -p /root/ioscross/arm64_sim && \
|
||||
mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64_sim && \
|
||||
mkdir /root/ioscross/arm64_sim/usr && \
|
||||
ln -s /root/ioscross/arm64_sim/bin /root/ioscross/arm64_sim/usr/bin && \
|
||||
# x86_64 simulator
|
||||
sed -i 's#^TRIPLE=.*#TRIPLE="x86_64-apple-darwin11"#' usage_examples/ios_toolchain/build.sh && \
|
||||
sed -i 's/^TRIPLE=.*/TRIPLE="x86_64-apple-darwin11"/' usage_examples/ios_toolchain/build.sh && \
|
||||
usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator${IOS_SDK}.sdk.tar.xz x86_64 && \
|
||||
mkdir -p /root/ioscross/x86_64_sim && \
|
||||
mv usage_examples/ios_toolchain/target/* /root/ioscross/x86_64_sim && \
|
||||
|
|
|
@ -2,15 +2,17 @@ ARG img_version
|
|||
FROM godot-fedora:${img_version}
|
||||
|
||||
RUN dnf -y install --setopt=install_weak_deps=False \
|
||||
automake autoconf bzip2-devel cmake gcc gcc-c++ libicu-devel libtool libxml2-devel openssl-devel yasm \
|
||||
clang llvm-devel && \
|
||||
git clone --progress https://github.com/tpoechtrager/osxcross.git && \
|
||||
automake autoconf bzip2-devel cmake gcc gcc-c++ libdispatch libicu-devel libtool \
|
||||
libxml2-devel openssl-devel uuid-devel yasm && \
|
||||
git clone --progress https://github.com/tpoechtrager/osxcross && \
|
||||
cd /root/osxcross && \
|
||||
git checkout 50e86ebca7d14372febd0af8cd098705049161b9 && \
|
||||
ln -s /root/files/MacOSX13.0.sdk.tar.xz /root/osxcross/tarballs && \
|
||||
git checkout 5e1b71fcceb23952f3229995edca1b6231525b5b && \
|
||||
ln -s /root/files/MacOSX14.0.sdk.tar.xz /root/osxcross/tarballs && \
|
||||
export UNATTENDED=1 && \
|
||||
# Custom build Clang if the Fedora version doesn't match the Xcode SDK.
|
||||
#CLANG_VERSION=14.0.6 ENABLE_CLANG_INSTALL=1 INSTALLPREFIX=/usr ./build_clang.sh && \
|
||||
# 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=16.0.0 ENABLE_CLANG_INSTALL=1 INSTALLPREFIX=/usr ./build_apple_clang.sh && \
|
||||
./build.sh && \
|
||||
./build_compiler_rt.sh && \
|
||||
rm -rf /root/osxcross/build
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
ARG img_version
|
||||
FROM godot-fedora:${img_version}
|
||||
|
||||
ENV EMSCRIPTEN_VERSION=3.1.18
|
||||
ENV EMSCRIPTEN_VERSION=3.1.39
|
||||
|
||||
RUN git clone --branch ${EMSCRIPTEN_VERSION} --progress https://github.com/emscripten-core/emsdk && \
|
||||
emsdk/emsdk install ${EMSCRIPTEN_VERSION} && \
|
||||
|
|
|
@ -5,7 +5,7 @@ RUN dnf -y install --setopt=install_weak_deps=False \
|
|||
clang xar xar-devel xz-devel cpio && \
|
||||
git clone --progress https://github.com/nrosenstein-stuff/pbzx && \
|
||||
cd pbzx && \
|
||||
git checkout 2a4d7c3300c826d918def713a24d25c237c8ed53 && \
|
||||
git checkout bf536e167f2e514866f91d7baa0df1dff5a13711 && \
|
||||
clang -O3 -llzma -lxar -I /usr/local/include pbzx.c -o pbzx
|
||||
|
||||
ENV XCODE_SDKV=
|
||||
|
@ -18,12 +18,6 @@ CMD mkdir -p /root/xcode && \
|
|||
/root/pbzx/pbzx -n Content | cpio -i && \
|
||||
export OSX_SDK=MacOSX${OSX_SDKV}.sdk && \
|
||||
cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/${OSX_SDK} && \
|
||||
mkdir -p /tmp/${OSX_SDK}/usr/include/c++ && \
|
||||
cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${OSX_SDK}/usr/include/c++/ && \
|
||||
mkdir -p mkdir -p /tmp/${OSX_SDK}/usr/share/man && \
|
||||
cp -rf Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1 \
|
||||
Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man3 \
|
||||
Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man5 /tmp/${OSX_SDK}/usr/share/man/ && \
|
||||
cd /tmp && \
|
||||
tar -cJf /root/files/${OSX_SDK}.tar.xz ${OSX_SDK} && \
|
||||
rm -rf ${OSX_SDK} && \
|
||||
|
@ -31,15 +25,11 @@ CMD mkdir -p /root/xcode && \
|
|||
export IOS_SDK=iPhoneOS${IOS_SDKV}.sdk && \
|
||||
export IOS_SIMULATOR_SDK=iPhoneSimulator${IOS_SDKV}.sdk && \
|
||||
cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/${IOS_SDK} && \
|
||||
mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \
|
||||
cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \
|
||||
cd /tmp && \
|
||||
tar -cJf /root/files/${IOS_SDK}.tar.xz ${IOS_SDK} && \
|
||||
rm -rf ${IOS_SDK} && \
|
||||
cd /root/xcode && \
|
||||
cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/${IOS_SDK} && \
|
||||
mkdir -p /tmp/${IOS_SDK}/usr/include/c++ && \
|
||||
cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/${IOS_SDK}/usr/include/c++/ && \
|
||||
cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/${IOS_SIMULATOR_SDK} && \
|
||||
cd /tmp && \
|
||||
tar -cJf /root/files/${IOS_SIMULATOR_SDK}.tar.xz ${IOS_SDK} && \
|
||||
rm -rf ${IOS_SDK}
|
||||
tar -cJf /root/files/${IOS_SIMULATOR_SDK}.tar.xz ${IOS_SIMULATOR_SDK} && \
|
||||
rm -rf ${IOS_SIMULATOR_SDK}
|
||||
|
|
48
README.md
48
README.md
|
@ -37,13 +37,13 @@ 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.x`) and what Linux distribution the `Dockerfile.base`
|
||||
is based on (e.g. `f36` for Fedora 36).
|
||||
is based on (e.g. `f39` for Fedora 39).
|
||||
|
||||
Run the command using:
|
||||
|
||||
./build.sh 4.x f36
|
||||
./build.sh 4.x f39
|
||||
|
||||
The above will generate images using the tag '4.x-f36'.
|
||||
The above will generate images using the tag '4.x-f39'.
|
||||
You can then specify it in the `build.sh` of
|
||||
[godot-build-scripts](https://github.com/godotengine/godot-build-scripts).
|
||||
|
||||
|
@ -53,10 +53,10 @@ You can then specify it in the `build.sh` of
|
|||
If you don't need to build all versions or you want to try with a single target OS first,
|
||||
you can comment out the corresponding lines from the script:
|
||||
|
||||
$podman_build -t godot-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log
|
||||
$podman_build -t godot-windows:${img_version} -f Dockerfile.windows . 2>&1 | tee logs/windows.log
|
||||
$podman_build -t godot-web:${img_version} -f Dockerfile.web . 2>&1 | tee logs/web.log
|
||||
$podman_build -t godot-android:${img_version} -f Dockerfile.android . 2>&1 | tee logs/android.log
|
||||
podman_build linux
|
||||
podman_build windows
|
||||
podman_build web
|
||||
podman_build android
|
||||
...
|
||||
|
||||
|
||||
|
@ -64,28 +64,28 @@ 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.x-f36 1.06 GB
|
||||
localhost/godot-linux 4.x-f36 2.07 GB
|
||||
localhost/godot-windows 4.x-f36 1.81 GB
|
||||
localhost/godot-web 4.x-f36 2.2 GB
|
||||
localhost/godot-android 4.x-f36 4.24 GB
|
||||
localhost/godot-osx 4.x-f36 4.56 GB
|
||||
localhost/godot-ios 4.x-f36 5.01 GB
|
||||
REPOSITORY TAG SIZE
|
||||
localhost/godot-fedora 4.x-f39 1.08 GB
|
||||
localhost/godot-linux 4.x-f39 2.10 GB
|
||||
localhost/godot-windows 4.x-f39 1.89 GB
|
||||
localhost/godot-web 4.x-f39 2.24 GB
|
||||
localhost/godot-android 4.x-f39 3.67 GB
|
||||
localhost/godot-osx 4.x-f39 4.70 GB
|
||||
localhost/godot-ios 4.x-f39 5.30 GB
|
||||
|
||||
In addition to this, generating containers will also require some host disk space
|
||||
(around 10 GB) for the dependencies (Xcode).
|
||||
(up to 10 GB) for the dependencies (Xcode).
|
||||
|
||||
|
||||
## Toolchains
|
||||
|
||||
These are the toolchains currently in use for Godot 4.0 and later:
|
||||
These are the toolchains currently in use for Godot 4.2 and later:
|
||||
|
||||
- Base image: Fedora 36
|
||||
- SCons: 4.4.0
|
||||
- Base image: Fedora 39
|
||||
- SCons: 4.5.2
|
||||
- Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1, from our own [Linux SDK](https://github.com/godotengine/buildroot)
|
||||
- Windows: MinGW 9.0.0, GCC 11.2.0, binutils 2.37
|
||||
- Web: Emscripten 3.1.18
|
||||
- Android: Android NDK 23.2.8568313, build-tools 32.0.0, platform android-32, CMake 3.18.1
|
||||
- macOS: Xcode 13.3.1 with LLVM Clang 13.0.1, MacOSX SDK 12.3
|
||||
- iOS: Xcode 13.3.1 with LLVM Clang 13.0.1, iPhoneOS SDK 15.4
|
||||
- Windows: MinGW 11.0.0, GCC 13.2.1, binutils 2.40
|
||||
- Web: Emscripten 3.1.39
|
||||
- Android: Android NDK 23.2.8568313, build-tools 33.0.2, platform android-33, CMake 3.22.1, JDK 17
|
||||
- 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
|
||||
|
|
8
build.sh
8
build.sh
|
@ -7,7 +7,7 @@ source $basedir/setup.sh
|
|||
if [ -z "$1" -o -z "$2" ]; then
|
||||
echo "Usage: $0 <godot branch> <base distro>"
|
||||
echo
|
||||
echo "Example: $0 3.x f35"
|
||||
echo "Example: $0 4.x f39"
|
||||
echo
|
||||
echo "godot branch:"
|
||||
echo " Informational, tracks the Godot branch these containers are intended for."
|
||||
|
@ -58,9 +58,9 @@ podman_build windows
|
|||
podman_build web
|
||||
podman_build android
|
||||
|
||||
XCODE_SDK=14.1
|
||||
OSX_SDK=13.0
|
||||
IOS_SDK=16.1
|
||||
XCODE_SDK=15
|
||||
OSX_SDK=14.0
|
||||
IOS_SDK=17.0
|
||||
if [ ! -e "${files_root}"/MacOSX${OSX_SDK}.sdk.tar.xz ] || [ ! -e "${files_root}"/iPhoneOS${IOS_SDK}.sdk.tar.xz ] || [ ! -e "${files_root}"/iPhoneSimulator${IOS_SDK}.sdk.tar.xz ]; then
|
||||
if [ ! -e "${files_root}"/Xcode_${XCODE_SDK}.xip ]; then
|
||||
echo "files/Xcode_${XCODE_SDK}.xip is required. It can be downloaded from https://developer.apple.com/download/more/ with a valid apple ID."
|
||||
|
|
Loading…
Reference in New Issue