Trouble Building Godot Engine App

I’m having trouble building my Godot Engine game, Carpe Diem, on F-Droid. I’ve looked at build scripts for previously published Godot games and then wrote one for Carpe Diem. After a number of revisions I’ve been able to build Godot Engine, 3.3.2, and the Android export template, but when running the export release command for Carpe Diem Godot seems to stop responding.

Running it with the verbose option indicates that the project is loaded as well as the project assets, but after the assets are loaded no more output is printed, Carpe Diem is not exported and Godot never exits, but rather just sits there until the job times out.

Hopefully someone can offer some assistance here. I’ve posted at the Godot forums, but haven’t received any replies. Carpe Diem builds on my tablet computer in about a minute or two without any problems.

The failed merge request can be found at https://gitlab.com/Tryder/fdroiddata/-/merge_requests/1

And the yaml:


Categories:
  - Games
License: 0BSD
AuthorName: Adam T. Ryder
AuthorEmail: tryder@inventati.org
WebSite: https://www.inventati.org/1337gallery/games/carpediem/carpediem.html
SourceCode: https://github.com/ATryder/CarpeDiem
IssueTracker: https://github.com/ATryder/CarpeDiem/issues
Changelog: https://github.com/ATryder/CarpeDiem/releases

AutoName: Carpe Diem

RepoType: git
Repo: https://github.com/ATryder/CarpeDiem.git

Builds:
  - versionName: 1.0.7
    versionCode: 10
    commit: db233c34c02963bcfb0f34590c876f2925a91507
    timeout: 36000
    sudo:
      - apt-get update || apt-get update
      - apt-get install -y g++
    output: carpediem.apk
    srclibs:
      - Godot@3.3.2-stable
    prebuild:
      - mkdir game
      - bash -O extglob -c "mv !(game) game"
      - mv ./.[!.]* game
      - cp -R $$Godot$$ godot
      - rm godot/misc/dist/ios_xcode/libgodot.iphone.release.fat.a
      - rm godot/misc/dist/ios_xcode/libgodot.iphone.debug.fat.a
      - sed -i "/String\[] mavenRepos = getGodotPluginsMavenRepos()/,+7 d" ./godot/platform/android/java/app/build.gradle
    build:
      - cd godot
      - sed -i "s|valid = false|valid = true|" ./platform/android/export/export.cpp
      - mkdir -p ../fake_user_home/.config/godot/
      - cp ../game/editor_settings-3.tres ../fake_user_home/.config/godot/
      - mkdir -p ../fake_user_home/.android/
      - pushd ../fake_user_home
      - export HOME=$PWD
      - popd
      - scons -j `nproc` platform=server unix_global_settings_path=".."
      - export ANDROID_NDK_ROOT=$$NDK$$
      - scons -j `nproc` platform=android target=release android_arch=armv7
      - pushd platform/android/java/
      - gradle generateGodotTemplates
      - popd
      - mkdir -p ../fake_user_home/.local/share/godot/templates/3.3.2.stable/
      - echo "3.3.2.stable" > ../fake_user_home/.local/share/godot/templates/3.3.2.stable/version.txt
      - cp ./bin/android_release.apk ../fake_user_home/.local/share/godot/templates/3.3.2.stable/
      - cp ./bin/android_source.zip ../fake_user_home/.local/share/godot/templates/3.3.2.stable/
      - cd ../game
      - sed -i "s|architectures/arm64-v8a=true|architectures/arm64-v8a=false|" export_presets.cfg
      - sed -i "s|architectures/x86=true|architectures/x86=false|" export_presets.cfg
      - sed -i "s|architectures/x86_64=true|architectures/x86_64=false|" export_presets.cfg
      - sed -i "s|package/signed=true|package/signed=false|" export_presets.cfg
      - ../godot/bin/godot_server.x11.tools.* --verbose --export Android ../carpediem.apk
    ndk: r21e

AutoUpdateMode: Version v%v
UpdateCheckMode: Tags
CurrentVersion: 1.0.7
CurrentVersionCode: 10

One of the other build scripts I found, for Godot 3.2.3, includes the debug export template as well as the release version. I’ve removed that as it seemed unnecessary, but I did try it with building the debug template in addition to the release template and came up with the same results.

Thanks

Try to open a MR at fdroiddata directly, it will be discussed here.

I think you tried to look at the Godot 3 recipes already existing like you said?

I didn’t realize I created an MR to merge into my own master branch rather than yours :man_facepalming:. I went ahead and created a new MR, https://gitlab.com/fdroid/fdroiddata/-/merge_requests/9550.

I had already looked at some of the previously existing Godot recipes, I created mine based off of the one for Two Player Battle which uses the newest version of Godot among the other options, 3.2.3. I’m using Godot 3.3.2 and I’m not sure what’s changed that might effect the export in F-Droid.

I did try a couple new things last night such as using CLang rather than G++ to build Godot and using the target=release_debug option, but had the same results. When running the export command it loads the project and the assets then just hangs until the job times out.

I guess it didn’t like the metadata folder structure. I was using just metadata/en-US, same folder structure used in TEdit, but F-DroidBot didn’t like it this time so I changed it to fastlane/metadata/android/en-US.

The build job is throwing a device is out of storage space error now when trying to copy the android export template over to the templates directory. On my system the android export template is only 38.6MiB. The Godot executable is 72.6MiB and the Carpe Diem project is 1.2GiB.

I changed all the copy commands in the build script to move commands and this time it made it to the export command, but again just sat there for an hour until the job timed out.

Also F-DroidBot is still complaining that I don’t jave fastlane set up in my repo, but I do. The repo is at https://www.github.com/ATryder/CarpeDiem

@Tryder The fdroid build job did not timed out, but rather touched the GitLab CI time limit. Please go to https://gitlab.com/Tryder/fdroiddata/-/settings/ci_cd, expand General pipelines and set Timeout to something >3h.

Thanks for your reply. I already have my CI time limit set greater than 3 hours, but three hours appears to be the maximum time limit.

Although I’m not sure the time limit is the issue. Godot engine and the android export template take about two hours to build in the pipeline, after that the final export command for Carpe Diem is executed. It takes a second or two to load the project and all it’s assets, but then it sits there with no additional output for an hour until the time limit is reached. On my tablet computer with an Intel Atom processor it only takes less than two minutes to export Carpe Diem.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.