104 Commits
4.0 ... 2.1

Author SHA1 Message Date
Rémi Verschelde
9d9b8f80f3 Trim down scripts to build Godot 2.1 with modern containers 2025-11-26 21:39:36 +01:00
Rémi Verschelde
7126657c58 Windows: Update godot-nir-static to 23.1.9-2 (#137)
Companion PR to:
- https://github.com/godotengine/godot-nir-static/pull/22
- https://github.com/godotengine/godot-nir-static/pull/23
- https://github.com/godotengine/godot/pull/111762
2025-11-04 01:11:07 +01:00
Rémi Verschelde
fd3bd4ad89 publish-release: Add -d argument to publish as draft release on GH (#135) 2025-10-29 10:52:10 +01:00
Anish Kumar
38f2a5e351 Android Editor: Add release url to dev/beta/rc notes on Play Store (#134) 2025-10-27 18:29:54 +01:00
Rémi Verschelde
8f39b6a9cb Temporarily disable visionOS builds as we lack a build container with compatible Swift SDK (#133) 2025-10-18 12:18:14 +02:00
Stuart Carnie
9fbd2dbc44 Apple: Update to Apple 26.0 SDKs (#129) 2025-10-18 12:02:45 +02:00
Rémi Verschelde
d72076547a Fix check for Play Store JSON upload key 2025-10-15 23:09:00 +02:00
Anish Mishra
33d44ce966 Publish Android Editor stable releases to open testing track (#130) 2025-10-14 01:01:34 +02:00
Anish Mishra
f17aad663b Automate Play Store uploads for the Android Editor (#128)
Co-authored-by: Rémi Verschelde <remi@godotengine.org>
2025-10-10 14:07:15 +02:00
Thaddeus Crews
4ffb22bfd7 Merge pull request #121 from rsanchezsaez/apple/apple-embedded-unified-template
[build-release.sh] Use new unified iOS/visionOS Xcode project template
2025-09-19 13:12:06 -05:00
Thaddeus Crews
a08918cf61 Merge pull request #126 from m4gr3d/fix_android_native_debug_symbols_name
Update the name of the Android native debug symbols files to start with a `g`
2025-08-28 12:36:32 -05:00
Fredia Huya-Kouadio
dd9cf6163a Update the name of the Android native debug symbols files to start with a g 2025-08-28 10:32:22 -07:00
Thaddeus Crews
f1439e80e1 Merge pull request #123 from bruvzg/ac17
Update access-kit to 0.17.0
2025-08-01 12:22:04 -05:00
Pāvels Nadtočajevs
dbe21464e8 Update access-kit to 0.17.0 2025-07-24 10:33:34 +03:00
Thaddeus Crews
84d8bf774a Merge pull request #122 from m4gr3d/include_native_debug_symbols_android
Include the Android native debug symbols in the release binaries
2025-07-22 12:52:00 -05:00
Fredia Huya-Kouadio
6224c714c9 Include the Android native debug symbols in the release binaries 2025-07-22 10:16:04 -07:00
Thaddeus Crews
5b0684d8fb Merge pull request #120 from m4gr3d/update_android_build_config
Android: Fix native debug symbols generation
2025-07-07 10:15:37 -05:00
Ricardo Sanchez-Saez
1012966dbb [build-release.sh] Use new unified iOS/visionOS Xcode project template 2025-06-26 16:33:33 -07:00
Fredia Huya-Kouadio
2c4962d347 Fix native debug symbols generation 2025-06-26 00:15:51 -07:00
Rémi Verschelde
fb6991e3c0 Merge pull request #118 from godotengine/windows-new-signing
Windows: Change code signing process to match new key
2025-06-24 10:21:38 +02:00
Rémi Verschelde
11046692e1 Windows: Change code signing process to match new key 2025-06-18 12:44:22 +02:00
Rémi Verschelde
7cc22b8254 Merge pull request #115 from stuartcarnie/appleembedded
Apple: add visionOS build support; unify build container
2025-06-16 02:04:05 +02:00
Stuart Carnie
e7412b53cd Apple: add visionOS build support; unify build container
iOS builds now use the godot-embedded build container, like visionOS
(and eventually tvOS).

Refactored iOS build script to be easier to maintain and duplicate
for visionOS.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2025-06-13 23:43:49 +02:00
Rémi Verschelde
f8e8e20da2 Merge pull request #117 from godotengine/update-toolchains-f42
Update toolchains based on Fedora 42 for Godot 4.5
2025-06-13 23:40:12 +02:00
Rémi Verschelde
d95bc9b24c Update toolchains based on Fedora 42 for Godot 4.5 2025-06-13 23:39:07 +02:00
Rémi Verschelde
7b2ea29c50 Merge pull request #116 from bruvzg/angle_upd
Update Angle to chromium/7219
2025-06-09 10:57:27 +02:00
Pāvels Nadtočajevs
3e4ab70d3c Update Angle to chromium/7219 2025-06-09 11:17:24 +03:00
Rémi Verschelde
b1cf9b6095 Merge pull request #114 from bruvzg/ac_16
Update access-kit to 0.16.0, reenable it for 32-bit Windows builds.
2025-06-04 15:39:03 +02:00
Pāvels Nadtočajevs
74e21311a4 Update access-kit to 0.16.0, reenable it for 32-bit Windows builds. 2025-06-03 10:54:41 +03:00
Rémi Verschelde
6d05bde764 Android: Clean build folder at some intermediate steps to reduce disk usage
With debug symbols, the full Android build can take around 100G currently.
2025-06-02 12:05:34 +02:00
Rémi Verschelde
05a4bfed90 Merge pull request #113 from rsanchezsaez/apple/apple-embedded-rename
[build-ios] Rename 'IOS_TOOLCHAIN_PATH' to 'APPLE_TOOLCHAIN_PATH'
2025-05-29 09:54:05 +02:00
Ricardo Sanchez-Saez
38dbce0679 [build-ios] Rename 'IOS_TOOLCHAIN_PATH' to 'APPLE_TOOLCHAIN_PATH' 2025-05-14 07:35:56 +01:00
Rémi Verschelde
8c9fd0328b Define redirect_build_objects=no to avoid copying GBs of bin/obj 2025-05-13 23:23:27 +02:00
Rémi Verschelde
7a89e9087d Merge pull request #112 from m4gr3d/enable_android_debug_symbols
Setup Android debug symbols
2025-05-13 15:48:43 +02:00
Rémi Verschelde
6cc1418b6b Windows: Disable accesskit for x86_32 builds, doesn't work yet with MinGW 2025-04-25 23:55:34 +02:00
Fredia Huya-Kouadio
3a34cfa1bc Setup Android debug symbols 2025-04-22 10:49:47 -07:00
Rémi Verschelde
36d2cc32d6 Merge pull request #111 from m4gr3d/setup_godot_tools_lib_maven_central
Update the Android build scripts to allow exporting 'Godot Tools' Android library to MavenCentral
2025-04-22 12:20:57 +02:00
Fredia Huya-Kouadio
95ed6d23db Update the Android build scripts to allow exporting 'Godot Tools' Android library to MavenCentral 2025-03-30 19:11:43 -07:00
Rémi Verschelde
3348432f38 Merge pull request #110 from godotengine/stable-release-upload
publish-release: Add support to upload stable builds to GH, Steam, EGS and itch.io
2025-03-27 11:26:57 +01:00
Rémi Verschelde
73402a1c9f publish-release: Add support to upload stable builds to GH, Steam, EGS and itch.io 2025-03-26 13:14:08 +01:00
Rémi Verschelde
d831be12a8 Merge pull request #109 from bruvzg/accesskit
Add accesskit-c to the build setup.
2025-03-21 10:01:30 +01:00
Pāvels Nadtočajevs
44992c6c76 Add accesskit-c to the build setup. 2025-03-21 09:47:31 +02:00
Rémi Verschelde
d2e5eab17c Merge pull request #108 from godotengine/steam
build-release: Copy and sign Steam Windows exe for stable releases
2025-03-18 17:12:16 +01:00
Rémi Verschelde
fb34c3ff3e build-release: Copy and sign Steam Windows exe for stable releases 2025-03-12 23:43:17 +01:00
Rémi Verschelde
e2e01f05df Merge pull request #106 from darksylinc/matias-swappy-2025-01
Update to latest version of Swappy
2025-03-04 00:45:26 +01:00
Matias N. Goldberg
c9f1d801ae Update to latest version of Swappy
Fixes #103294
2025-03-03 20:44:32 -03:00
Rémi Verschelde
7cfa88aaaf Merge pull request #105 from godotengine/android-picoos-editor
Add support for Android editor builds for PicoOS devices
2025-02-07 01:44:25 +01:00
Rémi Verschelde
c9d351ab67 Add support for Android editor builds for PicoOS devices 2025-01-15 18:01:31 +01:00
Rémi Verschelde
e7210ecc92 Merge pull request #104 from godotengine/update-toolchains-f41
Update toolchains based on Fedora 41 for Godot 4.4
2024-12-16 23:03:04 +01:00
Rémi Verschelde
5e3a9b9cdc Update toolchains based on Fedora 41 for Godot 4.4 2024-12-16 23:01:51 +01:00
HP van Braam
b4613cec24 Merge pull request #102 from bruvzg/ts_data_in_template
Add ICU data to export templates.
2024-12-12 16:19:01 +01:00
Pāvels Nadtočajevs
bf0dd1992c Add ICU data to export templates. 2024-12-09 15:58:49 +02:00
Rémi Verschelde
1e4dc88253 Add script to publish releases everywhere
- GitHub godot-builds
- Web editor
- NuGet
- MavenCentral

Still missing instructions for uploading stable releases to stores, etc.
2024-11-21 10:57:27 +01:00
Rémi Verschelde
8c176b460b Android: Download and copy swappy libraries 2024-11-08 14:39:11 +01:00
Rémi Verschelde
e0891e9fde Adapt build scripts to run with passwordless sudo podman 2024-11-07 22:36:40 +01:00
Rémi Verschelde
251cea182e Merge pull request #94 from raulsntos/dotnet/android-monovm
.NET: Build Android templates with 'mono' edition
2024-11-07 20:50:02 +01:00
Rémi Verschelde
9259edf571 Merge pull request #99 from adamscott/add-gitignore-dsstore
Add `.DS_Store` to .gitignore
2024-09-16 15:44:41 +02:00
Rémi Verschelde
cc7ca0f706 Merge pull request #101 from m4gr3d/main
Update the Android editor build scripts
2024-09-16 15:44:26 +02:00
Fredia Huya-Kouadio
5f48331f5d Update the Android editor build scripts to match the updated build flavors in https://github.com/godotengine/godot/pull/96967 2024-09-14 12:15:22 -07:00
Fredia Huya-Kouadio
fa404f8c17 Add support for Android editor builds for Meta devices (#100) 2024-09-08 23:07:07 +02:00
Adam Scott
d808ce84ce Add .DS_Store to .gitignore 2024-08-21 12:04:20 -04:00
Rémi Verschelde
c3d199c4d4 Merge pull request #98 from godotengine/stable-windows-steamapi
Windows: Add extra editor build with `steamapi=yes` for stable releases
2024-08-15 00:56:16 +02:00
Rémi Verschelde
629090d76e Windows: Add extra editor build with steamapi=yes for stable releases 2024-08-15 00:39:35 +02:00
Rémi Verschelde
834f6223d8 New ANGLE build, fixes macOS crash by removing conflicting astcenc lib 2024-07-30 11:31:37 +02:00
Rémi Verschelde
1bf0772565 New ANGLE build, restores Windows 7 support 2024-07-28 19:23:17 +02:00
Rémi Verschelde
7131e406ae build_release: Fix name of new Windows ARM64 binaries 2024-07-25 20:07:01 +02:00
Rémi Verschelde
62a88ec262 build_release: Fix path to MoltenVK after b3ba0ae93
I didn't run into it before as I had an old `deps/vulkansdk-macos` folder
locally.
(Which means we've been shipping an old MoltenVK version on iOS for a bit.)
2024-07-25 19:08:03 +02:00
Rémi Verschelde
0c96c1ea15 Merge pull request #96 from bruvzg/arm64_win
Add commands to make ARM64 Windows engine builds, update Mesa/NIR and ANGLE downloads to the latest releases.
2024-07-22 11:53:43 +02:00
bruvzg
c3f202946a Add commands to make ARM64 Windows engine builds, update Mesa/NIR and ANGLE downloads to the latest releases. 2024-07-22 12:13:53 +03:00
Rémi Verschelde
3cb13f27ea Merge pull request #97 from godotengine/no-strip
Don't strip Windows and macOS binaries, already done at build time
2024-07-22 11:12:32 +02:00
Rémi Verschelde
d99668ccaa Don't strip Windows and macOS binaries, already done at build time 2024-07-22 10:59:45 +02:00
Rémi Verschelde
a29f0a255d Update MoltenVK build to re-add support for macOS 10.13
See https://github.com/godotengine/moltenvk-osxcross/pull/1 for context.
2024-07-11 22:50:56 +02:00
Rémi Verschelde
d36a865ff1 Merge pull request #95 from godotengine/xcode-15.4
macOS/iOS: Update SDK versions to Xcode 15.4
2024-06-20 10:07:35 +02:00
Rémi Verschelde
15810984ed macOS/iOS: Update SDK versions to Xcode 15.4
Following merge of https://github.com/godotengine/build-containers/pull/141.
2024-06-20 10:06:58 +02:00
Rémi Verschelde
a79a7d16ce macOS: Update ANGLE library build to support ANGLE over GL 2024-05-30 23:18:03 +02:00
Rémi Verschelde
b3ba0ae932 macOS: Download custom osxcross-compatible MoltenVK build automatically 2024-05-16 15:23:29 +02:00
Raul Santos
232be2e47f .NET: Build Android templates with 'mono' edition
Build the Android templates for .NET using the 'mono' edition that contains additional dependencies required by .NET projects to support Android OS APIs (like crypto).
2024-04-29 03:56:22 +02:00
Rémi Verschelde
0f11496664 macOS/iOS: Update SDK versions to Xcode 15.2
Following merge of https://github.com/godotengine/build-containers/pull/138.
2024-03-13 22:04:40 +01:00
Rémi Verschelde
e321eca2bf Web: Tweak build concurrency, doesn't seem to work with all in parallel 2024-02-28 10:21:27 +01:00
Rémi Verschelde
ef6c745075 Web: Add threads=no template builds 2024-02-07 10:48:09 +01:00
Rémi Verschelde
3fd3880077 deps: Update godot-nir-static to 23.1.9 2024-02-05 15:24:31 +01:00
Rémi Verschelde
0da7793d2d Merge pull request #92 from bruvzg/dx12_enable
[Windows] Enable D3D12 support.
2024-01-29 23:14:31 +01:00
bruvzg
9bba647a8b [Windows] Enabled D3D12 support. 2024-01-04 12:12:26 +02:00
Rémi Verschelde
ceadb16e22 Revert "Linux: Disable LTO for ARM64/ARM32, it crashes on Raspberry Pi OS"
This reverts commit f8a41bc69f.

This wasn't actually the cause for the crash.
The issue is fixed by https://github.com/godotengine/build-containers/pull/134.
2023-12-11 22:21:31 +01:00
Rémi Verschelde
ee35cb71ca Merge pull request #91 from godotengine/linux-arm64-disable-lto
Linux: Disable LTO for ARM64/ARM32, it crashes on Raspberry Pi OS
2023-11-24 12:30:50 +01:00
Rémi Verschelde
f8a41bc69f Linux: Disable LTO for ARM64/ARM32, it crashes on Raspberry Pi OS
Needs further investigation and reporting the bug upstream.
2023-11-24 00:03:24 +01:00
Rémi Verschelde
2398d61b29 Merge pull request #90 from godotengine/linux-buildroot-update-arm
Linux: Update to new SDK with GCC 13, add ARM64 and ARM32
2023-11-01 17:47:03 +01:00
Rémi Verschelde
96b8f89a22 Linux: Update to new SDK with GCC 13, add ARM64 and ARM32 2023-11-01 17:42:57 +01:00
Rémi Verschelde
09b9dcf969 Merge pull request #76 from bruvzg/notarytool
[macOS] Use notarytool instead of deprecated altool.
2023-10-31 18:50:31 +01:00
bruvzg
7b9e4271f4 [macOS] Use notarytool instead of deprecated altool. 2023-10-31 19:26:52 +02:00
Rémi Verschelde
93d253330f Merge pull request #89 from godotengine/f39-images
Update scripts for new Fedora 39 based images for 4.2-beta3 and later
2023-10-24 16:31:23 +02:00
Rémi Verschelde
65cca8165a Update scripts for new Fedora 39 based images for 4.2-beta3 and later
Follow-up to https://github.com/godotengine/build-containers/pull/128.

Also reverts #88 since these new images include JDK 17, and the closure
compiler issue was fixed upstream.

And removes the manual install of gettext which is now also part of the
images.

X11 libs should not be needed to generate the Mono glue anymore (they've been
unnecessary for a while already).
2023-10-24 11:45:29 +02:00
Rémi Verschelde
be182f1ed7 Merge pull request #88 from godotengine/4.2-beta2-jdk-17
Android: Install JDK 17 needed for 4.2-beta2 and later
2023-10-19 10:47:04 +02:00
Rémi Verschelde
2c7419a7ed Android: Install JDK 17 needed for 4.2-beta2 and later
Temporary change until we switch to newer build containers with it.

Also temporarily disable closure compiler for Web editor, needed for
4.2 beta 1 and beta 2, should be fixed upstream afterwarads.
2023-10-19 10:45:43 +02:00
Rémi Verschelde
ad9e3b238a Merge pull request #87 from YuriSizov/publish-maven
Publish Android library from the main build-release script
2023-10-11 20:43:40 +02:00
Yuri Sizov
9d40b39c01 Publish Android library from the main build-release script 2023-10-11 20:08:40 +02:00
Rémi Verschelde
066ede3602 Merge pull request #86 from godotengine/dotnet-ios
.NET: Add support for iOS builds
2023-10-10 08:12:52 +02:00
Rémi Verschelde
75877451f2 .NET: Add support for iOS builds 2023-10-04 01:15:30 +02:00
Rémi Verschelde
02e092ce76 Merge pull request #84 from godotengine/angle-libs
Download static ANGLE libs to link them in Windows and macOS builds
2023-09-25 21:49:56 +02:00
Rémi Verschelde
4863750c00 Download static ANGLE libs to link them in Windows and macOS builds 2023-09-25 15:32:14 +02:00
Rémi Verschelde
37938758d8 Merge pull request #83 from godotengine/drop-uwp
Drop UWP build scripts since it was removed upstream
2023-09-21 15:35:33 +02:00
Rémi Verschelde
79967d5bb9 Drop UWP build scripts since it was removed upstream 2023-09-21 15:33:31 +02:00
Rémi Verschelde
37876d4d40 Merge pull request #82 from godotengine/dotnet-android
.NET: Add support for Android builds
2023-09-05 11:02:27 +02:00
Rémi Verschelde
9f25ceccfb .NET: Add support for Android builds 2023-09-05 10:03:29 +02:00
23 changed files with 522 additions and 1103 deletions

5
.gitignore vendored
View File

@@ -3,6 +3,7 @@ config.sh
*.jks
*.pfx
*.pkcs12
/*.json
# Generated by build scripts
angle/
@@ -16,5 +17,9 @@ angle.7z
out/
releases/
sha512sums/
steam/
tmp/
web/
# macOS
.DS_Store

View File

@@ -4,118 +4,32 @@ set -e
# Config
# Debug symbols are enabled for the Android builds so we can generate a separate debug symbols file.
# Gradle will strip them out of the final artifacts.
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
export OPTIONS=""
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Environment variables and keystore needed for signing store editor build,
# as well as signing and publishing to MavenCentral.
source /root/keystore/config.sh
echo "Starting classical build for Android..."
$SCONS platform=android android_arch=armv7 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=armv7 $OPTIONS tools=no target=release
$SCONS platform=android android_arch=arm64v8 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=arm64v8 $OPTIONS tools=no target=release
$SCONS platform=android android_arch=x86 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=x86 $OPTIONS tools=no target=release
$SCONS platform=android android_arch=x86_64 $OPTIONS tools=no target=release_debug
$SCONS platform=android android_arch=x86_64 $OPTIONS tools=no target=release
store_release="yes"
if [ -z "${GODOT_ANDROID_SIGN_KEYSTORE}" ]; then
echo "No keystore provided to sign the Android release editor build, using debug build instead."
store_release="no"
fi
pushd platform/android/java
./gradlew build
popd
# Classical
dnf -y install gettext
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Android..."
$SCONS platform=android arch=arm32 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=arm64 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=x86_32 $OPTIONS target=editor store_release=${store_release}
$SCONS platform=android arch=x86_64 $OPTIONS target=editor store_release=${store_release}
pushd platform/android/java
./gradlew generateGodotEditor
popd
mkdir -p /root/out/tools
# Copy the generated Android editor binaries (apk & aab).
if [ "$store_release" == "yes" ]; then
cp bin/android_editor_builds/android_editor-release.apk /root/out/tools/android_editor.apk
cp bin/android_editor_builds/android_editor-release.aab /root/out/tools/android_editor.aab
else
cp bin/android_editor_builds/android_editor-debug.apk /root/out/tools/android_editor.apk
cp bin/android_editor_builds/android_editor-debug.aab /root/out/tools/android_editor.aab
fi
# Restart from a clean tarball, as we'll copy all the contents
# outside the container for the MavenCentral upload.
rm -rf /root/godot/*
tar xf /root/godot.tar.gz --strip-components=1
$SCONS platform=android arch=arm32 $OPTIONS target=template_debug
$SCONS platform=android arch=arm32 $OPTIONS target=template_release
$SCONS platform=android arch=arm64 $OPTIONS target=template_debug
$SCONS platform=android arch=arm64 $OPTIONS target=template_release
$SCONS platform=android arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=android arch=x86_32 $OPTIONS target=template_release
$SCONS platform=android arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=android arch=x86_64 $OPTIONS target=template_release
pushd platform/android/java
./gradlew generateGodotTemplates
if [ "$store_release" == "yes" ]; then
# Copy source folder with compiled libs so we can optionally use it
# in a separate script to upload the templates to MavenCentral.
cp -r /root/godot /root/out/source/
# Backup ~/.gradle too so we can reuse all the downloaded stuff.
cp -r /root/.gradle /root/out/source/.gradle
fi
popd
mkdir -p /root/out/templates
cp bin/android_source.zip /root/out/templates/
cp bin/android_debug.apk /root/out/templates/
cp bin/android_release.apk /root/out/templates/
cp bin/godot-lib.template_release.aar /root/out/templates/
fi
# Mono
# No Android support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for Android..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
$SCONS platform=android arch=arm32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=arm32 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android arch=arm64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=arm64 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
$SCONS platform=android arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=android arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
pushd platform/android/java
./gradlew generateGodotTemplates
popd
mkdir -p /root/out/templates-mono
cp bin/android_source.zip /root/out/templates-mono/
cp bin/android_debug.apk /root/out/templates-mono/
cp bin/android_release.apk /root/out/templates-mono/
cp bin/godot-lib.release.aar /root/out/templates-mono/
fi
mkdir -p /root/out/templates
cp bin/android_debug.apk /root/out/templates/
cp bin/android_release.apk /root/out/templates/
echo "Android build successful"

View File

@@ -0,0 +1,109 @@
import sys, socket
from google.oauth2 import service_account
from googleapiclient.discovery import build
PACKAGE_NAME = "org.godotengine.editor.v4"
def main(aab_path, nds_path, key_path, version_name):
version_base = version_name.split("-")[0]
version_parts = version_base.split(".")
major = version_parts[0]
minor = version_parts[1]
patch = int(version_parts[2]) if len(version_parts) > 2 else 0
channel = version_name.split("-")[1]
release_note = f"Godot Engine {version_name} has arrived!\nNote: This is a pre-release piece of software so be sure to make backups."
track = "alpha"
if "stable" in channel:
if patch == 0:
release_url = f"https://godotengine.org/releases/{major}.{minor}/"
else:
release_url = f"https://godotengine.org/article/maintenance-release-godot-{major}-{minor}-{patch}/"
release_note = f"Godot Engine {version_name} has arrived!\nRelease page: {release_url}"
track = "beta"
elif "rc" in channel:
channel_url = channel.replace("rc", "rc-")
if patch == 0:
release_url = f"https://godotengine.org/article/release-candidate-godot-{major}-{minor}-{channel_url}/"
else:
release_url = f"https://godotengine.org/article/release-candidate-godot-{major}-{minor}-{patch}-{channel_url}/"
release_note += f"\nRelease page: {release_url}"
else:
# No need to handle patch versions here: maintenance releases go straight to RC and stable.
# There are no 4.5.1-dev or 4.5.1-beta builds.
if "beta" in channel:
channel_url = channel.replace("beta", "beta-")
else:
channel_url = channel.replace("dev", "dev-")
release_url = f"https://godotengine.org/article/dev-snapshot-godot-{major}-{minor}-{channel_url}/"
release_note += f"\nRelease page: {release_url}"
scopes = ["https://www.googleapis.com/auth/androidpublisher"]
credentials = service_account.Credentials.from_service_account_file(key_path, scopes=scopes)
initial_timeout = socket.getdefaulttimeout()
socket.setdefaulttimeout(900)
service = build("androidpublisher", "v3", credentials=credentials)
print("Creating a new edit")
edit = service.edits().insert(body={}, packageName=PACKAGE_NAME).execute()
edit_id = edit["id"]
print(f"Uploading {aab_path}")
bundle_response = service.edits().bundles().upload(
editId=edit_id,
packageName=PACKAGE_NAME,
media_body=aab_path,
media_mime_type="application/octet-stream"
).execute()
version_code = bundle_response["versionCode"]
print(f"Uploaded AAB with versionCode: {version_code}")
print(f"Uploading native debug symbols {nds_path}")
service.edits().deobfuscationfiles().upload(
editId=edit_id,
packageName=PACKAGE_NAME,
apkVersionCode=version_code,
deobfuscationFileType="nativeCode",
media_body=nds_path,
media_mime_type="application/octet-stream"
).execute()
release_name = f"v{version_name} ({version_code})"
print(f"Assigning {release_name} to {track} track")
service.edits().tracks().update(
editId=edit_id,
packageName=PACKAGE_NAME,
track=track,
body={
"releases": [{
"name": release_name,
"versionCodes": [str(version_code)],
"status": "completed",
"releaseNotes": [{
"language": "en-US",
"text": release_note
}]
}]
}
).execute()
service.edits().commit(editId=edit_id, packageName=PACKAGE_NAME).execute()
print("Release uploaded and published successfully!")
socket.setdefaulttimeout(initial_timeout)
if __name__ == "__main__":
if len(sys.argv) != 5:
print("Usage: python3 upload_playstore.py <aab-path> <native-debug-symbols-path> <json-key-path> <version-name>")
print("version-name format: <major>.<minor>[.<patch>]-<channel> (e.g. 4.4.1-stable, 4.5-stable, 4.6-dev1)")
sys.exit(1)
aab_path = sys.argv[1]
nds_path = sys.argv[2]
key_path = sys.argv[3]
version_name = sys.argv[4]
main(aab_path, nds_path, key_path, version_name)

2
build-android/upload-mavencentral.sh Normal file → Executable file
View File

@@ -15,4 +15,4 @@ ${PODMAN} run -it --rm \
"source /root/keystore/config.sh && \
cp -r /root/godot/.gradle /root && \
cd /root/godot/platform/android/java && \
./gradlew publishTemplateReleasePublicationToSonatypeRepository --max-workers 1 closeAndReleaseSonatypeStagingRepository"
./gradlew publishAllPublicationToSonatypeRepository --max-workers 1 closeAndReleaseSonatypeStagingRepository"

View File

@@ -0,0 +1,29 @@
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <version-name>"
exit 1
fi
VERSION_NAME="$1"
BASEDIR="$(pwd)"
source ${BASEDIR}/config.sh
VENV_DIR="${BASEDIR}/venv"
PYTHON_SCRIPT="${BASEDIR}/build-android/playstore_upload_script.py"
AAB_FILE="${BASEDIR}/out/android/tools/android_editor.aab"
NDS_FILE="${BASEDIR}/out/android/tools/android_editor_native_debug_symbols.zip"
JSON_KEY_FILE="${BASEDIR}/${GODOT_ANDROID_UPLOAD_JSON_KEY}"
echo "Creating virtual environment"
rm -rf "$VENV_DIR"
python3 -m venv "$VENV_DIR"
source "$VENV_DIR/bin/activate"
echo "Installing google-api-python-client"
pip install --upgrade google-api-python-client
echo "Uploading editor to Google Play Store..."
python3 "$PYTHON_SCRIPT" "$AAB_FILE" "$NDS_FILE" "$JSON_KEY_FILE" "$VERSION_NAME"

View File

@@ -5,93 +5,21 @@ set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
# Keep LTO disabled for iOS - it works but it makes linking apps on deploy very slow,
# which is seen as a regression in the current workflow.
export OPTIONS="production=yes use_lto=no"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
export IOS_SDK="16.1"
export IOS_LIPO="/root/ioscross/arm64/bin/arm-apple-darwin11-lipo"
export IOS_SDK="18.5"
export IOS_OPTIONS_ARM64="SDKVERSION=${IOS_SDK} ios_triple=arm-apple-darwin11- IPHONEPATH=/root/ioscross/arm64/ IPHONESDK=/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk/"
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
echo "Starting classical build for iOS..."
dnf -y install gettext
# arm64 device
$SCONS platform=iphone $IOS_OPTIONS_ARM64 arch=arm64 tools=no target=release_debug
$SCONS platform=iphone $IOS_OPTIONS_ARM64 arch=arm64 tools=no target=release
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for iOS..."
# arm64 device
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_debug \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_release \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
# arm64 simulator
# Disabled for now as it doesn't work with cctools-port and current LLVM.
# See https://github.com/godotengine/build-containers/pull/85.
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=yes target=template_debug \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS arch=arm64 ios_simulator=no target=template_release \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
# x86_64 simulator
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_debug \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS arch=x86_64 ios_simulator=yes target=template_release \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
mkdir -p /root/out/templates
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates/libgodot.ios.a
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates/libgodot.ios.debug.a
#$IOS_LIPO -create bin/libgodot.ios.template_release.arm64.simulator.a bin/libgodot.ios.template_release.x86_64.simulator.a -output /root/out/templates/libgodot.ios.simulator.a
#$IOS_LIPO -create bin/libgodot.ios.template_debug.arm64.simulator.a bin/libgodot.ios.template_debug.x86_64.simulator.a -output /root/out/templates/libgodot.ios.debug.simulator.a
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates/libgodot.ios.simulator.a
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates/libgodot.ios.debug.simulator.a
fi
# Mono
# No iOS support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for iOS..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
# arm64 device
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_debug \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=no target=template_release \
IOS_SDK_PATH="/root/ioscross/arm64/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64/" ios_triple="arm-apple-darwin11-"
# arm64 simulator
# Disabled for now as it doesn't work with cctools-port and current LLVM.
# See https://github.com/godotengine/build-containers/pull/85.
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_debug \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
#$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=arm64 ios_simulator=yes target=template_release \
# IOS_SDK_PATH="/root/ioscross/arm64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/arm64_sim/" ios_triple="arm-apple-darwin11-"
# x86_64 simulator
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_debug \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
$SCONS platform=ios $OPTIONS $OPTIONS_MONO arch=x86_64 ios_simulator=yes target=template_release \
IOS_SDK_PATH="/root/ioscross/x86_64_sim/SDK/iPhoneOS${IOS_SDK}.sdk" IOS_TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/" ios_triple="x86_64-apple-darwin11-"
mkdir -p /root/out/templates-mono
cp bin/libgodot.ios.template_release.arm64.a /root/out/templates-mono/libgodot.ios.a
cp bin/libgodot.ios.template_debug.arm64.a /root/out/templates-mono/libgodot.ios.debug.a
#$IOS_LIPO -create bin/libgodot.ios.template_release.arm64.simulator.a bin/libgodot.ios.template_release.x86_64.simulator.a -output /root/out/templates-mono/libgodot.ios.simulator.a
#$IOS_LIPO -create bin/libgodot.ios.template_debug.arm64.simulator.a bin/libgodot.ios.template_debug.x86_64.simulator.a -output /root/out/templates-mono/libgodot.ios.debug.simulator.a
cp bin/libgodot.ios.template_release.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.simulator.a
cp bin/libgodot.ios.template_debug.x86_64.simulator.a /root/out/templates-mono/libgodot.ios.debug.simulator.a
fi
mkdir -p /root/out/templates
cp bin/godot.iphone.*.arm64 /root/out/templates/
echo "iOS build successful"

View File

@@ -5,87 +5,53 @@ set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
export OPTIONS="use_static_cpp=yes"
export STRIP="strip"
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# pkg-config wrongly points to lib instead of lib64 for arch-dependent header.
sed -i ${GODOT_SDK_LINUX_X86_64}/x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g"
echo "Starting classical build for Linux..."
dnf -y install gettext
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
# Classical
$SCONS platform=x11 bits=64 $OPTIONS tools=yes target=release_debug
$STRIP bin/godot.x11.*
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Linux..."
$SCONS platform=x11 bits=64 $OPTIONS tools=no target=release_debug
$SCONS platform=x11 bits=64 $OPTIONS tools=no target=release
$STRIP bin/godot.x11.*
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
export PATH="${GODOT_SDK_LINUX_X86_32}/bin:${BASE_PATH}"
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=editor
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
$SCONS platform=x11 bits=32 $OPTIONS tools=yes target=release_debug
$STRIP bin/godot.x11.*
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS target=template_release
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
$SCONS platform=x11 bits=32 $OPTIONS tools=no target=release_debug
$SCONS platform=x11 bits=32 $OPTIONS tools=no target=release
$STRIP bin/godot.x11.*
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
export PATH="${GODOT_SDK_LINUX_X86}/bin:${BASE_PATH}"
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=editor
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=server bits=64 $OPTIONS tools=yes target=release_debug
mkdir -p /root/out/x86_64/server
cp -rvp bin/* /root/out/x86_64/server
rm -rf bin
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS target=template_release
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Linux..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
mkdir -p /root/out/x86_64/tools-mono
cp -rvp bin/* /root/out/x86_64/tools-mono
rm -rf bin
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=linuxbsd arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_64/templates-mono
cp -rvp bin/* /root/out/x86_64/templates-mono
rm -rf bin
export PATH="${GODOT_SDK_LINUX_X86}/bin:${BASE_PATH}"
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
mkdir -p /root/out/x86_32/tools-mono
cp -rvp bin/* /root/out/x86_32/tools-mono
rm -rf bin
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=linuxbsd arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_32/templates-mono
cp -rvp bin/* /root/out/x86_32/templates-mono
rm -rf bin
fi
export PATH="${BASE_PATH}"
echo "Linux build successful"

View File

@@ -5,76 +5,27 @@ set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="osxcross_sdk=darwin22 production=yes use_volk=no vulkan_sdk_path=/root/vulkansdk"
export OPTIONS_MONO="module_mono_enabled=yes"
export STRIP="x86_64-apple-darwin22-strip -u -r"
export TERM=xterm
export OPTIONS="osxcross_sdk=darwin24.5"
export STRIP="x86_64-apple-darwin24.5-strip"
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
echo "Starting classical build for macOS..."
dnf -y install gettext
$SCONS platform=osx $OPTIONS bits=64 tools=yes target=release_debug
$STRIP bin/godot.osx.*
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for macOS..."
$SCONS platform=macos $OPTIONS arch=x86_64 target=editor
$SCONS platform=macos $OPTIONS arch=arm64 target=editor
lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal
$STRIP bin/godot.macos.editor.universal
mkdir -p /root/out/tools
cp -rvp bin/* /root/out/tools
rm -rf bin
$SCONS platform=macos $OPTIONS arch=x86_64 target=template_debug
$SCONS platform=macos $OPTIONS arch=arm64 target=template_debug
lipo -create bin/godot.macos.template_debug.x86_64 bin/godot.macos.template_debug.arm64 -output bin/godot.macos.template_debug.universal
$STRIP bin/godot.macos.template_debug.universal
$SCONS platform=macos $OPTIONS arch=x86_64 target=template_release
$SCONS platform=macos $OPTIONS arch=arm64 target=template_release
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal
$STRIP bin/godot.macos.template_release.universal
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for macOS..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=editor
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=editor
lipo -create bin/godot.macos.editor.x86_64.mono bin/godot.macos.editor.arm64.mono -output bin/godot.macos.editor.universal.mono
$STRIP bin/godot.macos.editor.universal.mono
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=macos
mkdir -p /root/out/tools-mono
cp -rvp bin/* /root/out/tools-mono
rm -rf bin
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_debug
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_debug
lipo -create bin/godot.macos.template_debug.x86_64.mono bin/godot.macos.template_debug.arm64.mono -output bin/godot.macos.template_debug.universal.mono
$STRIP bin/godot.macos.template_debug.universal.mono
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=x86_64 target=template_release
$SCONS platform=macos $OPTIONS $OPTIONS_MONO arch=arm64 target=template_release
lipo -create bin/godot.macos.template_release.x86_64.mono bin/godot.macos.template_release.arm64.mono -output bin/godot.macos.template_release.universal.mono
$STRIP bin/godot.macos.template_release.universal.mono
mkdir -p /root/out/templates-mono
cp -rvp bin/* /root/out/templates-mono
rm -rf bin
fi
$SCONS platform=osx $OPTIONS bits=64 tools=no target=release_debug
$SCONS platform=osx $OPTIONS bits=64 tools=no target=release
$STRIP bin/godot.osx.*
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
rm -rf bin
echo "macOS build successful"

View File

@@ -1,39 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="debug_symbols=no use_static_cpp=no"
export TERM=xterm
export DISPLAY=:0
export PATH="${GODOT_SDK_LINUX_X86_64}/bin:${BASE_PATH}"
rm -rf godot
mkdir godot
cd godot
tar xf ../godot.tar.gz --strip-components=1
# pkg-config wrongly points to lib instead of lib64 for arch-dependent header.
sed -i ${GODOT_SDK_LINUX_X86_64}/x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g"
# Temporarily until we make --headless mode actually skip X11.
dnf install -y libX11 libXcursor libXrandr libXinerama libXi mesa-libGL
dnf -y install gettext
# Mono
if [ "${MONO}" == "1" ]; then
echo "Building and generating Mono glue..."
dotnet --info
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig/
${SCONS} platform=linuxbsd ${OPTIONS} target=editor module_mono_enabled=yes
rm -rf /root/mono-glue/*
bin/godot.linuxbsd.editor.x86_64.mono --headless --generate-mono-glue /root/mono-glue
fi
echo "Mono glue generated successfully"

View File

@@ -1,6 +1,10 @@
#!/bin/bash
set -e
export basedir=$(pwd)
# Log output to a file automatically.
exec > >(tee -a "out/logs/build-release") 2>&1
# Config
@@ -8,17 +12,17 @@ set -e
source ./config.sh
can_sign_windows=0
if [ ! -z "${SIGN_KEYSTORE}" ] && [ ! -z "${SIGN_PASSWORD}" ] && [[ $(type -P "osslsigncode") ]]; then
if [ ! -z "${WINDOWS_SIGN_NAME}" ] && [ ! -z "${WINDOWS_SIGN_URL}" ] && [[ $(type -P "osslsigncode") ]]; then
can_sign_windows=1
else
echo "Disabling Windows binary signing as config.sh does not define the required data (SIGN_KEYSTORE, SIGN_PASSWORD), or osslsigncode can't be found in PATH."
echo "Disabling Windows binary signing as config.sh does not define the required data (WINDOWS_SIGN_NAME, WINDOWS_SIGN_URL), or osslsigncode can't be found in PATH."
fi
sign_windows() {
if [ $can_sign_windows == 0 ]; then
return
fi
osslsigncode sign -pkcs12 ${SIGN_KEYSTORE} -pass "${SIGN_PASSWORD}" -n "${SIGN_NAME}" -i "${SIGN_URL}" -t http://timestamp.comodoca.com -in $1 -out $1-signed
P11_KIT_SERVER_ADDRESS=unix:path=/run/p11-kit/p11kit.sock osslsigncode sign -pkcs11module /usr/lib64/pkcs11/p11-kit-client.so -pkcs11cert 'pkcs11:model=SimplySign%20C' -key 'pkcs11:model=SimplySign%20C' -t http://time.certum.pl/ -n "${WINDOWS_SIGN_NAME}" -i "${WINDOWS_SIGN_URL}" -in $1 -out $1-signed
mv $1-signed $1
}
@@ -29,22 +33,14 @@ sign_macos() {
_macos_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_reldir="$1"
_binname="$2"
_is_mono="$3"
if [[ "${_is_mono}" == "1" ]]; then
_appname="Godot_mono.app"
_sharpdir="${_appname}/Contents/Resources/GodotSharp"
else
_appname="Godot.app"
fi
_appname="Godot.app"
scp "${_reldir}/${_binname}.zip" "${OSX_HOST}:${_macos_tmpdir}"
scp "${basedir}/git/misc/dist/macos/editor.entitlements" "${OSX_HOST}:${_macos_tmpdir}"
ssh "${OSX_HOST}" "
cd ${_macos_tmpdir} && \
unzip ${_binname}.zip && \
codesign --force --timestamp \
--options=runtime --entitlements editor.entitlements \
--options=runtime \
-s ${OSX_KEY_ID} -v ${_appname} && \
zip -r ${_binname}_signed.zip ${_appname}"
@@ -72,44 +68,25 @@ sign_macos_template() {
fi
_macos_tmpdir=$(ssh "${OSX_HOST}" "mktemp -d")
_reldir="$1"
_is_mono="$2"
scp "${_reldir}/macos.zip" "${OSX_HOST}:${_macos_tmpdir}"
scp "${_reldir}/osx.zip" "${OSX_HOST}:${_macos_tmpdir}"
ssh "${OSX_HOST}" "
cd ${_macos_tmpdir} && \
unzip macos.zip && \
unzip osx.zip && \
codesign --force -s - \
--options=linker-signed \
-v macos_template.app/Contents/MacOS/* && \
zip -r macos_signed.zip macos_template.app"
-v osx_template.app/Contents/MacOS/* && \
zip -r osx_signed.zip osx_template.app"
scp "${OSX_HOST}:${_macos_tmpdir}/macos_signed.zip" "${_reldir}/macos.zip"
scp "${OSX_HOST}:${_macos_tmpdir}/osx_signed.zip" "${_reldir}/osx.zip"
ssh "${OSX_HOST}" "rm -rf ${_macos_tmpdir}"
}
can_publish_nuget=0
if [ ! -z "${NUGET_SOURCE}" ] && [ ! -z "${NUGET_API_KEY}" ] && [[ $(type -P "dotnet") ]]; then
can_publish_nuget=1
else
echo "Disabling NuGet package publishing as config.sh does not define the required data (NUGET_SOURCE, NUGET_API_KEY), or dotnet can't be found in PATH."
fi
publish_nuget_packages() {
if [ $can_publish_nuget == 0 ]; then
return
fi
for pkg in "$@"; do
dotnet nuget push $pkg --source "${NUGET_SOURCE}" --api-key "${NUGET_API_KEY}" --skip-duplicate
done
}
godot_version=""
templates_version=""
do_cleanup=1
make_tarball=1
build_classical=1
build_mono=1
publish_nuget=0
while getopts "h?v:t:b:n-:" opt; do
case "$opt" in
@@ -118,8 +95,7 @@ while getopts "h?v:t:b:n-:" opt; do
echo
echo " -v godot version (e.g: 3.2-stable) [mandatory]"
echo " -t templates version (e.g. 3.2.stable) [mandatory]"
echo " -b build target: all|classical|mono|none (default: all)"
echo " -n publish nuget packages (default: false)"
echo " -b build target: classical|none (default: classical)"
echo " --no-cleanup disable deleting pre-existing output folders (default: false)"
echo " --no-tarball disable generating source tarball (default: false)"
echo
@@ -133,17 +109,11 @@ while getopts "h?v:t:b:n-:" opt; do
;;
b)
if [ "$OPTARG" == "classical" ]; then
build_mono=0
elif [ "$OPTARG" == "mono" ]; then
build_classical=0
build_classical=1
elif [ "$OPTARG" == "none" ]; then
build_classical=0
build_mono=0
fi
;;
n)
publish_nuget=1
;;
-)
case "${OPTARG}" in
no-cleanup)
@@ -171,13 +141,9 @@ elif [[ "{$templates_version}" == *"-"* ]]; then
exit 1
fi
export basedir=$(pwd)
export webdir="${basedir}/web/${templates_version}"
export reldir="${basedir}/releases/${godot_version}"
export reldir_mono="${reldir}/mono"
export tmpdir="${basedir}/tmp"
export templatesdir="${tmpdir}/templates"
export templatesdir_mono="${tmpdir}/mono/templates"
export godot_basename="Godot_v${godot_version}"
@@ -185,15 +151,11 @@ export godot_basename="Godot_v${godot_version}"
if [ "${do_cleanup}" == "1" ]; then
rm -rf ${webdir}
rm -rf ${reldir}
rm -rf ${tmpdir}
mkdir -p ${webdir}
mkdir -p ${reldir}
mkdir -p ${reldir_mono}
mkdir -p ${templatesdir}
mkdir -p ${templatesdir_mono}
fi
@@ -215,168 +177,95 @@ if [ "${build_classical}" == "1" ]; then
## Linux (Classical) ##
# Editor
binname="${godot_basename}_linux.x86_64"
cp out/linux/x86_64/tools/godot.linuxbsd.editor.x86_64 ${binname}
strip ${binname}
binname="${godot_basename}_x11.64"
cp out/linux/x86_64/tools/godot.x11.opt.tools.64 ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
binname="${godot_basename}_linux.x86_32"
cp out/linux/x86_32/tools/godot.linuxbsd.editor.x86_32 ${binname}
strip ${binname}
binname="${godot_basename}_x11.32"
cp out/linux/x86_32/tools/godot.x11.opt.tools.32 ${binname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
# Templates
cp out/linux/x86_64/templates/godot.linuxbsd.template_release.x86_64 ${templatesdir}/linux_release.x86_64
cp out/linux/x86_64/templates/godot.linuxbsd.template_debug.x86_64 ${templatesdir}/linux_debug.x86_64
cp out/linux/x86_32/templates/godot.linuxbsd.template_release.x86_32 ${templatesdir}/linux_release.x86_32
cp out/linux/x86_32/templates/godot.linuxbsd.template_debug.x86_32 ${templatesdir}/linux_debug.x86_32
strip ${templatesdir}/linux*
cp out/linux/x86_64/templates/godot.x11.opt.64 ${templatesdir}/linux_x11_64_release
cp out/linux/x86_64/templates/godot.x11.opt.debug.64 ${templatesdir}/linux_x11_64_debug
cp out/linux/x86_32/templates/godot.x11.opt.32 ${templatesdir}/linux_x11_32_release
cp out/linux/x86_32/templates/godot.x11.opt.debug.32 ${templatesdir}/linux_x11_32_debug
## Windows (Classical) ##
# Editor
binname="${godot_basename}_win64.exe"
wrpname="${godot_basename}_win64_console.exe"
cp out/windows/x86_64/tools/godot.windows.editor.x86_64.exe ${binname}
strip ${binname}
cp out/windows/x86_64/tools/godot.windows.opt.tools.64.exe ${binname}
sign_windows ${binname}
cp out/windows/x86_64/tools/godot.windows.editor.x86_64.console.exe ${wrpname}
strip ${wrpname}
sign_windows ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname} ${wrpname}
rm ${binname} ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
binname="${godot_basename}_win32.exe"
wrpname="${godot_basename}_win32_console.exe"
cp out/windows/x86_32/tools/godot.windows.editor.x86_32.exe ${binname}
strip ${binname}
cp out/windows/x86_32/tools/godot.windows.opt.tools.32.exe ${binname}
sign_windows ${binname}
cp out/windows/x86_32/tools/godot.windows.editor.x86_32.console.exe ${wrpname}
strip ${wrpname}
sign_windows ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname} ${wrpname}
rm ${binname} ${wrpname}
zip -q -9 "${reldir}/${binname}.zip" ${binname}
rm ${binname}
# Templates
cp out/windows/x86_64/templates/godot.windows.template_release.x86_64.exe ${templatesdir}/windows_release_x86_64.exe
cp out/windows/x86_64/templates/godot.windows.template_debug.x86_64.exe ${templatesdir}/windows_debug_x86_64.exe
cp out/windows/x86_32/templates/godot.windows.template_release.x86_32.exe ${templatesdir}/windows_release_x86_32.exe
cp out/windows/x86_32/templates/godot.windows.template_debug.x86_32.exe ${templatesdir}/windows_debug_x86_32.exe
cp out/windows/x86_64/templates/godot.windows.template_release.x86_64.console.exe ${templatesdir}/windows_release_x86_64_console.exe
cp out/windows/x86_64/templates/godot.windows.template_debug.x86_64.console.exe ${templatesdir}/windows_debug_x86_64_console.exe
cp out/windows/x86_32/templates/godot.windows.template_release.x86_32.console.exe ${templatesdir}/windows_release_x86_32_console.exe
cp out/windows/x86_32/templates/godot.windows.template_debug.x86_32.console.exe ${templatesdir}/windows_debug_x86_32_console.exe
strip ${templatesdir}/windows*.exe
cp out/windows/x86_64/templates/godot.windows.opt.64.exe ${templatesdir}/windows_64_release.exe
cp out/windows/x86_64/templates/godot.windows.opt.debug.64.exe ${templatesdir}/windows_64_debug.exe
cp out/windows/x86_32/templates/godot.windows.opt.32.exe ${templatesdir}/windows_32_release.exe
cp out/windows/x86_32/templates/godot.windows.opt.debug.32.exe ${templatesdir}/windows_32_debug.exe
## macOS (Classical) ##
# Editor
binname="${godot_basename}_macos.universal"
binname="${godot_basename}_osx.64"
rm -rf Godot.app
cp -r git/misc/dist/macos_tools.app Godot.app
cp -r git/misc/dist/osx_tools.app Godot.app
mkdir -p Godot.app/Contents/MacOS
cp out/macos/tools/godot.macos.editor.universal Godot.app/Contents/MacOS/Godot
cp out/macos/tools/godot.osx.opt.tools.64 Godot.app/Contents/MacOS/Godot
chmod +x Godot.app/Contents/MacOS/Godot
zip -q -9 -r "${reldir}/${binname}.zip" Godot.app
rm -rf Godot.app
sign_macos ${reldir} ${binname} 0
sign_macos ${reldir} ${binname}
# Templates
rm -rf macos_template.app
cp -r git/misc/dist/macos_template.app .
mkdir -p macos_template.app/Contents/MacOS
rm -rf osx_template.app
cp -r git/misc/dist/osx_template.app .
mkdir -p osx_template.app/Contents/MacOS
cp out/macos/templates/godot.macos.template_release.universal macos_template.app/Contents/MacOS/godot_macos_release.universal
cp out/macos/templates/godot.macos.template_debug.universal macos_template.app/Contents/MacOS/godot_macos_debug.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos*
zip -q -9 -r "${templatesdir}/macos.zip" macos_template.app
rm -rf macos_template.app
sign_macos_template ${templatesdir} 0
cp out/macos/templates/godot.osx.opt.64 osx_template.app/Contents/MacOS/godot_osx_release.64
cp out/macos/templates/godot.osx.opt.debug.64 osx_template.app/Contents/MacOS/godot_osx_debug.64
chmod +x osx_template.app/Contents/MacOS/godot_osx*
zip -q -9 -r "${templatesdir}/osx.zip" osx_template.app
rm -rf osx_template.app
sign_macos_template ${templatesdir}
## Web (Classical) ##
# Editor
unzip out/web/tools/godot.web.editor.wasm32.zip -d ${webdir}/
brotli --keep --force --quality=11 ${webdir}/*
binname="${godot_basename}_web_editor.zip"
cp out/web/tools/godot.web.editor.wasm32.zip ${reldir}/${binname}
# Templates
cp out/web/templates/godot.web.template_release.wasm32.zip ${templatesdir}/web_release.zip
cp out/web/templates/godot.web.template_debug.wasm32.zip ${templatesdir}/web_debug.zip
cp out/web/templates/godot.web.template_release.wasm32.dlink.zip ${templatesdir}/web_dlink_release.zip
cp out/web/templates/godot.web.template_debug.wasm32.dlink.zip ${templatesdir}/web_dlink_debug.zip
cp git/misc/dist/html/default.html godot.html
cp out/web/templates/godot.javascript.opt.asm.js godot.asm.js
cp out/web/templates/godot.javascript.opt.js godot.js
cp out/web/templates/godot.javascript.opt.html.mem godot.mem
zip -q -9 ${templatesdir}/javascript_release.zip godot.{html,asm.js,js,mem}
cp out/web/templates/godot.javascript.opt.debug.asm.js godot.asm.js
cp out/web/templates/godot.javascript.opt.debug.js godot.js
cp out/web/templates/godot.javascript.opt.debug.html.mem godot.mem
zip -q -9 ${templatesdir}/javascript_debug.zip godot.{html,asm.js,js,mem}
rm -f godot.{html,asm.js,js,mem}
## Android (Classical) ##
# Lib for direct download
cp out/android/templates/godot-lib.template_release.aar ${reldir}/godot-lib.${templates_version}.template_release.aar
# Editor
binname="${godot_basename}_android_editor.apk"
cp out/android/tools/android_editor.apk ${reldir}/${binname}
binname="${godot_basename}_android_editor.aab"
cp out/android/tools/android_editor.aab ${reldir}/${binname}
# Templates
cp out/android/templates/*.apk ${templatesdir}/
cp out/android/templates/android_source.zip ${templatesdir}/
## iOS (Classical) ##
rm -rf ios_xcode
cp -r git/misc/dist/ios_xcode ios_xcode
cp out/ios/templates/libgodot.ios.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.ios.debug.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates/libgodot.ios.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates/libgodot.ios.debug.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
cp -r deps/vulkansdk-macos/MoltenVK/MoltenVK.xcframework ios_xcode/
rm -rf ios_xcode/MoltenVK.xcframework/{macos,tvos}*
cd ios_xcode
zip -q -9 -r "${templatesdir}/ios.zip" *
cd ..
cp out/ios/templates/godot.iphone.opt.arm64 ios_xcode/godot_opt.iphone
cp out/ios/templates/godot.iphone.opt.debug.arm64 ios_xcode/godot_debug.iphone
chmod +x ios_xcode/godot*.iphone
zip -q -9 -r "${templatesdir}/GodotiOSXCode.zip" ios_xcode
rm -rf ios_xcode
# ## UWP (Classical) ##
#
# if [ ! -d "deps/angle" ]; then
# echo "Downloading ANGLE binaries from https://github.com/GodotBuilder/godot-builds/releases/tag/_tools"
# mkdir -p deps && cd deps
# curl -LO https://github.com/GodotBuilder/godot-builds/releases/download/_tools/angle.7z
# 7z x angle.7z && rm -f angle.7z
# cd ..
# fi
#
# rm -rf uwp_template_*
# for arch in ARM Win32 x64; do
# cp -r git/misc/dist/uwp_template uwp_template_${arch}
# cp deps/angle/winrt/10/src/Release_${arch}/libEGL.dll \
# deps/angle/winrt/10/src/Release_${arch}/libGLESv2.dll \
# uwp_template_${arch}/
# cp -r uwp_template_${arch} uwp_template_${arch}_debug
# done
#
# cp out/uwp/arm/godot.uwp.template_release.32.arm.exe uwp_template_ARM/godot.uwp.exe
# cp out/uwp/arm/godot.uwp.template_debug.32.arm.exe uwp_template_ARM_debug/godot.uwp.exe
# cd uwp_template_ARM && zip -q -9 -r "${templatesdir}/uwp_arm_release.zip" * && cd ..
# cd uwp_template_ARM_debug && zip -q -9 -r "${templatesdir}/uwp_arm_debug.zip" * && cd ..
# rm -rf uwp_template_ARM*
#
# cp out/uwp/x86/godot.uwp.template_release.32.x86.exe uwp_template_Win32/godot.uwp.exe
# cp out/uwp/x86/godot.uwp.template_debug.32.x86.exe uwp_template_Win32_debug/godot.uwp.exe
# cd uwp_template_Win32 && zip -q -9 -r "${templatesdir}/uwp_x86_release.zip" * && cd ..
# cd uwp_template_Win32_debug && zip -q -9 -r "${templatesdir}/uwp_x86_debug.zip" * && cd ..
# rm -rf uwp_template_Win32*
#
# cp out/uwp/x64/godot.uwp.template_release.64.x64.exe uwp_template_x64/godot.uwp.exe
# cp out/uwp/x64/godot.uwp.template_debug.64.x64.exe uwp_template_x64_debug/godot.uwp.exe
# cd uwp_template_x64 && zip -q -9 -r "${templatesdir}/uwp_x64_release.zip" * && cd ..
# cd uwp_template_x64_debug && zip -q -9 -r "${templatesdir}/uwp_x64_debug.zip" * && cd ..
# rm -rf uwp_template_x64*
## Templates TPZ (Classical) ##
echo "${templates_version}" > ${templatesdir}/version.txt
@@ -394,161 +283,4 @@ if [ "${build_classical}" == "1" ]; then
fi
# Mono
if [ "${build_mono}" == "1" ]; then
## Linux (Mono) ##
# Editor
binbasename="${godot_basename}_mono_linux"
mkdir -p ${binbasename}_x86_64
cp out/linux/x86_64/tools-mono/godot.linuxbsd.editor.x86_64.mono ${binbasename}_x86_64/${binbasename}.x86_64
strip ${binbasename}_x86_64/${binbasename}.x86_64
cp -rp out/linux/x86_64/tools-mono/GodotSharp ${binbasename}_x86_64/
zip -r -q -9 "${reldir_mono}/${binbasename}_x86_64.zip" ${binbasename}_x86_64
rm -rf ${binbasename}_x86_64
binbasename="${godot_basename}_mono_linux"
mkdir -p ${binbasename}_x86_32
cp out/linux/x86_32/tools-mono/godot.linuxbsd.editor.x86_32.mono ${binbasename}_x86_32/${binbasename}.x86_32
strip ${binbasename}_x86_32/${binbasename}.x86_32
cp -rp out/linux/x86_32/tools-mono/GodotSharp/ ${binbasename}_x86_32/
zip -r -q -9 "${reldir_mono}/${binbasename}_x86_32.zip" ${binbasename}_x86_32
rm -rf ${binbasename}_x86_32
# Templates
cp out/linux/x86_64/templates-mono/godot.linuxbsd.template_debug.x86_64.mono ${templatesdir_mono}/linux_debug.x86_64
cp out/linux/x86_64/templates-mono/godot.linuxbsd.template_release.x86_64.mono ${templatesdir_mono}/linux_release.x86_64
cp out/linux/x86_32/templates-mono/godot.linuxbsd.template_debug.x86_32.mono ${templatesdir_mono}/linux_debug.x86_32
cp out/linux/x86_32/templates-mono/godot.linuxbsd.template_release.x86_32.mono ${templatesdir_mono}/linux_release.x86_32
strip ${templatesdir_mono}/linux*
## Windows (Mono) ##
# Editor
binname="${godot_basename}_mono_win64"
wrpname="${godot_basename}_mono_win64_console"
mkdir -p ${binname}
cp out/windows/x86_64/tools-mono/godot.windows.editor.x86_64.mono.exe ${binname}/${binname}.exe
strip ${binname}/${binname}.exe
sign_windows ${binname}/${binname}.exe
cp -rp out/windows/x86_64/tools-mono/GodotSharp ${binname}/
cp out/windows/x86_64/tools-mono/godot.windows.editor.x86_64.mono.console.exe ${binname}/${wrpname}.exe
strip ${binname}/${wrpname}.exe
sign_windows ${binname}/${wrpname}.exe
zip -r -q -9 "${reldir_mono}/${binname}.zip" ${binname}
rm -rf ${binname}
binname="${godot_basename}_mono_win32"
wrpname="${godot_basename}_mono_win32_console"
mkdir -p ${binname}
cp out/windows/x86_32/tools-mono/godot.windows.editor.x86_32.mono.exe ${binname}/${binname}.exe
strip ${binname}/${binname}.exe
sign_windows ${binname}/${binname}.exe
cp -rp out/windows/x86_32/tools-mono/GodotSharp ${binname}/
cp out/windows/x86_32/tools-mono/godot.windows.editor.x86_32.mono.console.exe ${binname}/${wrpname}.exe
strip ${binname}/${wrpname}.exe
sign_windows ${binname}/${wrpname}.exe
zip -r -q -9 "${reldir_mono}/${binname}.zip" ${binname}
rm -rf ${binname}
# Templates
cp out/windows/x86_64/templates-mono/godot.windows.template_debug.x86_64.mono.exe ${templatesdir_mono}/windows_debug_x86_64.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_release.x86_64.mono.exe ${templatesdir_mono}/windows_release_x86_64.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_debug.x86_32.mono.exe ${templatesdir_mono}/windows_debug_x86_32.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_release.x86_32.mono.exe ${templatesdir_mono}/windows_release_x86_32.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_debug.x86_64.mono.console.exe ${templatesdir_mono}/windows_debug_x86_64_console.exe
cp out/windows/x86_64/templates-mono/godot.windows.template_release.x86_64.mono.console.exe ${templatesdir_mono}/windows_release_x86_64_console.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_debug.x86_32.mono.console.exe ${templatesdir_mono}/windows_debug_x86_32_console.exe
cp out/windows/x86_32/templates-mono/godot.windows.template_release.x86_32.mono.console.exe ${templatesdir_mono}/windows_release_x86_32_console.exe
strip ${templatesdir_mono}/windows*.exe
## macOS (Mono) ##
# Editor
binname="${godot_basename}_mono_macos.universal"
rm -rf Godot_mono.app
cp -r git/misc/dist/macos_tools.app Godot_mono.app
mkdir -p Godot_mono.app/Contents/{MacOS,Resources}
cp out/macos/tools-mono/godot.macos.editor.universal.mono Godot_mono.app/Contents/MacOS/Godot
cp -rp out/macos/tools-mono/GodotSharp Godot_mono.app/Contents/Resources/GodotSharp
chmod +x Godot_mono.app/Contents/MacOS/Godot
zip -q -9 -r "${reldir_mono}/${binname}.zip" Godot_mono.app
rm -rf Godot_mono.app
sign_macos ${reldir_mono} ${binname} 1
# Templates
rm -rf macos_template.app
cp -r git/misc/dist/macos_template.app .
mkdir -p macos_template.app/Contents/{MacOS,Resources}
cp out/macos/templates-mono/godot.macos.template_debug.universal.mono macos_template.app/Contents/MacOS/godot_macos_debug.universal
cp out/macos/templates-mono/godot.macos.template_release.universal.mono macos_template.app/Contents/MacOS/godot_macos_release.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos*
zip -q -9 -r "${templatesdir_mono}/macos.zip" macos_template.app
rm -rf macos_template.app
sign_macos_template ${templatesdir_mono} 1
# No .NET support for those platforms yet.
if false; then
## Web (Mono) ##
# Templates
cp out/web/templates-mono/godot.web.template_debug.wasm32.mono.zip ${templatesdir_mono}/web_debug.zip
cp out/web/templates-mono/godot.web.template_release.wasm32.mono.zip ${templatesdir_mono}/web_release.zip
## Android (Mono) ##
# Lib for direct download
cp out/android/templates-mono/godot-lib.template_release.aar ${reldir_mono}/godot-lib.${templates_version}.mono.template_release.aar
# Templates
cp out/android/templates-mono/*.apk ${templatesdir_mono}/
cp out/android/templates-mono/android_source.zip ${templatesdir_mono}/
## iOS (Mono) ##
rm -rf ios_xcode
cp -r git/misc/dist/ios_xcode ios_xcode
cp out/ios/templates-mono/libgodot.ios.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.ios.debug.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp out/ios/templates-mono/libgodot.ios.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
cp out/ios/templates-mono/libgodot.ios.debug.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
cp -r deps/vulkansdk-macos/MoltenVK/MoltenVK.xcframework ios_xcode/
rm -rf ios_xcode/MoltenVK.xcframework/{macos,tvos}*
cd ios_xcode
zip -q -9 -r "${templatesdir_mono}/ios.zip" *
cd ..
rm -rf ios_xcode
fi
## Templates TPZ (Mono) ##
echo "${templates_version}.mono" > ${templatesdir_mono}/version.txt
pushd ${templatesdir_mono}/..
zip -q -9 -r -D "${reldir_mono}/${godot_basename}_mono_export_templates.tpz" templates/*
popd
## SHA-512 sums (Mono) ##
pushd ${reldir_mono}
sha512sum [Gg]* >> SHA512-SUMS.txt
mkdir -p ${basedir}/sha512sums/${godot_version}/mono
cp SHA512-SUMS.txt ${basedir}/sha512sums/${godot_version}/mono/
popd
fi
# NuGet packages
if [ "${publish_nuget}" == "1" ]; then
echo "Publishing NuGet packages..."
publish_nuget_packages out/linux/x86_64/tools-mono/GodotSharp/Tools/nupkgs/*.nupkg
fi
echo "All editor binaries and templates prepared successfully for release"

View File

@@ -1,3 +0,0 @@
call z:\root\build\env-%1.bat
%SCONS% platform=uwp %OPTIONS% tools=no target=%2 LINK="\"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX64\%1\link.exe\""

View File

@@ -1,43 +0,0 @@
#!/bin/bash
set -e
# Config
export SCONS="call scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export BUILD_ARCHES="x86 x64 arm"
export ANGLE_SRC_PATH='c:\angle'
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for UWP..."
for arch in ${BUILD_ARCHES}; do
for release in release release_debug; do
wine cmd /c /root/build/build.bat $arch $release
sync
wineserver -kw
mkdir -p /root/out/$arch
mv bin/* /root/out/$arch
done
done
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "No Mono support for UWP yet."
#cp /root/mono-glue/*.cpp modules/mono/glue/
#cp -r /root/mono-glue/Managed/Generated modules/mono/glue/Managed/
fi
echo "UWP build successful"

View File

@@ -1,36 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set Platform=arm
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=arm
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\arm;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm;C:\Program Files (x86)\Windows Kits\10\bin\arm;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\arm\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\arm;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\arm;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\arm\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

View File

@@ -1,35 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=x64
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x64\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x64;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x64\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

View File

@@ -1,36 +0,0 @@
set ALLUSERSPROFILE=C:\ProgramData
set CommandPromptType=Native
set CommonProgramFiles=C:\Program Files\Common Files
set CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
set CommonProgramW6432=C:\Program Files\Common Files
set DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\
set ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
set Framework40Version=v4.0
set FrameworkDir=C:\Windows\Microsoft.NET\Framework64\
set FrameworkDir64=C:\Windows\Microsoft.NET\Framework64\
set FrameworkVersion=v4.0.30319
set FrameworkVersion64=v4.0.30319
set VCIDEInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\
set VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\
set VCToolsInstallDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set VisualStudioVersion=15.0
set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\
set VSCMD_ARG_app_plat=UWP
set VSCMD_ARG_HOST_ARCH=x86
set VSCMD_ARG_TGT_ARCH=x86
set VSCMD_ARG_winsdk=10.0.16299.0
set VSCMD_VER=15.0
set VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\
set Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2017\Build Tools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Roslyn;C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86;C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\\MSBuild\15.0\bin;C:\Windows\Microsoft.NET\Framework\ v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\Tools\;C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;C:\Program Files\OpenSSH-Win64;C:\Program Files\Git\cmd;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\user\AppData\Local\Microsoft\WindowsApps;
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\cppwinrt
set LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x86\store\;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x86;
set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.16299.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\
set WindowsSDKVersion=10.0.16299.0\

View File

@@ -4,72 +4,23 @@ set -e
# Config
# To speed up builds with single-threaded full LTO linking,
# we run all builds in parallel each from their own folder.
export NUM_JOBS=5
declare -a JOBS=(
"target=editor use_closure_compiler=yes"
"target=template_debug"
"target=template_release"
"target=template_debug dlink_enabled=yes"
"target=template_release dlink_enabled=yes"
)
export SCONS="scons -j$(expr ${NUM_CORES} / ${NUM_JOBS}) verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes -j${NUM_CORES}"
export TERM=xterm
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS=""
source /root/emsdk/emsdk_env.sh
export EMSCRIPTEN_ROOT=/root/emsdk/fastcomp/emscripten
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
echo "Starting classical build for Web..."
dnf -y install gettext
$SCONS platform=javascript ${OPTIONS} tools=no target=release_debug
$SCONS platform=javascript ${OPTIONS} tools=no target=release
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Web..."
for i in {0..4}; do
cp -r /root/godot /root/godot$i
cd /root/godot$i
echo "$SCONS platform=web ${OPTIONS} ${JOBS[$i]}"
$SCONS platform=web ${OPTIONS} ${JOBS[$i]} &
pids[$i]=$!
done
for pid in ${pids[*]}; do
wait $pid
done
mkdir -p /root/out/tools
cp -rvp /root/godot0/bin/*.editor*.zip /root/out/tools
mkdir -p /root/out/templates
for i in {1..4}; do
cp -rvp /root/godot$i/bin/*.zip /root/out/templates
done
fi
# Mono
# No Web support with .NET 6 yet.
#if [ "${MONO}" == "1" ]; then
if false; then
echo "Starting Mono build for Web..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
$SCONS platform=web ${OPTIONS} ${OPTIONS_MONO} target=template_debug
$SCONS platform=web ${OPTIONS} ${OPTIONS_MONO} target=template_release
mkdir -p /root/out/templates-mono
cp -rvp bin/*.zip /root/out/templates-mono
rm -f bin/*.zip
fi
mkdir -p /root/out/templates
cp -rvp bin/* /root/out/templates
echo "Web build successful"

View File

@@ -5,76 +5,40 @@ set -e
# Config
export SCONS="scons -j${NUM_CORES} verbose=yes warnings=no progress=no"
export OPTIONS="production=yes"
export OPTIONS_MONO="module_mono_enabled=yes"
export TERM=xterm
export OPTIONS=""
export STRIP="x86_64-w64-mingw32-strip"
rm -rf godot
mkdir godot
cd godot
tar xf /root/godot.tar.gz --strip-components=1
# Classical
echo "Starting classical build for Windows..."
dnf -y install gettext
$SCONS platform=windows bits=64 $OPTIONS tools=yes target=release_debug
$STRIP bin/godot.windows.*
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
if [ "${CLASSICAL}" == "1" ]; then
echo "Starting classical build for Windows..."
$SCONS platform=windows bits=64 $OPTIONS tools=no target=release_debug
$SCONS platform=windows bits=64 $OPTIONS tools=no target=release
$STRIP bin/godot.windows.*
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
$SCONS platform=windows arch=x86_64 $OPTIONS target=editor
mkdir -p /root/out/x86_64/tools
cp -rvp bin/* /root/out/x86_64/tools
rm -rf bin
$SCONS platform=windows bits=32 $OPTIONS tools=yes target=release_debug
$STRIP bin/godot.windows.*
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=windows arch=x86_64 $OPTIONS target=template_debug
$SCONS platform=windows arch=x86_64 $OPTIONS target=template_release
mkdir -p /root/out/x86_64/templates
cp -rvp bin/* /root/out/x86_64/templates
rm -rf bin
$SCONS platform=windows arch=x86_32 $OPTIONS target=editor
mkdir -p /root/out/x86_32/tools
cp -rvp bin/* /root/out/x86_32/tools
rm -rf bin
$SCONS platform=windows arch=x86_32 $OPTIONS target=template_debug
$SCONS platform=windows arch=x86_32 $OPTIONS target=template_release
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
fi
# Mono
if [ "${MONO}" == "1" ]; then
echo "Starting Mono build for Windows..."
cp -r /root/mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
cp -r /root/mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
mkdir -p /root/out/x86_64/tools-mono
cp -rvp bin/* /root/out/x86_64/tools-mono
rm -rf bin
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=windows arch=x86_64 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_64/templates-mono
cp -rvp bin/* /root/out/x86_64/templates-mono
rm -rf bin
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=editor
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
mkdir -p /root/out/x86_32/tools-mono
cp -rvp bin/* /root/out/x86_32/tools-mono
rm -rf bin
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_debug
$SCONS platform=windows arch=x86_32 $OPTIONS $OPTIONS_MONO target=template_release
mkdir -p /root/out/x86_32/templates-mono
cp -rvp bin/* /root/out/x86_32/templates-mono
rm -rf bin
fi
$SCONS platform=windows bits=32 $OPTIONS tools=no target=release_debug
$SCONS platform=windows bits=32 $OPTIONS tools=no target=release
$STRIP bin/godot.windows.*
mkdir -p /root/out/x86_32/templates
cp -rvp bin/* /root/out/x86_32/templates
rm -rf bin
echo "Windows build successful"

122
build.sh
View File

@@ -4,9 +4,15 @@ set -e
OPTIND=1
export basedir="$(pwd)"
mkdir -p ${basedir}/out
mkdir -p ${basedir}/out/logs
# Log output to a file automatically.
exec > >(tee -a "out/logs/build") 2>&1
# Config
# For default registry and number of cores.
if [ ! -e config.sh ]; then
echo "No config.sh, copying default values from config.sh.in."
cp config.sh.in config.sh
@@ -21,62 +27,33 @@ if [ -z "${NUM_CORES}" ]; then
export NUM_CORES=16
fi
registry="${REGISTRY}"
username=""
password=""
godot_version=""
git_treeish="master"
build_classical=1
build_mono=1
force_download=0
skip_download=1
skip_git_checkout=0
while getopts "h?r:u:p:v:g:b:fsc" opt; do
while getopts "h?v:g:fc" opt; do
case "$opt" in
h|\?)
echo "Usage: $0 [OPTIONS...]"
echo
echo " -r registry"
echo " -u username"
echo " -p password"
echo " -v godot version (e.g. 3.1-alpha5) [mandatory]"
echo " -v godot version (e.g. 2.1.7-stable) [mandatory]"
echo " -g git treeish (e.g. master)"
echo " -b all|classical|mono (default: all)"
echo " -f force redownload of all images"
echo " -s skip downloading"
echo " -c skip checkout"
echo
exit 1
;;
r)
registry=$OPTARG
;;
u)
username=$OPTARG
;;
p)
password=$OPTARG
;;
v)
godot_version=$OPTARG
;;
g)
git_treeish=$OPTARG
;;
b)
if [ "$OPTARG" == "classical" ]; then
build_mono=0
elif [ "$OPTARG" == "mono" ]; then
build_classical=0
fi
;;
f)
force_download=1
;;
s)
skip_download=1
;;
c)
skip_git_checkout=1
;;
@@ -85,10 +62,6 @@ done
export podman=${PODMAN}
if [ $UID != 0 ]; then
echo "WARNING: Running as non-root may cause problems for the uwp build"
fi
if [ -z "${godot_version}" ]; then
echo "-v <version> is mandatory!"
exit 1
@@ -104,54 +77,6 @@ case "$choice" in
esac
export GODOT_VERSION_STATUS="${status}"
if [ ! -z "${username}" ] && [ ! -z "${password}" ]; then
if ${podman} login ${registry} -u "${username}" -p "${password}"; then
export logged_in=true
fi
fi
if [ $skip_download == 0 ]; then
echo "Fetching images"
for image in windows linux web; do
if [ ${force_download} == 1 ] || ! ${podman} image exists godot/$image; then
if ! ${podman} pull ${registry}/godot/${image}; then
echo "ERROR: image $image does not exist and can't be downloaded"
exit 1
fi
fi
done
if [ ! -z "${logged_in}" ]; then
echo "Fetching private images"
for image in macosx android ios uwp; do
if [ ${force_download} == 1 ] || ! ${podman} image exists godot-private/$image; then
if ! ${podman} pull ${registry}/godot-private/${image}; then
echo "ERROR: image $image does not exist and can't be downloaded"
exit 1
fi
fi
done
fi
fi
# macOS and iOS need the Vulkan SDK
if [ ! -d "deps/vulkansdk-macos" ]; then
echo "Missing Vulkan SDK for macOS, we're going to run into issues!"
fi
# Keystore for Android editor signing
# Optional - the config.sh will be copied but if it's not filled in,
# it will do an unsigned build.
if [ ! -d "deps/keystore" ]; then
mkdir -p deps/keystore
cp config.sh deps/keystore/
if [ ! -z "$GODOT_ANDROID_SIGN_KEYSTORE" ]; then
cp "$GODOT_ANDROID_SIGN_KEYSTORE" deps/keystore/
sed -i deps/keystore/config.sh -e "s@$GODOT_ANDROID_SIGN_KEYSTORE@/root/keystore/$GODOT_ANDROID_SIGN_KEYSTORE@"
fi
fi
if [ "${skip_git_checkout}" == 0 ]; then
git clone https://github.com/godotengine/godot git || /bin/true
pushd git
@@ -175,23 +100,15 @@ EOF
exit 1
fi
sh misc/scripts/make_tarball.sh -v ${godot_version} -g ${git_treeish}
sh ../make_tarball.sh -v ${godot_version} -g ${git_treeish}
popd
fi
export basedir="$(pwd)"
mkdir -p ${basedir}/out
mkdir -p ${basedir}/out/logs
mkdir -p ${basedir}/mono-glue
export podman_run="${podman} run -it --rm --env BUILD_NAME --env GODOT_VERSION_STATUS --env NUM_CORES --env CLASSICAL=${build_classical} --env MONO=${build_mono} -v ${basedir}/godot-${godot_version}.tar.gz:/root/godot.tar.gz -v ${basedir}/mono-glue:/root/mono-glue -w /root/"
export podman_run="${podman} run -it --rm --env BUILD_NAME=${BUILD_NAME} --env GODOT_VERSION_STATUS=${GODOT_VERSION_STATUS} --env NUM_CORES=${NUM_CORES} --env CLASSICAL=${build_classical} -v ${basedir}/godot-${godot_version}.tar.gz:/root/godot.tar.gz -w /root/"
export img_version=$IMAGE_VERSION
mkdir -p ${basedir}/mono-glue
${podman_run} -v ${basedir}/build-mono-glue:/root/build localhost/godot-linux:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/mono-glue
mkdir -p ${basedir}/out/windows
${podman_run} -v ${basedir}/build-windows:/root/build -v ${basedir}/out/windows:/root/out localhost/godot-windows:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/windows
${podman_run} -v ${basedir}/build-windows:/root/build -v ${basedir}/out/windows:/root/out --env STEAM=${build_steam} localhost/godot-windows:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/windows
mkdir -p ${basedir}/out/linux
${podman_run} -v ${basedir}/build-linux:/root/build -v ${basedir}/out/linux:/root/out localhost/godot-linux:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/linux
@@ -200,17 +117,20 @@ mkdir -p ${basedir}/out/web
${podman_run} -v ${basedir}/build-web:/root/build -v ${basedir}/out/web:/root/out localhost/godot-web:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/web
mkdir -p ${basedir}/out/macos
${podman_run} -v ${basedir}/build-macos:/root/build -v ${basedir}/out/macos:/root/out -v ${basedir}/deps/vulkansdk-macos:/root/vulkansdk localhost/godot-osx:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/macos
${podman_run} -v ${basedir}/build-macos:/root/build -v ${basedir}/out/macos:/root/out localhost/godot-osx:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/macos
mkdir -p ${basedir}/out/android
${podman_run} -v ${basedir}/build-android:/root/build -v ${basedir}/out/android:/root/out -v ${basedir}/deps/keystore:/root/keystore localhost/godot-android:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/android
${podman_run} -v ${basedir}/build-android:/root/build -v ${basedir}/out/android:/root/out localhost/godot-android:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/android
mkdir -p ${basedir}/out/ios
${podman_run} -v ${basedir}/build-ios:/root/build -v ${basedir}/out/ios:/root/out localhost/godot-ios:${img_version} bash build/build.sh 2>&1 | tee ${basedir}/out/logs/ios
#mkdir -p ${basedir}/out/uwp
#${podman_run} --ulimit nofile=32768:32768 -v ${basedir}/build-uwp:/root/build -v ${basedir}/out/uwp:/root/out ${registry}/godot-private/uwp:latest bash build/build.sh 2>&1 | tee ${basedir}/out/logs/uwp
uid=$(id -un)
gid=$(id -gn)
if [ ! -z "$SUDO_UID" ]; then
chown -R "${SUDO_UID}":"${SUDO_GID}" ${basedir}/git ${basedir}/out ${basedir}/mono-glue ${basedir}/godot*.tar.gz
uid="${SUDO_UID}"
gid="${SUDO_GID}"
fi
chown -R -f $uid:$gid ${basedir}/git ${basedir}/out ${basedir}/godot*.tar.gz
echo "All builds completed. Check `out/logs/` to validate that they all succeeded (e.g. `tail -n 1 out/logs/*`)."

View File

@@ -1,2 +1,3 @@
rm -rf releases tmp web
#!/bin/bash
rm -rf releases steam tmp web

View File

@@ -1,2 +1,4 @@
rm -rf godot*.tar.gz mono-glue out releases tmp web
#!/bin/bash
rm -rf godot*.tar.gz mono-glue out releases steam tmp web
git status

View File

@@ -12,36 +12,22 @@
# relevant tool in your PATH or an absolute path to run it from.
export PODMAN='podman'
# Registry for build containers.
# The default registry is the one used for official Godot builds.
# Note that some of its images are private and only accessible to selected
# contributors.
# You can build your own registry with scripts at
# https://github.com/godotengine/build-containers
export REGISTRY='registry.prehensile-tales.com'
# Version string of the images to use in build.sh.
export IMAGE_VERSION='4.x-f36'
export IMAGE_VERSION='2.1-f43'
# Default build name used to distinguish between official and custom builds.
export BUILD_NAME='custom_build'
export BUILD_REVISION='custom_build'
# Default number of parallel cores for each build.
export NUM_CORES=16
# Set up your own signing keystore and relevant details below.
# Set up your own Windows signing details below.
# If you do not fill all SIGN_* fields, signing will be skipped.
# Path to pkcs12 archive.
export SIGN_KEYSTORE=''
# Password for the private key.
export SIGN_PASSWORD=''
# Name and URL of the signed application.
# Use your own when making a thirdparty build.
export SIGN_NAME=''
export SIGN_URL=''
export WINDOWS_SIGN_NAME=''
export WINDOWS_SIGN_URL=''
# Hostname or IP address of an OSX host (Needed for signing)
# eg 'user@10.1.0.10'
@@ -54,30 +40,3 @@ export OSX_BUNDLE_ID=''
export APPLE_TEAM=''
export APPLE_ID=''
export APPLE_ID_PASSWORD=''
# NuGet source for publishing .NET packages
export NUGET_SOURCE='nuget.org'
# API key for publishing NuGet packages to nuget.org
export NUGET_API_KEY=''
# MavenCentral (sonatype) credentials
export OSSRH_GROUP_ID=''
export OSSRH_USERNAME=''
export OSSRH_PASSWORD=''
# Sonatype assigned ID used to upload the generated artifacts
export SONATYPE_STAGING_PROFILE_ID=''
# Used to sign the artifacts after they're built
# ID of the GPG key pair, the last eight characters of its fingerprint
export SIGNING_KEY_ID=''
# Passphrase of the key pair
export SIGNING_PASSWORD=''
# Base64 encoded private GPG key
export SIGNING_KEY=''
# Android signing configs
# Path to the Android keystore file used to sign the release build
export GODOT_ANDROID_SIGN_KEYSTORE=''
# Key alias used for signing the release build
export GODOT_ANDROID_KEYSTORE_ALIAS=''
# Password for the key used for signing the release build
export GODOT_ANDROID_SIGN_PASSWORD=''

66
make_tarball.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/bin/sh
if [ ! -e "version.py" ]; then
echo "This script should be ran from the root folder of the Godot repository."
exit 1
fi
while getopts "h?sv:g:" opt; do
case "$opt" in
h|\?)
echo "Usage: $0 [OPTIONS...]"
echo
echo " -s script friendly file name (godot.tar.gz)"
echo " -v godot version for file name (e.g. 4.0-stable)"
echo " -g git treeish to archive (e.g. master)"
echo
exit 1
;;
s)
script_friendly_name=1
;;
v)
godot_version=$OPTARG
;;
g)
git_treeish=$OPTARG
;;
esac
done
if [ ! -z "$git_treeish" ]; then
HEAD=$(git rev-parse $git_treeish)
else
HEAD=$(git rev-parse HEAD)
fi
if [ ! -z "$script_friendly_name" ]; then
NAME=godot
else
if [ ! -z "$godot_version" ]; then
NAME=godot-$godot_version
else
NAME=godot-$HEAD
fi
fi
CURDIR=$(pwd)
TMPDIR=$(mktemp -d -t godot-XXXXXX)
echo "Generating tarball for revision $HEAD with folder name '$NAME'."
echo
echo "The tarball will be written to the parent folder:"
echo " $(dirname $CURDIR)/$NAME.tar.gz"
git archive $HEAD --prefix=$NAME/ -o $TMPDIR/$NAME.tar
# Adding custom .git/HEAD to tarball so that we can generate VERSION_HASH.
cd $TMPDIR
mkdir -p $NAME/.git
echo $HEAD > $NAME/.git/HEAD
tar -uf $NAME.tar $NAME
cd $CURDIR
gzip -c $TMPDIR/$NAME.tar > ../$NAME.tar.gz
rm -rf $TMPDIR

114
publish-release.sh Executable file
View File

@@ -0,0 +1,114 @@
#!/bin/bash
set -e
# Log output to a file automatically.
exec > >(tee -a "out/logs/publish-release") 2>&1
# Config
# For upload tools and signing/release keys.
source ./config.sh
godot_version=""
skip_stable=0
draft_arg=""
while getopts "h?v:sd" opt; do
case "$opt" in
h|\?)
echo "Usage: $0 [OPTIONS...]"
echo
echo " -v godot version (e.g: 3.2-stable) [mandatory]"
echo " -s don't run stable specific steps"
echo " -d publish as draft release on GitHub"
echo
exit 1
;;
v)
godot_version=$OPTARG
;;
s)
skip_stable=1
;;
d)
draft_arg="-d"
;;
esac
done
if [ -z "${godot_version}" ]; then
echo "Mandatory argument -v missing."
exit 1
fi
basedir=$(pwd)
reldir=${basedir}/releases/${godot_version}
# Confirm
IFS=- read version status <<< "${godot_version}"
echo "Publishing Godot ${version} ${status}."
read -p "Is this correct (y/n)? " choice
case "$choice" in
y|Y ) echo "yes";;
n|N ) echo "No, aborting."; exit 0;;
* ) echo "Invalid choice, aborting."; exit 1;;
esac
template_version=${version}.${status}
# Config checks for stable releases.
if [ "${status}" == "stable" -a "${skip_stable}" == "0" ]; then
echo "Publishing a stable release. Checking that configuration is valid to perform stable release specific steps."
read -p "Enter personal access token (GH_TOKEN) for godotengine/godot: " personal_gh_token
if [[ "${personal_gh_token}" != "github_pat_"* ]]; then
echo "Provided personal access token should start with 'github_pat', aborting."
exit 1
fi
if ! gh api repos/godotengine/godot/git/refs/tags | grep -q ${godot_version}; then
echo "The tag '${godot_version}' does not exist in godotengine/godot, aborting."
echo "Push commits and create it manually before running this script."
exit 1
fi
fi
# Upload to GitHub godot-builds
echo "Uploading release to to godotengine/godot-builds repository."
if [ -z "${GODOT_BUILDS_PATH}" ]; then
echo "Missing path to godotengine/godot-builds clone in config.sh, necessary to upload releases. Aborting."
exit 1
fi
${GODOT_BUILDS_PATH}/tools/upload-github.sh -v ${version} -f ${status} ${draft_arg}
# Stable release only
if [ "${status}" == "stable" -a "${skip_stable}" == "0" ]; then
namever=Godot_v${godot_version}
echo "Uploading stable release to main GitHub repository."
export GH_TOKEN=${personal_gh_token}
pushd git
# Get release details from existing godot-builds release.
release_info=$(gh release view ${godot_version} --repo godotengine/godot-builds --json name,body)
release_title=$(echo "$release_info" | jq -r '.name')
release_desc=$(echo "$release_info" | jq -r '.body')
gh release create ${godot_version} --repo godotengine/godot --title "$release_title" --notes "$release_desc" ${draft_arg}
gh release upload ${godot_version} ${reldir}/[Gg]*
# Concatenate SHA sums.
cp ${reldir}/SHA512-SUMS.txt .
gh release upload ${godot_version} SHA512-SUMS.txt
rm SHA512-SUMS.txt
popd
echo "All stable release upload steps done."
fi
echo "All publishing steps done. Check out/logs/publish-release to double check that all steps succeeded."