Commit Graph

71 Commits

Author SHA1 Message Date
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
Rémi Verschelde d185265e87
Merge pull request #16 from godotengine/base-deps
Install common dependencies in Dockerfile.base
2019-11-18 21:49:03 +01:00
Rémi Verschelde f7966f0a1e Disable installation of weak deps
This saves us from pulling gtk2 and gtk3 as weak deps of
perl and git or whatnot... And we don't need to pull in all
the documentation on Ubuntu.

Also ensures that we properly run `dnf clean all` after each
installation.
2019-11-18 17:09:03 +01:00
Rémi Verschelde 79fbeca9b4 Remove unused build dependencies
We now default to everything bundled in 3.2 and 3.1.2+.
2019-11-15 10:20:29 +01:00
Rémi Verschelde 046e892f76 Install common dependencies in Dockerfile.base 2019-11-15 10:17:07 +01:00
Rémi Verschelde 341c290a6e Don't run make distclean, it fails on latest mono 2019-11-14 14:47:51 +01:00
Rémi Verschelde 20eec12cdb
Merge pull request #14 from tinmanjuggernaut/fix_web_docker
Fix Docker.javascript not building
2019-11-13 18:14:21 +01:00
Cory Petkovsek ffbf92c5b2 Add which and specify emssdk 1.39.0 2019-11-13 23:53:11 +08:00
Rémi Verschelde 261512a305 Re-enable temporarily disabled upload of windows and msvc containers 2019-11-13 16:37:57 +01:00
Rémi Verschelde 2765ca6f5a
Merge pull request #11 from tinmanjuggernaut/fix_android_build
Mount files into docker for android
2019-11-12 09:14:16 +01:00
Cory Petkovsek 4b6fa4ade7 mount files into docker for android 2019-11-12 16:05:14 +08:00
Rémi Verschelde 4d8fc0292b
Merge pull request #7 from akien-mga/android-mono
android: Set up Mono buildsystem
2019-11-11 17:21:07 +01:00