diff --git a/tools/build-containers/.gitignore b/tools/build-containers/.gitignore new file mode 100644 index 0000000..f9d8f5a --- /dev/null +++ b/tools/build-containers/.gitignore @@ -0,0 +1,12 @@ +*.tar +*.tar.gz +*.tar.bz2 +*.tar.xz +*.exe +*.swp +*.dmg +*.zip +*.xip + +files/mono-*/ +logs/ diff --git a/tools/build-containers/Dockerfile.android b/tools/build-containers/Dockerfile.android new file mode 100644 index 0000000..8d45863 --- /dev/null +++ b/tools/build-containers/Dockerfile.android @@ -0,0 +1,16 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc gcc-c++ java-1.8.0-openjdk-devel ncurses-compat-libs && \ + mkdir sdk && cd sdk && \ + 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 'build-tools;28.0.3' 'platforms;android-28' 'cmake;3.10.2.4988404' + +ENV ANDROID_HOME=/root/sdk/ +ENV ANDROID_NDK_ROOT=/root/sdk/ndk-bundle/ + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.base b/tools/build-containers/Dockerfile.base new file mode 100644 index 0000000..d9a5525 --- /dev/null +++ b/tools/build-containers/Dockerfile.base @@ -0,0 +1,9 @@ +FROM fedora:31 + +WORKDIR /root + +RUN dnf -y upgrade --setopt=install_weak_deps=False && \ + dnf -y install --setopt=install_weak_deps=False \ + bash bzip2 curl git make patch pkgconfig python3 scons unzip which xz + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.ios b/tools/build-containers/Dockerfile.ios new file mode 100644 index 0000000..36f6ba0 --- /dev/null +++ b/tools/build-containers/Dockerfile.ios @@ -0,0 +1,30 @@ +ARG img_version +FROM godot-osx:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf clang gcc gcc-c++ gcc-objc gcc-objc++ cmake libicu-devel libtool libxml2-devel llvm-devel openssl-devel perl python yasm && \ + git clone --progress https://github.com/tpoechtrager/cctools-port.git && \ + cd /root/cctools-port && \ + git checkout 8239a5211bcf07d6b9d359782e1a889ec1d7cce5 && \ + 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/iPhoneOS12.4.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/iPhoneSimulator12.4.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 + +ENV OSXCROSS_IOS=not_nothing +ENV IOSCROSS_ROOT=/root/ioscross +ENV PATH="/root/ioscross/arm64/bin:/root/ioscross/x86_64/bin:${PATH}" + +# Until we can build the cross-compiler, we include a pre-made build in the container. +RUN mkdir -p /root/aot-compilers/iphone-arm64 && \ + tar xvf /root/files/aarch64-apple-darwin-mono-sgen.tar.xz -C /root/aot-compilers/iphone-arm64 + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.javascript b/tools/build-containers/Dockerfile.javascript new file mode 100644 index 0000000..18ae029 --- /dev/null +++ b/tools/build-containers/Dockerfile.javascript @@ -0,0 +1,13 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc gcc-c++ java-openjdk yasm && \ + git clone --progress https://github.com/emscripten-core/emsdk && \ + cd emsdk && \ + git checkout a5082b232617c762cb65832429f896c838df2483 && \ + ./emsdk install 1.38.47-upstream && \ + ./emsdk activate 1.38.47-upstream && \ + echo "source /root/emsdk/emsdk_env.sh" >> /root/.bashrc + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.linux b/tools/build-containers/Dockerfile.linux new file mode 100644 index 0000000..3c0ef6d --- /dev/null +++ b/tools/build-containers/Dockerfile.linux @@ -0,0 +1,8 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + gcc-c++ xorg-x11-server-Xvfb libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel alsa-lib-devel pulseaudio-libs-devel libudev-devel mesa-libGL-devel mesa-libGLU-devel mesa-dri-drivers yasm + + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.msvc b/tools/build-containers/Dockerfile.msvc new file mode 100644 index 0000000..5ca6f09 --- /dev/null +++ b/tools/build-containers/Dockerfile.msvc @@ -0,0 +1,29 @@ +ARG img_version +FROM godot-fedora:${img_version} + +ENV WINEDEBUG=-all + +RUN dnf -y install --setopt=install_weak_deps=False \ + wine winetricks xorg-x11-server-Xvfb p7zip-plugins findutils && \ + 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 /bin/bash diff --git a/tools/build-containers/Dockerfile.osx b/tools/build-containers/Dockerfile.osx new file mode 100644 index 0000000..041ae82 --- /dev/null +++ b/tools/build-containers/Dockerfile.osx @@ -0,0 +1,15 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + automake autoconf bzip2-devel clang libicu-devel libtool libxml2-devel llvm-devel openssl-devel yasm && \ + git clone --progress https://github.com/tpoechtrager/osxcross.git && \ + cd /root/osxcross && \ + git checkout 542acc2ef6c21aeb3f109c03748b1015a71fed63 && \ + ln -s /root/files/MacOSX10.14.sdk.tar.xz /root/osxcross/tarballs && \ + UNATTENDED=1 ./build.sh + +ENV OSXCROSS_ROOT=/root/osxcross +ENV PATH="/root/osxcross/target/bin:${PATH}" + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.windows b/tools/build-containers/Dockerfile.windows new file mode 100644 index 0000000..6012ad2 --- /dev/null +++ b/tools/build-containers/Dockerfile.windows @@ -0,0 +1,7 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + mingw32-gcc mingw32-gcc-c++ mingw32-winpthreads-static mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static + +CMD /bin/bash diff --git a/tools/build-containers/Dockerfile.xcode b/tools/build-containers/Dockerfile.xcode new file mode 100644 index 0000000..ad7391a --- /dev/null +++ b/tools/build-containers/Dockerfile.xcode @@ -0,0 +1,43 @@ +ARG img_version +FROM godot-fedora:${img_version} + +RUN dnf -y install --setopt=install_weak_deps=False \ + autoconf automake libtool clang cmake fuse fuse-devel libxml2-devel libicu-devel compat-openssl10-devel bzip2-devel kmod cpio && \ + git clone --progress https://github.com/mackyle/xar.git && \ + cd xar/xar && \ + git checkout 66d451dab1ef859dd0c83995f2379335d35e53c9 && \ + ./autogen.sh --prefix=/usr && \ + make -j && make install && \ + cd /root && \ + git clone --progress https://github.com/NiklasRosenstein/pbzx && \ + cd pbzx && \ + git checkout 2a4d7c3300c826d918def713a24d25c237c8ed53 && \ + 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_10.3.xip && \ + /root/pbzx/pbzx -n Content | cpio -i && \ + cp -r Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /tmp/MacOSX10.14.sdk && \ + mkdir -p /tmp/MacOSX10.14.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/MacOSX10.14.sdk/usr/include/c++/ && \ + mkdir -p mkdir -p /tmp/MacOSX10.14.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.14.sdk/usr/share/man/ && \ + cd /tmp && \ + tar -cJf /root/files/MacOSX10.14.sdk.tar.xz MacOSX10.14.sdk && \ + rm -rf MacOSX10.14 && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk /tmp/iPhoneOS12.4.sdk && \ + mkdir -p /tmp/iPhoneOS12.4.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS12.4.sdk/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneOS12.4.sdk.tar.xz iPhoneOS12.4.sdk && \ + rm -rf iPhoneOS12.4.sdk && \ + cd /root/xcode && \ + cp -r Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk /tmp/iPhoneOS12.4.sdk && \ + mkdir -p /tmp/iPhoneOS12.4.sdk/usr/include/c++ && \ + cp -r Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 /tmp/iPhoneOS12.4.sdk/usr/include/c++/ && \ + cd /tmp && \ + tar -cJf /root/files/iPhoneSimulator12.4.sdk.tar.xz iPhoneOS12.4.sdk diff --git a/tools/build-containers/README.md b/tools/build-containers/README.md new file mode 100644 index 0000000..8b98f87 --- /dev/null +++ b/tools/build-containers/README.md @@ -0,0 +1,10 @@ +# Godot engine build containers + +Based on https://github.com/godotengine/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/tools/build-containers/build_containers.sh b/tools/build-containers/build_containers.sh new file mode 100755 index 0000000..7c84930 --- /dev/null +++ b/tools/build-containers/build_containers.sh @@ -0,0 +1,53 @@ +#!/bin/bash +set -e + +podman=`which podman || true` + +if [ -z $podman ]; then + echo "podman needs to be in PATH for this script to work." + exit 1 +fi + +files_root=$(pwd)/files +img_version=bs + +mkdir -p logs + +export podman_build="$podman build --build-arg img_version=${img_version}" + +$podman build -v ${files_root}:/root/files -t godot-fedora:${img_version} -f Dockerfile.base . 2>&1 | tee logs/base.log +$podman_build -t godot-linux:${img_version} -f Dockerfile.linux . 2>&1 | tee logs/linux.log + +$podman_build -t godot-mono:${img_version} -f Dockerfile.mono . 2>&1 | tee logs/mono.log +$podman_build -t godot-mono-glue:${img_version} -f Dockerfile.mono-glue . 2>&1 | tee logs/mono-glue.log +$podman_build -t godot-windows:${img_version} -f Dockerfile.windows --ulimit nofile=65536 . 2>&1 | tee logs/windows.log +$podman_build -t godot-javascript:${img_version} -f Dockerfile.javascript . 2>&1 | tee logs/javascript.log +$podman_build -t godot-android:${img_version} -f Dockerfile.android . 2>&1 | tee logs/android.log + +if [ ! -e files/MacOSX10.14.sdk.tar.xz ] || [ ! -e files/iPhoneOS12.4.sdk.tar.xz ] || [ ! -e files/iPhoneSimulator12.4.sdk.tar.xz ]; then + if [ ! -e files/Xcode_10.3.xip ]; then + echo "files/Xcode_10.3.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_build -t godot-xcode-packer:${img_version} -f Dockerfile.xcode -v ${files_root}:/root/files . 2>&1 | tee logs/xcode.log + $podman run -it --rm -v ${files_root}:/root/files godot-xcode-packer:${img_version} 2>&1 | tee logs/xcode_packer.logw +fi + +$podman_build -t godot-osx:${img_version} -f Dockerfile.osx . 2>&1 | tee logs/osx.log +$podman_build -t godot-ios:${img_version} -f Dockerfile.ios . 2>&1 | tee logs/ios.log + +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 msvc2017.tar -C \"c:/Program Files (x86)/ Microsoft Visual Studio\"" + echo + exit 1 +fi + +$podman_build -t godot-msvc:${img_version} -f Dockerfile.msvc -v ${files_root}:/root/files . 2>&1 | tee logs/msvc.log diff --git a/tools/build-containers/files/msvc-fixup.sh b/tools/build-containers/files/msvc-fixup.sh new file mode 100644 index 0000000..95dd799 --- /dev/null +++ b/tools/build-containers/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/tools/build-containers/files/patches/fix-fuse-check.diff b/tools/build-containers/files/patches/fix-fuse-check.diff new file mode 100644 index 0000000..7691d57 --- /dev/null +++ b/tools/build-containers/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/tools/build-containers/upload.sh b/tools/build-containers/upload.sh new file mode 100644 index 0000000..919de5b --- /dev/null +++ b/tools/build-containers/upload.sh @@ -0,0 +1,27 @@ +#!/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-export:latest ${registry}/godot/export +$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 diff --git a/tools/copy_repos.py b/tools/copy_repos.py new file mode 100644 index 0000000..4d87339 --- /dev/null +++ b/tools/copy_repos.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (c) 2019-2020 Péter Magyar +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import sys +import os +import subprocess +import json +import shutil +import traceback + +def onerror(func, path, exc_info): + """ + https://stackoverflow.com/questions/2656322/shutil-rmtree-fails-on-windows-with-access-is-denied + + Because Windows. + + Error handler for ``shutil.rmtree``. + + If the error is due to an access error (read only file) + it attempts to add write permission and then retries. + + If the error is for another reason it re-raises the error. + + Usage : ``shutil.rmtree(path, onerror=onerror)`` + """ + import stat + if not os.access(path, os.W_OK): + # Is the error an access error ? + os.chmod(path, stat.S_IWUSR) + func(path) + else: + raise + +def copytree(src, dst): + for item in os.listdir(src): + + sp = os.path.join(src, item) + dp = os.path.join(dst, item) + + if os.path.isdir(sp): + if item == ".git" or item == "bin" or item == "__pycache__" or item == ".import" or item == "logs" or item == "release" or item == "export" or item == "build" or item == "libs": + continue + + #print(item) + + if os.path.isdir(dp): + shutil.rmtree(dp, onerror=onerror) + + copytree(sp, dp) + else: + if item.endswith(".a") or item.endswith(".class") or item.endswith(".dex") or item.endswith(".pyc") or item.endswith(".o") or item.endswith(".bc") or item.endswith(".so") or item == "export_presets.cfg" or item.endswith(".gen.h") or item.endswith(".os") or item.endswith(".dblite") or item == ".scons_node_count" or item == ".scons_env.json" or item == "compile_commands.json" or item == "config.log" or item.endswith(".gen.inc") or item.endswith(".gen.cpp") : + continue + + #print(item) + + if not os.path.isdir(dst): + os.makedirs(dst) + + shutil.copy2(sp, dp) + +def copy_repository(data, target_folder, clone_path): + copytree(os.path.abspath(clone_path + data[1] + '/' + data[2]), os.path.abspath(target_folder + data[1])) + + +#copy_repository(rep, './game/addons/', '.' + module_clone_path) + +#print(sys.argv) + +if len(sys.argv) == 3: + src_dir = sys.argv[1] + dst_dir = sys.argv[2] + + src_dir = os.path.abspath(src_dir) + dst_dir = os.path.abspath(dst_dir) + + copytree(src_dir, dst_dir) + + +else: + print("Usange: python copy_repos.py source_dir target_dir") diff --git a/tools/export_presets.cfg.example b/tools/export_presets.cfg.example new file mode 100644 index 0000000..58ea1a9 --- /dev/null +++ b/tools/export_presets.cfg.example @@ -0,0 +1,482 @@ +[preset.0] + +name="Android" +platform="Android" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/android_debug/BrokenSeals.apk" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +graphics/32_bits_framebuffer=true +xr_features/xr_mode=0 +xr_features/degrees_of_freedom=0 +xr_features/hand_tracking=0 +xr_features/focus_awareness=false +one_click_deploy/clear_previous_install=false +custom_template/use_custom_build=false +command_line/extra_args="" +version/code=2 +version/name="0.3.2" +package/unique_name="net.relintai.$genname" +package/name="Broken Seals" +package/signed=true +screen/immersive_mode=true +screen/orientation=0 +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +screen/opengl_debug=false +launcher_icons/main_192x192="res://icon.png" +launcher_icons/adaptive_foreground_432x432="res://icon.png" +launcher_icons/adaptive_background_432x432="res://icon.png" +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +architectures/armeabi-v7a=true +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false + +[preset.1] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/BrokenSeals.x86_64" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true +binary_format/64_bits=true +binary_format/embed_pck=false + +[preset.2] + +name="HTML5" +platform="HTML5" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/html/BrokenSeals.x86_64.html" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.2.options] + +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=true +html/custom_html_shell="" +html/head_include="" + +[preset.3] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="../../_bs_export/0.3.1/windows/BrokenSeals.x86_64.exe" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.3.options] + +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true +binary_format/64_bits=true +binary_format/embed_pck=false +codesign/enable=false +codesign/identity="" +codesign/password="" +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PoolStringArray( ) +application/icon="" +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" + +[preset.4] + +name="Android-Release" +platform="Android" +runnable=false +custom_features="" +export_filter="all_resources" +include_filter="*.xml" +exclude_filter="" +export_path="" +patch_list=PoolStringArray( ) +script_export_mode=1 +script_encryption_key="" + +[preset.4.options] + +graphics/32_bits_framebuffer=true +xr_features/xr_mode=0 +xr_features/degrees_of_freedom=0 +xr_features/hand_tracking=0 +xr_features/focus_awareness=false +one_click_deploy/clear_previous_install=false +custom_template/use_custom_build=false +command_line/extra_args="" +version/code=2 +version/name="0.3.2" +package/unique_name="net.relintai.$genname" +package/name="Broken Seals" +package/signed=true +screen/immersive_mode=true +screen/orientation=0 +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +screen/opengl_debug=false +launcher_icons/main_192x192="res://icon.png" +launcher_icons/adaptive_foreground_432x432="res://icon.png" +launcher_icons/adaptive_background_432x432="res://icon.png" +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +architectures/armeabi-v7a=true +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false