From b409e6b9e9841aa5a5765c203ee9b9ebbba12180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 12 Jul 2021 12:38:02 +0200 Subject: [PATCH] Toolchain updates: Fedora 34, Emscripten 2.0.25, and more - Update base image from Fedora 33 to Fedora 34 (newer GCC, Clang, MinGW and binutils). - Update Emscripten for classical builds from 2.0.15 to 2.0.25. - Update Android SDK tools to latest version, and build-tools from 30.0.1 to 30.0.3. - Update osxcross and ios cctools-port to latest commits. - Update iOS Mono build's min target version to match Godot's buildsystem. See #83 for details. --- Dockerfile.android | 11 +++++------ Dockerfile.base | 4 ++-- Dockerfile.ios | 17 ++++++++++------- Dockerfile.javascript | 4 +--- Dockerfile.mono | 3 +-- Dockerfile.osx | 2 +- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Dockerfile.android b/Dockerfile.android index cdd1a93..4526afc 100644 --- a/Dockerfile.android +++ b/Dockerfile.android @@ -11,19 +11,18 @@ RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mand dnf -y install --setopt=install_weak_deps=False \ java-1.8.0-openjdk-devel ncurses-compat-libs && \ mkdir -p sdk && cd sdk && \ - curl -LO https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip && \ - unzip commandlinetools-linux-6858069_latest.zip && \ - rm commandlinetools-linux-6858069_latest.zip && \ + export CMDLINETOOLS=commandlinetools-linux-7302050_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;30.0.1' 'platforms;android-29' 'cmake;3.10.2.4988404' + cmdline-tools/bin/sdkmanager --sdk_root="${ANDROID_SDK_ROOT}" "ndk;${ANDROID_NDK_VERSION}" 'cmdline-tools;latest' 'build-tools;30.0.3' 'platforms;android-29' 'cmake;3.18.1' RUN cp -a /root/files/${mono_version} /root && \ export MONO_SOURCE_ROOT=/root/${mono_version} && \ cd /root/${mono_version}/godot-mono-builds && \ python3 android.py configure -j --target=all-runtime && \ python3 android.py make -j --target=all-runtime && \ - cd /root/${mono_version} && git clean -fdx && NOCONFIGURE=1 ./autogen.sh && \ - cd /root/${mono_version}/godot-mono-builds && \ python3 bcl.py make -j --product=android && \ cd /root && \ rm -rf /root/${mono_version} diff --git a/Dockerfile.base b/Dockerfile.base index a0b0a95..fa2d500 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -1,10 +1,10 @@ -FROM fedora:33 +FROM fedora:34 WORKDIR /root RUN dnf -y upgrade --setopt=install_weak_deps=False && \ dnf -y install --setopt=install_weak_deps=False \ - bash bzip2 curl git make nano patch pkgconfig python-unversioned-command python3-pip unzip which xz && \ + bash bzip2 curl file findutils git make nano patch pkgconfig python3-pip unzip which xz && \ pip install scons==4.1.0 CMD /bin/bash diff --git a/Dockerfile.ios b/Dockerfile.ios index cf4496f..bc20992 100644 --- a/Dockerfile.ios +++ b/Dockerfile.ios @@ -9,7 +9,7 @@ RUN dnf -y install --setopt=install_weak_deps=False \ automake autoconf clang gcc gcc-c++ gcc-objc gcc-objc++ cmake libicu-devel libtool libxml2-devel llvm-devel openssl-devel perl python yasm && \ git clone --progress https://github.com/tpoechtrager/cctools-port.git && \ cd /root/cctools-port && \ - git checkout 14ab64360c556c1263e022318ee4be1077d7a839 && \ + git checkout 236a426c1205a3bfcf0dbb2e2faf2296f0a100e5 && \ # arm64 device usage_examples/ios_toolchain/build.sh /root/files/iPhoneOS${IOS_SDK}.sdk.tar.xz arm64 && \ mkdir -p /root/ioscross/arm64 && \ @@ -42,12 +42,15 @@ RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mand cd /root/${mono_version} && \ cd godot-mono-builds && \ export MONO_SOURCE_ROOT=/root/${mono_version} && \ - python3 ios.py configure -j --verbose --target=arm64 --ios-toolchain ${IOSCROSS_ROOT}/arm64 --ios-sdk ${IOSCROSS_ROOT}/arm64/SDK/iPhoneOS${IOS_SDK}.sdk --osx-toolchain ${OSXCROSS_ROOT} && \ - python3 ios.py make -j --verbose --target=arm64 && \ - #python3 ios.py configure -j --verbose --target=arm64-sim --ios-toolchain ${IOSCROSS_ROOT}/arm64_sim --ios-sdk ${IOSCROSS_ROOT}/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk --osx-toolchain ${OSXCROSS_ROOT} && \ - #python3 ios.py make -j --verbose --target=arm64-sim && \ - python3 ios.py configure -j --verbose --target=x86_64 --ios-toolchain ${IOSCROSS_ROOT}/x86_64_sim --ios-sdk ${IOSCROSS_ROOT}/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk --osx-toolchain ${OSXCROSS_ROOT} && \ - python3 ios.py make -j --verbose --target=x86_64 && \ + python3 ios.py configure -j --target=arm64 --ios-version-min 10.0 --osx-toolchain ${OSXCROSS_ROOT} \ + --ios-toolchain ${IOSCROSS_ROOT}/arm64 --ios-sdk ${IOSCROSS_ROOT}/arm64/SDK/iPhoneOS${IOS_SDK}.sdk && \ + python3 ios.py make -j --target=arm64 && \ + #python3 ios.py configure -j --target=arm64-sim --ios-version-min 10.0 --osx-toolchain ${OSXCROSS_ROOT} \ + # --ios-toolchain ${IOSCROSS_ROOT}/arm64_sim --ios-sdk ${IOSCROSS_ROOT}/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk && \ + #python3 ios.py make -j --target=arm64-sim && \ + python3 ios.py configure -j --target=x86_64 --ios-version-min 10.0 --osx-toolchain ${OSXCROSS_ROOT} \ + --ios-toolchain ${IOSCROSS_ROOT}/x86_64_sim --ios-sdk ${IOSCROSS_ROOT}/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk && \ + python3 ios.py make -j --target=x86_64 && \ python3 bcl.py make -j --product=ios && \ # TODO: Emable once godot-mono-builds supports osxcross for the cross-compiler. # It requires having a build of libclang with support for iOS arm64 + changes to the build scripts. diff --git a/Dockerfile.javascript b/Dockerfile.javascript index 4517497..d070161 100644 --- a/Dockerfile.javascript +++ b/Dockerfile.javascript @@ -3,7 +3,7 @@ FROM godot-mono:${img_version} ARG mono_version -ENV EMSCRIPTEN_CLASSICAL=2.0.15 +ENV EMSCRIPTEN_CLASSICAL=2.0.25 ENV EMSCRIPTEN_MONO=1.39.9 RUN if [ -z "${mono_version}" ]; then printf "\n\nArgument mono_version is mandatory!\n\n"; exit 1; fi && \ @@ -23,8 +23,6 @@ RUN if [ -z "${mono_version}" ]; then printf "\n\nArgument mono_version is manda python3 patch_emscripten.py && \ python3 wasm.py configure -j --target=runtime && \ python3 wasm.py make -j --target=runtime && \ - cd /root/${mono_version} && git clean -fdx && NOCONFIGURE=1 ./autogen.sh && \ - cd /root/${mono_version}/godot-mono-builds && \ python3 bcl.py make -j --product wasm && \ cd /root && \ rm -rf /root/${mono_version} diff --git a/Dockerfile.mono b/Dockerfile.mono index 07b415b..d3bfaf5 100644 --- a/Dockerfile.mono +++ b/Dockerfile.mono @@ -5,8 +5,7 @@ ARG mono_version RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi && \ dnf -y install --setopt=install_weak_deps=False \ - gcc gcc-c++ make yasm \ - autoconf automake cmake gettext libtool perl && \ + autoconf automake cmake gcc gcc-c++ gettext libtool perl python-unversioned-command && \ cp -a /root/files/${mono_version} /root && \ cd /root/${mono_version} && \ NOCONFIGURE=1 ./autogen.sh && \ diff --git a/Dockerfile.osx b/Dockerfile.osx index 09d3ccf..a53b22d 100644 --- a/Dockerfile.osx +++ b/Dockerfile.osx @@ -8,7 +8,7 @@ RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mand automake autoconf bzip2-devel clang libicu-devel libtool libxml2-devel llvm-devel openssl-devel yasm && \ git clone --progress https://github.com/tpoechtrager/osxcross.git && \ cd /root/osxcross && \ - git checkout 61925a29c404fc547ce9d51eb2ee4a09bd6533da && \ + git checkout 447cf3b3ea4323d24648f5f7f775f5977a0d15bd && \ ln -s /root/files/MacOSX11.1.sdk.tar.xz /root/osxcross/tarballs && \ UNATTENDED=1 ./build.sh