build-containers/README.md

84 lines
3.7 KiB
Markdown
Raw Normal View History

2019-01-07 21:51:22 +01:00
# Godot engine build containers
2021-02-15 01:26:43 +01:00
This repository contains the Dockerfiles for the official Godot engine builds.
These containers should help you build Godot for all platforms supported on
any machine that can run Docker containers.
2019-01-07 21:51:22 +01:00
2021-02-15 01:26:43 +01:00
The in-container build scripts are in a separate repository:
https://github.com/godotengine/godot-build-scripts
2019-01-07 21:51:22 +01:00
2021-02-09 12:05:06 +01:00
2021-02-15 01:26:43 +01:00
## Introduction
These scripts build a number of containers which are then used to build final
Godot tools, templates and server packages for several platforms.
Once these containers are built, they can be used to compile different Godot
versions without the need of recreating them.
The `upload.sh` file is meant to be used by Godot Release Team and is not
documented here.
## Requirements
These containers have been tested under Fedora 36 (other distros/releases may work too).
2021-02-15 01:26:43 +01:00
The tool used to build and manage the containers is `podman` (install it with `dnf -y podman`).
2021-02-15 01:26:43 +01:00
We currently use `podman` as root to build and use these containers. Documenting a workflow to
configure the host OS to be able to do all this without root would be welcome (but back when we
tried we ran into performance issues).
2021-02-15 01:26:43 +01:00
## Usage
The `build.sh` script included is used to build the containers themselves.
2021-02-15 01:26:43 +01:00
The first two arguments can take any value and are meant to convey what Godot branch
you are building for (e.g. `3.x`) and what Linux distribution the `Dockerfile.base`
is based on (e.g. `f36` for Fedora 36).
2021-02-15 01:26:43 +01:00
The third argument is important and should be the name of a tagged Mono release from
the upstream `2020-02` branch (e.g. `mono-6.12.0.182`).
2021-02-15 01:26:43 +01:00
Run the command using:
2021-02-15 01:26:43 +01:00
./build.sh 3.x f36 mono-6.12.0.182
2021-02-15 01:26:43 +01:00
The above will generate images using the tag '3.x-f36-mono-6.12.0.182'.
You can then specify it in the `build.sh` of [godot-build-scripts]().
2021-02-15 01:26:43 +01:00
### Selecting which images to build
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_mono -t godot-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log
$podman_build_mono -t godot-windows:${img_version} -f Dockerfile.windows . 2>&1 | tee logs/windows.log
2021-02-15 01:26:43 +01:00
$podman_build_mono -t godot-javascript:${img_version} -f Dockerfile.javascript . 2>&1 | tee logs/javascript.log
$podman_build_mono -t godot-android:${img_version} -f Dockerfile.android . 2>&1 | tee logs/android.log
...
**Note:** The MSVC image (used for UWP builds) does not work currently.
2021-02-15 01:26:43 +01:00
## Image sizes
2021-02-15 01:26:43 +01:00
These are the expected container image sizes, so you can plan your disk usage in advance:
REPOSITORY TAG SIZE
localhost/godot-fedora 3.x-f36-mono-6.12.0.182 546 MB
localhost/godot-export 3.x-f36-mono-6.12.0.182 1.03 GB
localhost/godot-mono 3.x-f36-mono-6.12.0.182 1.41 GB
localhost/godot-mono-glue 3.x-f36-mono-6.12.0.182 1.75 GB
localhost/godot-linux 3.x-f36-mono-6.12.0.182 3.8 GB
localhost/godot-windows 3.x-f36-mono-6.12.0.182 3.31 GB
localhost/godot-javascript 3.x-f36-mono-6.12.0.182 3.87 GB
localhost/godot-android 3.x-f36-mono-6.12.0.182 16.8 GB
localhost/godot-osx 3.x-f36-mono-6.12.0.182 5.71 GB
localhost/godot-ios 3.x-f36-mono-6.12.0.182 6.53 GB
In addition to this, generating containers will also require some host disk space
(up to 30 GB) for the downloaded Mono sources and dependencies (Xcode, MSVC).