GithubHelp home page GithubHelp logo

dream-young-soul / build-containers Goto Github PK

View Code? Open in Web Editor NEW

This project forked from godotengine/build-containers

0.0 0.0 0.0 79.1 MB

Godot engine build containers

Shell 85.75% JavaScript 14.25%

build-containers's Introduction

Godot engine build containers

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.

The in-container build scripts are in a separate repository: https://github.com/godotengine/godot-build-scripts

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).

The tool used to build and manage the containers is podman (install it with dnf -y podman).

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).

Usage

The build.sh script included is used to build the containers themselves.

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).

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).

Run the command using:

./build.sh 3.x f36 mono-6.12.0.182

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.

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
$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.

Image sizes

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    6.06 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).

Toolchains

These are the toolchains currently in use for Godot 3.5 and later:

  • Base image: Fedora 36
  • Mono version: 6.12.0.182
  • SCons: 4.3.0
  • Linux: GCC 10.2.0 built against glibc 2.19, binutils 2.35.1, from our own Linux SDK
  • Windows: MinGW 9.0.0, GCC 11.2.0, binutils 2.37
  • HTML5: Emscripten 3.1.14 (standard builds), Emscripten 1.39.9 (Mono builds)
  • 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
  • UWP: Visual Studio 2017, current configuration sadly not easily reproducible (Dockerfile.msvc image is not compiled by default as it doesn't work)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.