diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b465dab4..5ca8c37e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,12 @@ jobs: runs-on: [self-hosted, macOS] steps: + # The self-hosted runner lives under the machine owner's home + # directory; mask it first so absolute paths in every later step's + # output show up as *** in the public workflow logs. + - name: Mask runner paths + run: echo "::add-mask::$HOME" + - name: Checkout uses: actions/checkout@v4 with: @@ -170,6 +176,11 @@ jobs: set -euo pipefail scripts/build_android.sh --version "${{ steps.ver.outputs.version }}" + - name: Install xcbeautify + run: | + set -euo pipefail + brew list xcbeautify >/dev/null 2>&1 || brew install xcbeautify + - name: Build iOS run: | set -euo pipefail diff --git a/mobile/ios/patch_love_src.py b/mobile/ios/patch_love_src.py index e3b87fe2..9c0fa0ac 100644 --- a/mobile/ios/patch_love_src.py +++ b/mobile/ios/patch_love_src.py @@ -39,6 +39,7 @@ WRAP_INCLUDES = """ #ifdef LOVE_IOS #include #include +#include #include "filesystem/Filesystem.h" #endif """ % MARKER @@ -53,8 +54,12 @@ WRAP_FUNCS = """ #ifdef LOVE_IOS static const char *gr_saveDirectory() { + static std::string saveDirectory; auto fs = Module::getInstance(Module::M_FILESYSTEM); - return fs != nullptr ? fs->getSaveDirectory() : ""; + if (fs == nullptr) + return ""; + saveDirectory = fs->getSaveDirectory(); + return saveDirectory.c_str(); } static int gr_callBridge(lua_State *L, const char *className, diff --git a/scripts/build_ios.sh b/scripts/build_ios.sh index 7011df0e..5e8adc9d 100755 --- a/scripts/build_ios.sh +++ b/scripts/build_ios.sh @@ -543,11 +543,27 @@ run_xcodebuild() { say "xcodebuild love-ios ($config / $sdk)" set +e - ( - cd "$XCODE_DIR" - xcodebuild "${args[@]}" - ) - local xc_status=$? + local xc_status + if command -v xcbeautify >/dev/null 2>&1; then + ( + cd "$XCODE_DIR" + xcodebuild "${args[@]}" + ) 2>&1 | xcbeautify + local pipeline_status=("${PIPESTATUS[@]}") + local xcode_status=${pipeline_status[0]} + local beautify_status=${pipeline_status[1]} + if [ "$xcode_status" -ne 0 ]; then + xc_status=$xcode_status + else + xc_status=$beautify_status + fi + else + ( + cd "$XCODE_DIR" + xcodebuild "${args[@]}" + ) + xc_status=$? + fi set -e if [ "$xc_status" -ne 0 ]; then fail "xcodebuild failed (exit $xc_status).