Commit Graph

182 Commits

Author SHA1 Message Date
Rémi Verschelde 795edeff5e
Merge pull request #56 from godotengine/xcode-12.0.1
iOS and OSX: Upgrade containers to use latest osxcross and Xcode 12.0.1
2020-10-07 12:36:29 +02:00
Rémi Verschelde 3366693a05 iOS and OSX: Upgrade containers to use latest osxcross and Xcode 12.0.1
Provides SDKs for iOS 14.0 and macOS 10.15.

Mono is patched to fix a regression in Xcode 11.4+, still unfixed by Apple.
Another patch is backported from Unity's Mono fork to fix another issue with
the macOS 11.0 beta SDK.

Fixes missing arguments in Xcode and iOS dockerfiles, seems like some changes
were not properly committed during the last refactor.
2020-10-07 12:33:54 +02:00
Rémi Verschelde aa95c5535b
Merge pull request #55 from Calinou/scripts-executable
Make all scripts executable
2020-10-05 20:35:39 +02:00
Hugo Locurcio ef854376f7
Make all scripts executable
Unlike `build.sh`, other scripts weren't executable already.
2020-10-04 17:41:21 +02:00
Rémi Verschelde e1cf3dfa45
Merge pull request #53 from arichnad/master
podman is required.  also, "files" subdirectory here is incorrect.
2020-07-14 20:20:17 +02:00
adrian bb2e4e0600 podman is required. "docker build -v" does not exist, this is only in podman.
files subdirectory here is incorrect.
2020-07-08 09:37:11 -04:00
Rémi Verschelde 3ccc623ac2
Merge pull request #47 from godotengine/mono-ios
iOS: Build Mono runtime
2020-04-14 12:44:29 +02:00
Rémi Verschelde d3cbff6cc7 iOS: Build Mono runtime
iOS image is now based on the OSX one, as we'll need the OSX
toolchain to build the AOT cross-compiler.

We can't build the cross-compiler yet though as godot-mono-builds
doesn't support OSXCross for that part, and we will likely need
to build libclang manually beforehand too.
2020-04-14 12:05:42 +02:00
Rémi Verschelde 106d163be4 Mono: Remove patch applied by godot-mono-builds patch_mono.py already 2020-04-07 16:18:37 +02:00
Rémi Verschelde dce2101e6e Use parallel make in godot-mono-builds scripts
Builds are faster with 64 jobs instead of 1 :)

It's mostly relevant for 'make' but we also use the -j flag
for 'configure' as it can also trigger a build for external
dependencies (like llvm for upcoming iOS Mono builds).
2020-04-07 16:18:37 +02:00
Rémi Verschelde a26fc11c30 Factor out cloning and patching for godot-mono-builds
This will also be used for iOS so it makes sense to do it all
together with the split out mono clone.

This also allows to pin the commit used more easily.
2020-04-07 16:18:37 +02:00
Rémi Verschelde 4812a83c56 Wasm: Fix mono patch application on Emscripten 1.38.47 2020-04-07 16:18:37 +02:00
Cory Petkovsek 86739a8185 Optimize mono & dnf downloads 2020-03-20 01:13:06 +08:00
Rémi Verschelde 854a4e462d
Merge pull request #36 from godotengine/mono-fix-tls-reattach-unity-fork
Mono: Add patch from Unity fork to fix TLS re-attachment
2020-01-22 11:32:03 +01:00
Rémi Verschelde cb26a84aea Mono: Add patch from Unity fork to fix TLS re-attachment
Fixes godotengine/godot#33735.
2020-01-21 15:06:46 +01:00
Rémi Verschelde bf4ea28425 OSX: Don't keep backup of mono/etc/config 2020-01-10 10:52:03 +01:00
Rémi Verschelde 8a912c7f0e Windows: Set WINEPATH for 32-bit wine to fix Mono build
Symlinking the BCL from `/usr/lib/mono` no longer seems needed
for either architecture, everything is built properly.

Fixes #34.
2020-01-07 14:01:22 +01:00
Rémi Verschelde 01cb76abed
Merge pull request #33 from godotengine/mono-win32-fix-container
Windows: Prevent 32-bit build failure from skipping symlinks
2020-01-07 10:43:34 +01:00
Rémi Verschelde 58ab466fd8 Windows: Prevent 32-bit build failure from skipping symlinks
Like most programming language, in a logic statement `A && B || C`,
bash will not evaluate B if A is false (failing in our case).
Using `A && (B || C)` to prevent that.

A build error in the Windows 32-bit Mono build thus caused skipping
all subsequent `ln` statements up until `|| /bin/true`, which is used
to link only the folders which are missing from the self-built mono
prefix.

The build error still needs to be fixed but it doesn't seem to prevent
using the resulting container to build 32-bit Windows binaries.
2020-01-07 09:57:27 +01:00
Rémi Verschelde 4b458b46f5 Mono: Upgrade Android/JavaScript version of godot-mono-builds.git 2020-01-03 20:42:22 +01:00
Rémi Verschelde 8f3eb0167f
Merge pull request #32 from godotengine/win64-fix-mono-6
Windows: Workaround Mono 6 BCL cross-compiling bug using Wine
2019-12-18 08:20:26 +01:00
Rémi Verschelde 4cbbe672b5 Windows: Workaround Mono 6 BCL cross-compiling bug using Wine
This can be reverted once a proper fix has been deployed in upstream
Mono. No ETA yet as we're busy and it's unlikely to happen if we don't
do it ourselves :)

Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
2019-12-18 08:18:10 +01:00
Rémi Verschelde da57f92dba
Merge pull request #31 from godotengine/osx-config-update
OSX: Update Mono config based on upstream one
2019-12-18 08:15:15 +01:00
Rémi Verschelde 65e94a9acb OSX: Update Mono config based on upstream one
Taken from a system-wide install of Mono 6.4 on macOS,
provided by @neikeq.
2019-12-18 08:14:36 +01:00
Rémi Verschelde 64669476c5
Merge pull request #29 from godotengine/mono-version-fix-hash
Mono: Allow specifying fixed git hash and pretty image version
2019-12-09 11:02:04 +01:00
Rémi Verschelde 0a63061960 Mono: Allow specifying fixed git hash and pretty image version
Specifying only a branch like '2019-08' is problematic if upstream commits
something between the builds of two containers.

We could make a tarball in the first container build and reuse that, but we
need the flexibility of Git for some patching in the Android and JavaScript
builds, so instead we allow specifying a git tree-ish as the third argument.

We can therefore also give a pretty version string to use for the image name
as second argument, e.g. 6.6.0.160 for bef1e6335812d32f8eab648c0228fc624b9f8357.

As we can't `git clone` a commit hash directly, we still need to provide both
branch name and then commit hash for this use case.
2019-12-04 11:50:04 +01:00
Rémi Verschelde ffdd1a039c JavaScript: Drop -upstream suffix from image name 2019-12-03 12:47:26 +01:00
Rémi Verschelde 43f2cf8654
Merge pull request #28 from godotengine/fix-javascript-mono
JavaScript: Update and fix mono patch for Emscripten 1.38.42+
2019-12-03 09:57:40 +01:00
Rémi Verschelde bd49e7a478
Merge pull request #27 from godotengine/fix-img-version
[WIP] Properly pass img_version to all containers
2019-12-03 09:56:39 +01:00
Rémi Verschelde e6e211f495 JavaScript: Update and fix mono patch for Emscripten 1.38.42+
Cherry-pick the whole https://github.com/mono/mono/pull/16636

We were also attempting to patch the wrong folder previously (I had it
working in my local tests but committed the wrong patch when rebasing
to make the Git history pretty... :)).
2019-12-03 09:55:09 +01:00
Rémi Verschelde d4d8ce85f2 Pin specific commit for all Git clones
This helps ensure that container builds are reproducible if thirdparty
repositories change.
2019-12-03 09:52:56 +01:00
Rémi Verschelde 35b535b6bc Windows: Drop patched mingw-binutils, upstream F31 has the fix
The mingw-binutils fix for LTO was backported upstream to Fedora 31
with https://bodhi.fedoraproject.org/updates/FEDORA-2019-3d381baace
2019-12-03 08:13:45 +01:00
Rémi Verschelde cd973e1d9f Properly pass img_version to all containers
Continuation and fixup of #23.
2019-12-03 08:13:45 +01:00
Rémi Verschelde ab3cdae9e0
Merge pull request #25 from godotengine/osx-config-mono-6.6
OSX: Fix config file for mono 6.0+
2019-12-02 10:09:04 +01:00
Rémi Verschelde 5d8005ab41 OSX: Fix config file for mono 6.0+
This effectively means that we can't use the current Dockerfile.osx
to build mono < 6.0, as the DLL path changed.
2019-11-23 17:19:41 +01:00
Rémi Verschelde 8208704ccb
Merge pull request #23 from godotengine/img-version
Refactor image versioning, using $godot_branch-$mono_version format
2019-11-23 11:08:56 +01:00
Rémi Verschelde 4ab47bf24d
Merge pull request #22 from godotengine/msbuild-16.3-fix-wasm
mono: Update msbuild to 16.3, support for git branches
2019-11-23 11:08:42 +01:00
Rémi Verschelde d29b6a78fb Refactor image versioning, using $godot_branch-$mono_version format
E.g. `3.1-mono-5.18.1.3` or `master-2019-08`.
The images which do not include mono only use the Godot branch,
i.e. `3.1` or `master`.
2019-11-21 09:55:00 +01:00
Rémi Verschelde 1aec8652d3 mono: Update msbuild to 16.3, support for git branches
To get WebAssembly templates to actually work, we need to use
Mono 6.6 (currently in preview), which doesn't have tags yet
but is in the `2019-08` branch. So I dehardcoded the `mono-`
prefix for the git tree-ish to allow using `./build.sh 2019-08`.

6.6 doesn't build with msbuild 16.0, so I'm upgrading to its
matching version 16.3. There are no DEB files for 16.3 on the
EOL'ed Ubuntu 14.04, but it seems that the 16.04 packages install
cleanly.

We also backport a patch from mono's master branch to fix wasm
support further, and enable parallel build jobs for make.
2019-11-21 09:47:48 +01:00
Hein-Pieter van Braam f7a44c6fc6
Merge pull request #21 from godotengine/fix-osx-build
OSX: Fix support for latest osxcross and Xcode 10.13
2019-11-19 13:43:08 -08:00
Rémi Verschelde 1f52c3f1cb OSX: Fix support for latest osxcross and Xcode 10.13
The osxcross installation process has been improved and now supports
more recent versions of Xcode than 7, so most of our custom code is
no longer needed.

The xcode packer could also be reworked to use osxcross' SDK packing
script.

Fixes #15.
2019-11-19 11:18:28 +01:00
Rémi Verschelde 545fbe5b9a
Merge pull request #20 from godotengine/fedora-31
Update base to Fedora 31
2019-11-18 21:55:45 +01:00
Rémi Verschelde bb171470f6 Update base to Fedora 31 2019-11-18 21:54:40 +01:00
Rémi Verschelde 81cb1623c9
Merge pull request #19 from godotengine/cmd-bash
Use /bin/bash as default CMD, log container build output
2019-11-18 21:54:16 +01:00
Rémi Verschelde f5297d3060 Log each container build to a file 2019-11-18 21:52:37 +01:00
Rémi Verschelde a5ceea36da Use /bin/bash as default CMD instruction
The previous `['/bin/bash']` was not working, running the image
with `podman run -it <name>` would evaluate to:
```
> sh -c ['/bin/bash']
sh: [/bin/bash]: No such file or directory
```
2019-11-18 21:52:37 +01:00
Rémi Verschelde 2d95ceb333
Merge pull request #18 from godotengine/mono-wasm-bcl
Build Mono WebAssembly runtime and BCLs
2019-11-18 21:52:21 +01:00
Rémi Verschelde 17666f07fe Build Mono WebAssembly runtime and BCLs
We force using Emscripten 1.38.47 as there is a regression in 1.38.48
and 1.39.x which makes the generation of our .wasm file fail.

Up until now we used the desktop BCL (compiled with desktop Mono)
for both desktop and Android, but that does not work for WebAssembly
(and we suspect Android issues related to it).

So we now build the Android and WebAssembly BCLs in the relevant
containers, which are later copied in the templates directory to
include on export. We already have the desktop BCL from the regular
build.
2019-11-18 21:51:46 +01:00
Rémi Verschelde 12b37c7c7e
Merge pull request #17 from godotengine/mono-from-git
Use git tag to checkout stable mono releases
2019-11-18 21:51:07 +01:00
Rémi Verschelde 668e36373b Use git tag to checkout stable mono releases
The main reason is that upstream Mono tends to miss some
important files in its tarballs, so Git tags appears to be
a more reliable medium.

Also group RUN commands to reduce the number of intermediate
dependencies.
2019-11-18 21:49:58 +01:00