From 0a9d7b27776a9d0aa1b3d7b633fd0111e2ee987b Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam Date: Mon, 7 Jan 2019 21:51:22 +0100 Subject: [PATCH] Initial commit --- .gitignore | 9 +++++ Dockerfile.android | 10 ++++++ Dockerfile.base | 5 +++ Dockerfile.ios | 19 ++++++++++ Dockerfile.javascript | 9 +++++ Dockerfile.mono | 18 ++++++++++ Dockerfile.mono-glue | 7 ++++ Dockerfile.msvc | 26 ++++++++++++++ Dockerfile.osx | 49 ++++++++++++++++++++++++++ Dockerfile.ubuntu-32 | 37 ++++++++++++++++++++ Dockerfile.ubuntu-64 | 37 ++++++++++++++++++++ Dockerfile.windows | 32 +++++++++++++++++ Dockerfile.xcode | 37 ++++++++++++++++++++ README.md | 8 +++++ build.sh | 50 +++++++++++++++++++++++++++ files/msvc-fixup.sh | 24 +++++++++++++ files/patches/fix-fuse-check.diff | 27 +++++++++++++++ files/patches/fix-mono-configure.diff | 12 +++++++ upload.sh | 26 ++++++++++++++ 19 files changed, 442 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile.android create mode 100644 Dockerfile.base create mode 100644 Dockerfile.ios create mode 100644 Dockerfile.javascript create mode 100644 Dockerfile.mono create mode 100644 Dockerfile.mono-glue create mode 100644 Dockerfile.msvc create mode 100644 Dockerfile.osx create mode 100644 Dockerfile.ubuntu-32 create mode 100644 Dockerfile.ubuntu-64 create mode 100644 Dockerfile.windows create mode 100644 Dockerfile.xcode create mode 100644 README.md create mode 100644 build.sh create mode 100644 files/msvc-fixup.sh create mode 100644 files/patches/fix-fuse-check.diff create mode 100644 files/patches/fix-mono-configure.diff create mode 100644 upload.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8390d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.tar +*.tar.gz +*.tar.bz2 +*.tar.xz +*.exe +*.swp +*.dmg +*.zip +*.xip diff --git a/Dockerfile.android b/Dockerfile.android new file mode 100644 index 0000000..e311ee6 --- /dev/null +++ b/Dockerfile.android @@ -0,0 +1,10 @@ +FROM godot-fedora:latest + +RUN dnf -y install scons java-1.8.0-openjdk-devel ncurses-compat-libs unzip which && \ + curl -LO https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip && \ + unzip sdk-tools-linux-4333796.zip && \ + rm sdk-tools-linux-4333796.zip && \ + yes | tools/bin/sdkmanager --licenses && \ + tools/bin/sdkmanager ndk-bundle 'platforms;android-23' 'build-tools;19.1.0' 'build-tools;28.0.3' 'platforms;android-28' + +CMD ['/bin/bash'] diff --git a/Dockerfile.base b/Dockerfile.base new file mode 100644 index 0000000..bf3e4a8 --- /dev/null +++ b/Dockerfile.base @@ -0,0 +1,5 @@ +FROM fedora:29 + +WORKDIR /root + +CMD /bin/true diff --git a/Dockerfile.ios b/Dockerfile.ios new file mode 100644 index 0000000..bd191a8 --- /dev/null +++ b/Dockerfile.ios @@ -0,0 +1,19 @@ +FROM godot-fedora:latest + +RUN dnf -y install automake autoconf clang gcc gcc-c++ gcc-objc gcc-objc++ cmake git libicu-devel libtool libxml2-devel llvm-devel make openssl-devel patch perl python scons xz && \ + git clone https://github.com/tpoechtrager/cctools-port.git && \ + cd /root/cctools-port && \ + sed -i 's#./autogen.sh#libtoolize -c -i --force\n./autogen.sh#' usage_examples/ios_toolchain/build.sh && \ + usage_examples/ios_toolchain/build.sh /root/files/iPhoneOS11.2.sdk.tar.xz arm64 && \ + mkdir -p /root/ioscross/arm64 && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/arm64 && \ + mkdir /root/ioscross/arm64/usr && \ + ln -s /root/ioscross/arm64/bin /root/ioscross/arm64/usr/bin && \ + sed -i 's#^TRIPLE=.*#TRIPLE="x86_64-apple-darwin11"#' usage_examples/ios_toolchain/build.sh && \ + usage_examples/ios_toolchain/build.sh /root/files/iPhoneSimulator11.2.sdk.tar.xz x86_64 && \ + mkdir -p /root/ioscross/x86_64 && \ + mv usage_examples/ios_toolchain/target/* /root/ioscross/x86_64 && \ + mkdir /root/ioscross/x86_64/usr && \ + ln -s /root/ioscross/x86_64/bin /root/ioscross/x86_64/usr/bin + +CMD ['/bin/bash'] diff --git a/Dockerfile.javascript b/Dockerfile.javascript new file mode 100644 index 0000000..182fe3d --- /dev/null +++ b/Dockerfile.javascript @@ -0,0 +1,9 @@ +FROM godot-fedora:latest + +RUN dnf -y install scons git xz java-openjdk && dnf clean all && \ + git clone https://github.com/juj/emsdk.git && \ + cd /root/emsdk && \ + /root/emsdk/emsdk install latest && \ + /root/emsdk/emsdk activate latest + +CMD ['/bin/bash'] diff --git a/Dockerfile.mono b/Dockerfile.mono new file mode 100644 index 0000000..130665f --- /dev/null +++ b/Dockerfile.mono @@ -0,0 +1,18 @@ +FROM godot-fedora:latest + +ARG mono_version + +RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi + +RUN dnf -y install cmake gcc gcc-c++ make which perl python curl bzip2 && dnf clean all && \ + curl https://download.mono-project.com/sources/mono/mono-${mono_version}.tar.bz2 | tar xj && \ + cd mono-${mono_version} && \ + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib/mono --disable-boehm && make -j && make install && make distclean && \ + cd /root && \ + rm -rf mono-${mono_version} && \ + cert-sync /etc/pki/tls/certs/ca-bundle.crt && \ + rpm -ivh --nodeps https://download.mono-project.com/repo/centos7-stable/m/msbuild/msbuild-16.0+xamarinxplat.2018.09.26.17.53-0.xamarin.3.epel7.noarch.rpm \ + https://download.mono-project.com/repo/centos7-stable/m/msbuild-libhostfxr/msbuild-libhostfxr-2.0.0.2017.07.06.00.01-0.xamarin.1.epel7.x86_64.rpm \ + https://download.mono-project.com/repo/centos7-stable/m/msbuild/msbuild-sdkresolver-16.0+xamarinxplat.2018.09.26.17.53-0.xamarin.3.epel7.noarch.rpm \ + https://download.mono-project.com/repo/centos7-stable/n/nuget/nuget-4.7.0.5148.bin-0.xamarin.1.epel7.noarch.rpm + diff --git a/Dockerfile.mono-glue b/Dockerfile.mono-glue new file mode 100644 index 0000000..56f256e --- /dev/null +++ b/Dockerfile.mono-glue @@ -0,0 +1,7 @@ +ARG mono_version +FROM godot-mono:${mono_version} +ARG mono_version + +RUN dnf -y install scons xorg-x11-server-Xvfb pkgconfig libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel mesa-libGL-devel alsa-lib-devel pulseaudio-libs-devel freetype-devel openssl-devel libudev-devel mesa-libGLU-devel mesa-dri-drivers && dnf clean all + +CMD ['/bin/bash'] diff --git a/Dockerfile.msvc b/Dockerfile.msvc new file mode 100644 index 0000000..50a90ae --- /dev/null +++ b/Dockerfile.msvc @@ -0,0 +1,26 @@ +FROM godot-fedora:latest + +ENV WINEDEBUG=-all +RUN dnf -y install wine winetricks xorg-x11-server-Xvfb curl p7zip-plugins && dnf clean all && \ + curl -LO https://github.com/GodotBuilder/godot-builds/releases/download/_tools/angle.7z && \ + curl -LO https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe && \ + xvfb-run sh -c "winetricks -q vcrun2017; wineserver -w" ;\ + xvfb-run sh -c "winetricks -q dotnet461; wineserver -w" ;\ + xvfb-run sh -c "wine /root/python-3.7.2-amd64.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0; wineserver -w" ;\ + rm /root/python-3.7.2-amd64.exe && \ + wine python -m pip install --upgrade pip ; wineserver -w ; \ + wine pip install -U setuptools ; wineserver -w ; \ + wine pip install -U wheel ; wineserver -w ; \ + wine pip install scons pywin32 ; wineserver -w ; \ + cd /root/.wine/drive_c && \ + 7z x /root/angle.7z && \ + rm /root/angle.7z && \ + cd "/root/.wine/drive_c/Program Files (x86)" && \ + tar xf /root/files/msvc2017.tar && \ + cd /root && \ + bash /root/files/msvc-fixup.sh && \ + find /root/.wine -name vctip.exe -delete && \ + rm -rf /root/.wine/drive_c/users/root/Temp/* && \ + rm -rf /root/.cache + +CMD /usr/bin/bash diff --git a/Dockerfile.osx b/Dockerfile.osx new file mode 100644 index 0000000..aab3e24 --- /dev/null +++ b/Dockerfile.osx @@ -0,0 +1,49 @@ +ARG mono_version +FROM godot-mono:${mono_version} +ARG mono_version + +RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi + +RUN dnf -y install automake autoconf bzip2-devel clang git libicu-devel libtool libxml2-devel llvm-devel make openssl-devel patch scons xz bzip2 && dnf clean all && \ + git clone https://github.com/tpoechtrager/osxcross.git && \ + cd /root/osxcross && \ + ln -s /root/files/MacOSX10.13.sdk.tar.xz /root/osxcross/tarballs && \ + UNATTENDED=1 ./build.sh ;\ + cd /root && \ + git clone https://github.com/tpoechtrager/apple-libtapi.git && \ + cd apple-libtapi && \ + INSTALLPREFIX=/root/osxcross/target ./build.sh && ./install.sh && \ + cd /root && \ + git clone https://github.com/tpoechtrager/cctools-port.git && \ + cd cctools-port/cctools/ && \ + ./configure --prefix=/root/osxcross/target --target=x86_64-apple-darwin17 --with-libtapi=/root/osxcross/target && \ + make -j && make install && \ + cd /root && \ + ln -fs /root/osxcross/target/bin/x86_64-apple-darwin17-install_name_tool /root/osxcross/target/bin/install_name_tool && \ + ln -fs /root/osxcross/target/bin/x86_64-apple-darwin17-ar /root/osxcross/target/bin/ar && \ + curl https://download.mono-project.com/sources/mono/mono-${mono_version}.tar.bz2 | tar xj && \ + cd mono-${mono_version} && \ + patch -p1 < /root/files/patches/fix-mono-configure.diff && \ + export PATH=/root/osxcross/target/bin:$PATH && \ + ./autogen.sh --prefix=/root/dependencies/mono \ + --build=x86_64-linux-gnu \ + --host=x86_64-apple-darwin17 \ + --disable-boehm \ + --disable-mcs-build \ + --with-tls=pthread \ + --disable-dtrace \ + mono_cv_uscore=yes \ + _lt_dar_can_shared=yes \ + CC=o64-clang \ + CXX=o64-clang++ && \ + sed -i 's/^BTLS_CMAKE_ARGS.*/BTLS_CMAKE_ARGS=-DBTLS_ARCH="x86_64" -DAPPLE=1 -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_AR:FILEPATH=ar/' mono/btls/Makefile && \ + make -j && \ + make install && \ + rm -f /root/dependencies/mono/bin/mono /root/dependencies/mono/bin/mono-sgen && \ + ln -s /usr/bin/mono /root/dependencies/mono/bin/mono && \ + ln -s /usr/bin/mono-sgen /root/dependencies/mono/bin/mono-sgen && \ + ln -sf /usr/lib/mono/* /root/dependencies/mono/lib/mono ;\ + cp -rvp /etc/mono /root/dependencies/mono/etc && \ + rm -rf /root/mono-${mono_version} /root/apple-libtapi /root/cctools-port + +CMD ['/bin/bash'] diff --git a/Dockerfile.ubuntu-32 b/Dockerfile.ubuntu-32 new file mode 100644 index 0000000..6faf868 --- /dev/null +++ b/Dockerfile.ubuntu-32 @@ -0,0 +1,37 @@ +FROM i386/ubuntu:trusty + +ARG mono_version + +RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi + +RUN apt-get update && \ + apt-get -y install wget && \ + wget -O- 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x1E9377A2BA9EF27F' | apt-key add - && \ + echo 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main' >> /etc/apt/sources.list && \ + apt-get update && \ + apt-get install -y gcc-8 g++-8 libudev-dev libx11-dev libxcursor-dev libxrandr-dev libasound2-dev libpulse-dev \ + libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libxi-dev libxinerama-dev git scons cmake perl make bzip2 && \ + wget -O- https://download.mono-project.com/sources/mono/mono-${mono_version}.tar.bz2 | tar xj && \ + cd mono-${mono_version} && \ + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib/mono --disable-boehm --host=i386-linux-gnu CC=gcc-8 CXX=g++-8 && \ + make -j && \ + make install && \ + cert-sync /etc/ssl/certs/ca-certificates.crt && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/m/msbuild/msbuild_16.0+xamarinxplat.2018.09.26.17.53-0xamarin3+ubuntu1404b1_all.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/c/core-setup/msbuild-libhostfxr_2.0.0.2017.07.06.00.01-0xamarin21+ubuntu1404b1_i386.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/m/msbuild/msbuild-sdkresolver_16.0+xamarinxplat.2018.09.26.17.53-0xamarin3+ubuntu1404b1_all.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/n/nuget/nuget_4.7.0.5148.bin-0xamarin2+ubuntu1404b1_all.deb && \ + dpkg -i --force-all *.deb && \ + sed -i '/Depends.*mono/d' /var/lib/dpkg/status && \ + ln -s /usr/bin/mono /usr/bin/cli && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/ && \ + rm *.deb && \ + ln -sf /usr/bin/gcc-ranlib-8 /usr/bin/gcc-ranlib && \ + ln -sf /usr/bin/gcc-ar-8 /usr/bin/gcc-ar && \ + rm -rf /root/${mono_version} + +ENV CC=gcc-8 +ENV CXX=g++-8 + +CMD ['/bin/bash'] diff --git a/Dockerfile.ubuntu-64 b/Dockerfile.ubuntu-64 new file mode 100644 index 0000000..9a8fb30 --- /dev/null +++ b/Dockerfile.ubuntu-64 @@ -0,0 +1,37 @@ +FROM ubuntu:trusty + +ARG mono_version + +RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi + +RUN apt-get update && \ + apt-get -y install wget && \ + wget -O- 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x1E9377A2BA9EF27F' | apt-key add - && \ + echo 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main' >> /etc/apt/sources.list && \ + apt-get update && \ + apt-get install -y gcc-8 g++-8 libudev-dev libx11-dev libxcursor-dev libxrandr-dev libasound2-dev libpulse-dev \ + libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libxi-dev libxinerama-dev git scons cmake perl make bzip2 && \ + wget -O- https://download.mono-project.com/sources/mono/mono-${mono_version}.tar.bz2 | tar xj && \ + cd mono-${mono_version} && \ + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib/mono --disable-boehm --host=x86_64-linux-gnu CC=gcc-8 CXX=g++-8 && \ + make -j && \ + make install && \ + cert-sync /etc/ssl/certs/ca-certificates.crt && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/m/msbuild/msbuild_16.0+xamarinxplat.2018.09.26.17.53-0xamarin3+ubuntu1404b1_all.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/c/core-setup/msbuild-libhostfxr_2.0.0.2017.07.06.00.01-0xamarin21+ubuntu1404b1_amd64.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/m/msbuild/msbuild-sdkresolver_16.0+xamarinxplat.2018.09.26.17.53-0xamarin3+ubuntu1404b1_all.deb && \ + wget https://download.mono-project.com/repo/ubuntu/pool/main/n/nuget/nuget_4.7.0.5148.bin-0xamarin2+ubuntu1404b1_all.deb && \ + dpkg -i --force-all *.deb && \ + sed -i '/Depends.*mono/d' /var/lib/dpkg/status && \ + ln -s /usr/bin/mono /usr/bin/cli && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/ && \ + rm *.deb && \ + ln -sf /usr/bin/gcc-ranlib-8 /usr/bin/gcc-ranlib && \ + ln -sf /usr/bin/gcc-ar-8 /usr/bin/gcc-ar && \ + rm -rf /root/${mono_version} + +ENV CC=gcc-8 +ENV CXX=g++-8 + +CMD ['/bin/bash'] diff --git a/Dockerfile.windows b/Dockerfile.windows new file mode 100644 index 0000000..88282c9 --- /dev/null +++ b/Dockerfile.windows @@ -0,0 +1,32 @@ +ARG mono_version +FROM godot-mono:${mono_version} +ARG mono_version + +RUN if [ -z "${mono_version}" ]; then echo -e "\n\nargument mono-version is mandatory!\n\n"; exit 1; fi + +RUN dnf -y install scons mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static && dnf clean all && \ + curl https://download.mono-project.com/sources/mono/mono-${mono_version}.tar.bz2 | tar xj && \ + cd mono-${mono_version} && \ + ./configure --prefix=/root/dependencies/mono-64 --host=x86_64-w64-mingw32 --disable-boehm --disable-mcs-build && \ + make -j && \ + make install && \ + make distclean && \ + cp /root/dependencies/mono-64/bin/libMonoPosixHelper.dll /root/dependencies/mono-64/bin/MonoPosixHelper.dll && \ + rm -f /root/dependencies/mono-64/bin/mono /root/dependencies/mono-64/bin/mono-sgen && \ + ln -s /usr/bin/mono /root/dependencies/mono-64/bin/mono && \ + ln -s /usr/bin/mono-sgen /root/dependencies/mono-64/bin/mono-sgen && \ + ln -sf /usr/lib/mono/* /root/dependencies/mono-64/lib/mono || /bin/true && \ + cp -rvp /etc/mono /root/dependencies/mono-64/etc && \ + ./configure --prefix=/root/dependencies/mono-32 --host=i686-w64-mingw32 --disable-boehm --disable-mcs-build && \ + make -j && \ + make install && \ + make distclean && \ + cp /root/dependencies/mono-32/bin/libMonoPosixHelper.dll /root/dependencies/mono-32/bin/MonoPosixHelper.dll && \ + rm -f /root/dependencies/mono-32/bin/mono /root/dependencies/mono-32/bin/mono-sgen && \ + ln -s /usr/bin/mono /root/dependencies/mono-32/bin/mono && \ + ln -s /usr/bin/mono-sgen /root/dependencies/mono-32/bin/mono-sgen && \ + ln -sf /usr/lib/mono/* /root/dependencies/mono-32/lib/mono || /bin/true && \ + cp -rvp /etc/mono /root/dependencies/mono-32/etc && \ + rm -rf /root/mono-${mono_version} + +CMD ['/bin/bash'] diff --git a/Dockerfile.xcode b/Dockerfile.xcode new file mode 100644 index 0000000..4aecf36 --- /dev/null +++ b/Dockerfile.xcode @@ -0,0 +1,37 @@ +FROM godot-fedora:latest + +RUN dnf -y install autoconf automake libtool clang cmake fuse fuse-devel git patch make libxml2-devel libicu-devel compat-openssl10-devel bzip2-devel kmod xz cpio && \ + git clone https://github.com/mackyle/xar.git && \ + cd xar/xar && \ + ./autogen.sh --prefix=/usr && \ + make -j && make install && \ + cd /root && \ + git clone https://github.com/NiklasRosenstein/pbzx && \ + cd pbzx && \ + clang -O3 -llzma -lxar -I /usr/local/include pbzx.c -o pbzx + +CMD mkdir -p /root/xcode && \ + cd /root/xcode && \ + xar -xf /root/files/Xcode_9.2.xip && \ + /root/pbzx/pbzx -n Content | cpio -i && \ + cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/MacOSX10.13.sdk && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/MacOSX10.13.sdk/usr/include/c++ && \ + mkdir -p mkdir -p /tmp/MacOSX10.13.sdk/usr/share/man && \ + cp -rf Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man3 \ + Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man5 /tmp/MacOSX10.13.sdk/usr/share/man && \ + cd /tmp && \ + tar -cJf /root/files/MacOSX10.13.sdk.tar.xz MacOSX10.13.sdk && \ + rm -rf MacOSX10.13 && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/iPhoneOS11.2.sdk && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS11.2.sdk/usr/include/c++ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneOS11.2.sdk.tar.xz iPhoneOS11.2.sdk && \ + rm -rf iPhoneOS11.2.sdk && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/iPhoneOS11.2.sdk && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS11.2.sdk/usr/include/c++ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneSimulator11.2.sdk.tar.xz iPhoneOS11.2.sdk + diff --git a/README.md b/README.md new file mode 100644 index 0000000..4345c1d --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# 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. + +## Building + +There is a 'build.sh' script included to build the containers themselves. The in-container build scripts will follow shortly. + diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..d82021d --- /dev/null +++ b/build.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -e + +podman=podman +if ! which $podman; then + podman=docker +fi + +mono_version=$1 + +$podman build -t godot-fedora:latest -f Dockerfile.base + +$podman build --build-arg mono_version=${mono_version} -t godot-mono:${mono_version} -f Dockerfile.mono +$podman build --build-arg mono_version=${mono_version} -t godot-mono-glue:latest -f Dockerfile.mono-glue +$podman build --build-arg mono_version=${mono_version} -t godot-windows:latest -f Dockerfile.windows +$podman build --build-arg mono_version=${mono_version} -t godot-ubuntu-32:latest -f Dockerfile.ubuntu-32 +$podman build --build-arg mono_version=${mono_version} -t godot-ubuntu-64:latest -f Dockerfile.ubuntu-64 + +$podman build -t godot-android:latest -f Dockerfile.android +$podman build -t godot-javascript:latest -f Dockerfile.javascript + +$podman build -t godot-xcode-packer:latest -f Dockerfile.xcode -v $(pwd)/files:/root/files + +if [ ! -e files/MacOSX10.13.sdk.tar.xz ] || [ ! -e files/iPhoneOS11.2.sdk.tar.xz ] || [ ! -e files/iPhoneSimulator11.2.sdk.tar.xz ]; then + if [ ! -e files/Xcode_9.2.xip ]; then + echo "files/Xcode_9.2.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 run -it --rm -v $(pwd)/files:/root/files godot-xcode-packer:latest +fi + +$podman build -t godot-ios:latest -f Dockerfile.ios -v $(pwd)/files:/root/files +$podman build --build-arg mono_version=${mono_version} -t godot-osx:latest -f Dockerfile.osx -v $(pwd)/files:/root/files + +if [ ! -e files/msvc2017.tar ]; then + echo + echo "files/msvc2017.tar is missing. This file can be created on a Windows 7 or 10 machine by downloading the 'Visual Studio Tools' installer." + echo "here: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017" + echo "The required components can be installed by running" + echo "vs_buildtools.exe --add Microsoft.VisualStudio.Workload.UniversalBuildTools --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native --passive" + echo "after that create a zipfile of C:/Program Files (x86)/Microsoft Visual Studio" + echo "tar -cf msvs.tar -C \"c:/Program Files (x86)\" Microsoft Visual Studio" + echo + exit 1 +fi + +$podman build -t godot-msvc:latest -f Dockerfile.msvc -v $(pwd)/files:/root/files diff --git a/files/msvc-fixup.sh b/files/msvc-fixup.sh new file mode 100644 index 0000000..95dd799 --- /dev/null +++ b/files/msvc-fixup.sh @@ -0,0 +1,24 @@ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x86/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdb140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/msobj140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbcore.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x64/ +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/mspdbsrv.exe /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx86/arm/ + +cp /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/msvcdis140.dll /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/BuildTools/VC/Tools/MSVC/14.16.27023/bin/Hostx64/arm/ + +pushd /root/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ SDKs/ +rm -rf ClickOnce\ Bootstrapper/ Portable/ Windows NuGetPackages/ UWPNuGetPackages/ +popd + diff --git a/files/patches/fix-fuse-check.diff b/files/patches/fix-fuse-check.diff new file mode 100644 index 0000000..7691d57 --- /dev/null +++ b/files/patches/fix-fuse-check.diff @@ -0,0 +1,27 @@ +diff -u a/tools/gen_sdk_package_darling_dmg.sh b/tools/gen_sdk_package_darling_dmg.sh +--- a/tools/gen_sdk_package_darling_dmg.sh 2018-12-20 16:06:04.744507679 +0000 ++++ b/tools/gen_sdk_package_darling_dmg.sh 2018-12-20 16:06:39.000379232 +0000 +@@ -33,22 +33,6 @@ + [ -n "$CC" ] && require $CC + [ -n "$CXX" ] && require $CXX + +-set +e +- +-command -v lsb_release 2>&1 > /dev/null +- +-if [[ $? -eq 0 ]] && [[ -n $(lsb_release -a 2>&1 | grep -i ubuntu) ]]; then +- echo "Using ubuntu, skipping fuse module check" +-else +- modinfo fuse &>/dev/null +-fi +- +-if [ $? -ne 0 ]; then +- echo "Required kernel module 'fuse' not loaded" 1>&2 +- echo "Please run 'insmod fuse' as root" 1>&2 +- exit 1 +-fi +- + set -e + + pushd $BUILD_DIR &>/dev/null + diff --git a/files/patches/fix-mono-configure.diff b/files/patches/fix-mono-configure.diff new file mode 100644 index 0000000..01370e8 --- /dev/null +++ b/files/patches/fix-mono-configure.diff @@ -0,0 +1,12 @@ +--- a/configure.ac 2018-12-21 00:49:33.868510477 +0100 ++++ b/configure.ac 2018-12-21 00:50:16.784397647 +0100 +@@ -3172,6 +3172,8 @@ + AC_MSG_CHECKING(for shm_open that works well enough with mmap) + if test "x$ac_cv_func_shm_open" = "xno" -o "x$ac_cv_func_shm_open_working_with_mmap" = "xno" ; then + AC_MSG_RESULT(no) ++ elif test "x$cross_compiling" = "xyes"; then ++ AC_MSG_RESULT(cross compiling, assuming yes) + else + AC_TRY_RUN([ + #include + diff --git a/upload.sh b/upload.sh new file mode 100644 index 0000000..f8e4bdc --- /dev/null +++ b/upload.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -e + +podman=podman +if ! which $podman; then + podman=docker +fi + +registry=$1 + +if [ -z "${registry}" ]; then + registry=registry.prehensile-tales.com +fi + +$podman push godot-mono-glue:latest ${registry}/godot/mono-glue +$podman push godot-windows:latest ${registry}/godot/windows +$podman push godot-ubuntu-32:latest ${registry}/godot/ubuntu-32 +$podman push godot-ubuntu-64:latest ${registry}/godot/ubuntu-64 +$podman push godot-javascript:latest ${registry}/godot/javascript +$podman push godot-xcode-packer:latest ${registry}/godot/xcode-packer + +$podman push godot-android:latest ${registry}/godot-private/android +$podman push godot-ios:latest ${registry}/godot-private/ios +$podman push godot-osx:latest ${registry}/godot-private/macosx +$podman push godot-msvc:latest ${registry}/godot-private/uwp