From a1ff58b155219bcfe65c26cab1504cb9d507337f Mon Sep 17 00:00:00 2001 From: foxtacles Date: Sun, 17 May 2026 14:52:22 -0700 Subject: [PATCH] ci: suffix debug-build artifacts to avoid release filename collision (#808) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: suffix debug-build artifacts to avoid release filename collision `actions/download-artifact@v8` with `merge-multiple: true` extracts every artifact into the same Release/ directory in parallel. Release and Debug builds of the same platform produced identical CPack/AppImage filenames (isle-0.1-Windows-x64.zip, isle-0.1-Linux-x64.tar.gz, Isle_Portable-x86_64.AppImage), so the parallel writes raced on the same path and intermittently produced corrupt archives in the release. Append `-debug` to CPACK_PACKAGE_FILE_NAME when ISLE_DEBUG is set, and rename the AppImage in the same case, so each matrix entry contributes a unique filename to the release. Fixes #646 * ci: drop Debug matrix entries and replace ISLE_DEBUG with ISLE_CITRO3D_DEBUG The Linux (Debug) and MSVC (x64 Debug) jobs only differed from their Release counterparts in -DISLE_DEBUG=ON. ISLE_DEBUG was only consulted in one place: miniwin/CMakeLists.txt for the Nintendo 3DS citro3d library selection (citro3dd vs citro3d) — which the Nintendo 3DS matrix row never enabled. So Linux (Debug)/MSVC (x64 Debug) produced binaries identical to their Release builds and collided with them in the release artifact merge, which is what corrupted #646. Drop the two duplicate matrix entries and the now-unused ISLE_DEBUG plumbing, and reintroduce the 3DS knob as ISLE_CITRO3D_DEBUG scoped to its actual use site. Reverts the -debug filename suffix added in the previous commit; with the duplicates gone there is nothing left to disambiguate. Fixes #646 * Remove leftover ISLE_DEBUG=OFF from emscripten Dockerfile and flatpak manifest These passed -DISLE_DEBUG=OFF, which is now an unknown CMake variable. --- .github/workflows/ci.yml | 4 ---- docker/emscripten/Dockerfile | 2 +- miniwin/CMakeLists.txt | 3 ++- packaging/linux/flatpak/org.legoisland.Isle.json | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3810204f..a1fb48cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,10 +38,8 @@ jobs: matrix: include: - { name: 'Linux', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: true, linux: true, werror: true, clang-tidy: true, build-assets: true } - - { name: 'Linux (Debug)', os: 'ubuntu-latest', generator: 'Ninja', dx5: false, config: true, linux: true, werror: true, clang-tidy: true, debug: true } - { name: 'MSVC (x86)', os: 'windows-latest', generator: 'Ninja', dx5: true, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_x86' } - { name: 'MSVC (x64)', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64' } - - { name: 'MSVC (x64 Debug)', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64', debug: true } - { name: 'MSVC (arm64)', os: 'windows-latest', generator: 'Ninja', dx5: false, config: false, msvc: true, werror: false, clang-tidy: false, vc-arch: 'amd64_arm64' } - { name: 'msys2 mingw64', os: 'windows-latest', generator: 'Ninja', dx5: false, config: true, mingw: true, werror: true, clang-tidy: true, msystem: 'mingw64', msys-env: 'mingw-w64-x86_64', shell: 'msys2 {0}' } - { name: 'macOS', os: 'macos-latest', generator: 'Ninja', dx5: false, config: true, brew: true, werror: true, clang-tidy: false } @@ -180,7 +178,6 @@ jobs: -DISLE_BUILD_CONFIG=${{ !!matrix.config }} \ -DENABLE_CLANG_TIDY=${{ !!matrix.clang-tidy }} \ -DISLE_WERROR=${{ !!matrix.werror }} \ - -DISLE_DEBUG=${{ matrix.debug || 'OFF' }} \ -Werror=dev" - name: Configure (CMake) @@ -194,7 +191,6 @@ jobs: -DISLE_BUILD_ASSETS=${{ !!matrix.build-assets }} \ -DENABLE_CLANG_TIDY=${{ !!matrix.clang-tidy }} \ -DISLE_WERROR=${{ !!matrix.werror }} \ - -DISLE_DEBUG=${{ matrix.debug || 'OFF' }} \ -Werror=dev - name: Build (CMake) diff --git a/docker/emscripten/Dockerfile b/docker/emscripten/Dockerfile index 08a9fb87..51e88edf 100644 --- a/docker/emscripten/Dockerfile +++ b/docker/emscripten/Dockerfile @@ -31,7 +31,7 @@ COPY --chown=emscripten:emscripten packaging/ ./packaging/ COPY --chown=emscripten:emscripten extensions/ ./extensions/ COPY --chown=emscripten:emscripten CMakeLists.txt . -RUN emcmake cmake -S . -B build -DISLE_BUILD_CONFIG=OFF -DISLE_DEBUG=OFF -DCMAKE_BUILD_TYPE=Release && \ +RUN emcmake cmake -S . -B build -DISLE_BUILD_CONFIG=OFF -DCMAKE_BUILD_TYPE=Release && \ emmake cmake --build build -j 32 RUN echo "Fetching isle.pizza frontend..."; \ diff --git a/miniwin/CMakeLists.txt b/miniwin/CMakeLists.txt index 1be54f00..43601668 100644 --- a/miniwin/CMakeLists.txt +++ b/miniwin/CMakeLists.txt @@ -111,7 +111,8 @@ if(VITA) endif() if(NINTENDO_3DS) - if(ISLE_DEBUG) + option(ISLE_CITRO3D_DEBUG "Link the debug build of citro3d (citro3dd) on Nintendo 3DS" OFF) + if(ISLE_CITRO3D_DEBUG) find_library(CITRO3D_LIBRARY NAMES citro3dd) else() find_library(CITRO3D_LIBRARY NAMES citro3d) diff --git a/packaging/linux/flatpak/org.legoisland.Isle.json b/packaging/linux/flatpak/org.legoisland.Isle.json index 229ba424..02b11ec0 100644 --- a/packaging/linux/flatpak/org.legoisland.Isle.json +++ b/packaging/linux/flatpak/org.legoisland.Isle.json @@ -21,8 +21,7 @@ "name": "isle", "buildsystem": "cmake-ninja", "config-opts": [ - "-DCMAKE_BUILD_TYPE=RelWithDebInfo", - "-DISLE_DEBUG=OFF" + "-DCMAKE_BUILD_TYPE=RelWithDebInfo" ], "sources": [ {