mirror of
https://github.com/godotengine/build-containers.git
synced 2025-12-31 21:48:41 +03:00
- 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.
83 lines
2.2 KiB
Bash
Executable File
83 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
basedir=$(cd $(dirname "$0"); pwd)
|
|
|
|
source $basedir/setup.sh
|
|
|
|
if [ -z "$1" -o -z "$2" ]; then
|
|
echo "Usage: $0 <godot branch> <base distro>"
|
|
echo
|
|
echo "Example: $0 4.x f39"
|
|
echo
|
|
echo "godot branch:"
|
|
echo " Informational, tracks the Godot branch these containers are intended for."
|
|
echo
|
|
echo "base distro:"
|
|
echo " Informational, tracks the base Linux distro these containers are based on."
|
|
echo
|
|
echo "The resulting image version will be <godot branch>-<base distro>."
|
|
exit 1
|
|
fi
|
|
|
|
godot_branch=$1
|
|
base_distro=$2
|
|
img_version=$godot_branch-$base_distro
|
|
files_root="$basedir/files"
|
|
|
|
if [ ! -z "$PS1" ]; then
|
|
# Confirm settings
|
|
echo "Docker image tag: ${img_version}"
|
|
echo
|
|
while true; do
|
|
read -p "Is this correct? [y/n] " yn
|
|
case $yn in
|
|
[Yy]* ) break;;
|
|
[Nn]* ) exit 1;;
|
|
* ) echo "Please answer yes or no.";;
|
|
esac
|
|
done
|
|
fi
|
|
|
|
mkdir -p logs
|
|
|
|
"$podman" build -t godot-fedora:${img_version} -f Dockerfile.base . 2>&1 | tee logs/base.log
|
|
|
|
podman_build() {
|
|
# You can add --no-cache as an option to podman_build below to rebuild all containers from scratch.
|
|
"$podman" build \
|
|
--build-arg img_version=${img_version} \
|
|
-v "${files_root}":/root/files:z \
|
|
-t godot-"$1:${img_version}" \
|
|
-f Dockerfile."$1" . \
|
|
2>&1 | tee logs/"$1".log
|
|
}
|
|
|
|
podman_build linux
|
|
podman_build windows
|
|
|
|
podman_build web
|
|
podman_build android
|
|
|
|
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."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building OSX and iOS SDK packages. This will take a while"
|
|
podman_build xcode
|
|
"$podman" run -it --rm \
|
|
-v "${files_root}":/root/files:z \
|
|
-e XCODE_SDKV="${XCODE_SDK}" \
|
|
-e OSX_SDKV="${OSX_SDK}" \
|
|
-e IOS_SDKV="${IOS_SDK}" \
|
|
godot-xcode:${img_version} \
|
|
2>&1 | tee logs/xcode_packer.log
|
|
fi
|
|
|
|
podman_build osx
|
|
podman_build ios
|