From e26d9fb0df898553042ae83162771b3410014a0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 21:19:29 +0000 Subject: [PATCH 02/28] Update Linux workflow packaging Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 64 +++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index adcdf726a..0e4f2b6c2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -9,40 +9,50 @@ jobs: linux: name: Linux runs-on: ubuntu-latest + container: akkadius/eqemu-server:v16 steps: - name: Checkout source - uses: actions/checkout@v5 + uses: actions/checkout@v4 with: - submodules: recursive + submodules: true + fetch-depth: 0 - - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ runner.os }}-ccache - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y build-essential ninja-build ccache uuid-dev - - - name: Configure - run: | - cmake -S . -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DEQEMU_BUILD_TESTS=ON \ - -DEQEMU_BUILD_LOGIN=ON \ - -DEQEMU_BUILD_LUA=ON \ - -DEQEMU_BUILD_PERL=ON \ - -DEQEMU_BUILD_CLIENT_FILES=ON + - name: Mark workspace safe + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: Build - run: cmake --build build --parallel + working-directory: ${{ github.workspace }} + run: | + mkdir -p build && cd build + cmake -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + make -j"$(nproc)" - - name: Test - working-directory: build - run: ./bin/tests + - name: Package linux binaries + working-directory: ${{ github.workspace }} + run: | + install -d /tmp/bin + for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do + cp "build/bin/${bin}" "/tmp/bin/${bin}" + chmod +x "/tmp/bin/${bin}" + done + tar -czf "$GITHUB_WORKSPACE/eqemu-linux-bins.tgz" -C /tmp/bin . + + - name: Smoke test linux binaries + working-directory: ${{ github.workspace }} + run: | + mkdir -p /tmp/bin + tar -xzf eqemu-linux-bins.tgz -C /tmp/bin + if ldd /tmp/bin/world | grep -q "not found"; then + echo "Missing shared libraries" + exit 1 + fi + /tmp/bin/world --help + + - name: Upload linux binaries + uses: actions/upload-artifact@v4 + with: + name: linux-bins + path: ${{ github.workspace }}/eqemu-linux-bins.tgz windows: name: Windows From 94524416a7f1f229517644add84e0d17bbf875ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 21:20:08 +0000 Subject: [PATCH 03/28] Clarify packaging temp dir Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0e4f2b6c2..d39aa7efc 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,12 +30,12 @@ jobs: - name: Package linux binaries working-directory: ${{ github.workspace }} run: | - install -d /tmp/bin + install -d /tmp/package-bin for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do - cp "build/bin/${bin}" "/tmp/bin/${bin}" - chmod +x "/tmp/bin/${bin}" + cp "build/bin/${bin}" "/tmp/package-bin/${bin}" + chmod +x "/tmp/package-bin/${bin}" done - tar -czf "$GITHUB_WORKSPACE/eqemu-linux-bins.tgz" -C /tmp/bin . + tar -czf "$GITHUB_WORKSPACE/eqemu-linux-bins.tgz" -C /tmp/package-bin . - name: Smoke test linux binaries working-directory: ${{ github.workspace }} From aa867a8fb30f725ac18192a55fc0df5eb63dd608 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 21:20:46 +0000 Subject: [PATCH 04/28] Improve workflow smoke test checks Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d39aa7efc..f98558230 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -32,6 +32,10 @@ jobs: run: | install -d /tmp/package-bin for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do + if [ ! -f "build/bin/${bin}" ]; then + echo "Missing binary: ${bin}" + exit 1 + fi cp "build/bin/${bin}" "/tmp/package-bin/${bin}" chmod +x "/tmp/package-bin/${bin}" done @@ -42,8 +46,10 @@ jobs: run: | mkdir -p /tmp/bin tar -xzf eqemu-linux-bins.tgz -C /tmp/bin - if ldd /tmp/bin/world | grep -q "not found"; then - echo "Missing shared libraries" + missing_libs="$(ldd /tmp/bin/world | grep "not found" || true)" + if [ -n "$missing_libs" ]; then + echo "Missing shared libraries:" + echo "$missing_libs" exit 1 fi /tmp/bin/world --help From b1ac77937b33e5102eae6c83c79e98ec279b82c9 Mon Sep 17 00:00:00 2001 From: Vayle <76063792+Valorith@users.noreply.github.com> Date: Sat, 24 Jan 2026 18:19:13 -0500 Subject: [PATCH 05/28] Update .github/workflows/build.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f98558230..b9c0a88b9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -12,7 +12,7 @@ jobs: container: akkadius/eqemu-server:v16 steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: true fetch-depth: 0 From 4484f9204f6087d5000cd0ca62429d6427f1bd93 Mon Sep 17 00:00:00 2001 From: Vayle <76063792+Valorith@users.noreply.github.com> Date: Sat, 24 Jan 2026 18:19:59 -0500 Subject: [PATCH 06/28] Update .github/workflows/build.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b9c0a88b9..6dcdd1177 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,7 +14,7 @@ jobs: - name: Checkout source uses: actions/checkout@v5 with: - submodules: true + submodules: recursive fetch-depth: 0 - name: Mark workspace safe From 6648ec2f03fd2e43a7da75164e6866d2a71d1812 Mon Sep 17 00:00:00 2001 From: Vayle <76063792+Valorith@users.noreply.github.com> Date: Sat, 24 Jan 2026 18:21:47 -0500 Subject: [PATCH 07/28] Update .github/workflows/build.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6dcdd1177..5d770d884 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -52,7 +52,7 @@ jobs: echo "$missing_libs" exit 1 fi - /tmp/bin/world --help + /tmp/bin/world --help || { echo "'world --help' failed"; exit 1; } - name: Upload linux binaries uses: actions/upload-artifact@v4 From e414975fc504c5858d1271d7bbe43ccdebfae14f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:29:19 +0000 Subject: [PATCH 08/28] Restore Linux tests and user mapping Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5d770d884..5aee041f5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -9,7 +9,9 @@ jobs: linux: name: Linux runs-on: ubuntu-latest - container: akkadius/eqemu-server:v16 + container: + image: akkadius/eqemu-server:v16 + options: --user 1001:1001 steps: - name: Checkout source uses: actions/checkout@v5 @@ -24,9 +26,13 @@ jobs: working-directory: ${{ github.workspace }} run: | mkdir -p build && cd build - cmake -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo .. make -j"$(nproc)" + - name: Test + working-directory: build + run: ./bin/tests + - name: Package linux binaries working-directory: ${{ github.workspace }} run: | From dd9fa50bb615fca64284358e4eb5b6b94ccb96ec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:29:49 +0000 Subject: [PATCH 09/28] Use absolute test working directory Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5aee041f5..ef8581945 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,7 +30,7 @@ jobs: make -j"$(nproc)" - name: Test - working-directory: build + working-directory: ${{ github.workspace }}/build run: ./bin/tests - name: Package linux binaries From 5b88ff2455bf988f24d223f592bb1a7440ccce83 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:35:45 +0000 Subject: [PATCH 10/28] Run container as root in Linux job Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ef8581945..451b703fd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest container: image: akkadius/eqemu-server:v16 - options: --user 1001:1001 + options: --user 0 steps: - name: Checkout source uses: actions/checkout@v5 From 44a044684f14902fb56854b116268b5ed4062c23 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:38:25 +0000 Subject: [PATCH 11/28] Document root requirement for container Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 451b703fd..a53052e15 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,6 +11,7 @@ jobs: runs-on: ubuntu-latest container: image: akkadius/eqemu-server:v16 + # Run as root to allow GitHub Actions runner file command writes in the container. options: --user 0 steps: - name: Checkout source From f863c73339455afda0230ac8e7737a258e334351 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:51:50 +0000 Subject: [PATCH 12/28] Restore build flags and add ccache Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a53052e15..e08ba5588 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,7 +18,6 @@ jobs: uses: actions/checkout@v5 with: submodules: recursive - fetch-depth: 0 - name: Mark workspace safe run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -27,7 +26,7 @@ jobs: working-directory: ${{ github.workspace }} run: | mkdir -p build && cd build - cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DEQEMU_BUILD_PERL=ON -DEQEMU_BUILD_CLIENT_FILES=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .. make -j"$(nproc)" - name: Test @@ -53,12 +52,14 @@ jobs: run: | mkdir -p /tmp/bin tar -xzf eqemu-linux-bins.tgz -C /tmp/bin - missing_libs="$(ldd /tmp/bin/world | grep "not found" || true)" - if [ -n "$missing_libs" ]; then - echo "Missing shared libraries:" - echo "$missing_libs" - exit 1 - fi + for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do + missing_libs="$(ldd "/tmp/bin/${bin}" | grep "not found" || true)" + if [ -n "$missing_libs" ]; then + echo "Missing shared libraries for ${bin}:" + echo "$missing_libs" + exit 1 + fi + done /tmp/bin/world --help || { echo "'world --help' failed"; exit 1; } - name: Upload linux binaries From d0b6f5f37a6a022a6f75a3229001c2d8384ef613 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:55:31 +0000 Subject: [PATCH 13/28] Keep build workflow to build and test only Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e08ba5588..bd29cac95 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -33,41 +33,6 @@ jobs: working-directory: ${{ github.workspace }}/build run: ./bin/tests - - name: Package linux binaries - working-directory: ${{ github.workspace }} - run: | - install -d /tmp/package-bin - for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do - if [ ! -f "build/bin/${bin}" ]; then - echo "Missing binary: ${bin}" - exit 1 - fi - cp "build/bin/${bin}" "/tmp/package-bin/${bin}" - chmod +x "/tmp/package-bin/${bin}" - done - tar -czf "$GITHUB_WORKSPACE/eqemu-linux-bins.tgz" -C /tmp/package-bin . - - - name: Smoke test linux binaries - working-directory: ${{ github.workspace }} - run: | - mkdir -p /tmp/bin - tar -xzf eqemu-linux-bins.tgz -C /tmp/bin - for bin in world zone ucs loginserver queryserv shared_memory eqlaunch; do - missing_libs="$(ldd "/tmp/bin/${bin}" | grep "not found" || true)" - if [ -n "$missing_libs" ]; then - echo "Missing shared libraries for ${bin}:" - echo "$missing_libs" - exit 1 - fi - done - /tmp/bin/world --help || { echo "'world --help' failed"; exit 1; } - - - name: Upload linux binaries - uses: actions/upload-artifact@v4 - with: - name: linux-bins - path: ${{ github.workspace }}/eqemu-linux-bins.tgz - windows: name: Windows runs-on: windows-latest From b2c57be5d81b12ceb1cbb61b0d019855e1238f0e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 23:59:00 +0000 Subject: [PATCH 14/28] Tune ccache key and root note Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index bd29cac95..0471176e6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest container: image: akkadius/eqemu-server:v16 - # Run as root to allow GitHub Actions runner file command writes in the container. + # Run as root to avoid EACCES on GitHub Actions runner file command writes in the container. options: --user 0 steps: - name: Checkout source @@ -19,6 +19,11 @@ jobs: with: submodules: recursive + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ runner.os }}-ccache-${{ hashFiles('CMakeLists.txt', '.github/workflows/build.yaml') }} + - name: Mark workspace safe run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -26,7 +31,16 @@ jobs: working-directory: ${{ github.workspace }} run: | mkdir -p build && cd build - cmake -DEQEMU_BUILD_TESTS=ON -DEQEMU_BUILD_LOGIN=ON -DEQEMU_BUILD_LUA=ON -DEQEMU_BUILD_PERL=ON -DEQEMU_BUILD_CLIENT_FILES=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .. + cmake \ + -DEQEMU_BUILD_TESTS=ON \ + -DEQEMU_BUILD_LOGIN=ON \ + -DEQEMU_BUILD_LUA=ON \ + -DEQEMU_BUILD_PERL=ON \ + -DEQEMU_BUILD_CLIENT_FILES=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + .. make -j"$(nproc)" - name: Test From cffdaf2373d235def12229ab5caa009d2b10f9e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:07:01 +0000 Subject: [PATCH 15/28] Align release workflow with container build Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 05a11bd56..2197069eb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -11,12 +11,19 @@ jobs: build-linux: name: Build Linux runs-on: ubuntu-latest + container: + image: akkadius/eqemu-server:v16 + # Run as root to avoid EACCES on GitHub Actions runner file command writes in the container. + options: --user 0 steps: - name: Checkout source uses: actions/checkout@v5 with: submodules: recursive + - name: Mark workspace safe + run: git config --global --add safe.directory "$GITHUB_WORKSPACE" + - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: @@ -24,8 +31,8 @@ jobs: - name: Install dependencies run: | - sudo apt-get update - sudo apt-get install -y build-essential ninja-build ccache uuid-dev + apt-get update + apt-get install -y build-essential ninja-build ccache uuid-dev - name: Configure run: | From f959060c5ac1f7319c4705e9a5d9793aa7b1a578 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:18:27 +0000 Subject: [PATCH 16/28] Remove redundant release deps install Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2197069eb..c421d42d4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -29,11 +29,6 @@ jobs: with: key: ${{ runner.os }}-release-ccache-${{ hashFiles('.github/workflows/release.yaml') }} - - name: Install dependencies - run: | - apt-get update - apt-get install -y build-essential ninja-build ccache uuid-dev - - name: Configure run: | cmake -S . -B build -G Ninja \ From 6d519efdef4770920c1c9530a65f5722a073a9a1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:25:23 +0000 Subject: [PATCH 17/28] Re-add release dependencies and package libs Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c421d42d4..49af7ea26 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -29,6 +29,11 @@ jobs: with: key: ${{ runner.os }}-release-ccache-${{ hashFiles('.github/workflows/release.yaml') }} + - name: Install dependencies + run: | + apt-get update + apt-get install -y build-essential ninja-build ccache uuid-dev + - name: Configure run: | cmake -S . -B build -G Ninja \ @@ -69,6 +74,13 @@ jobs: zip -uj eqemu-server-linux-x64.zip "$f" fi done + + # Add shared libraries needed for runtime + for f in *.so*; do + if [ -f "$f" ]; then + zip -uj eqemu-server-linux-x64.zip "$f" + fi + done # Verify zip file was created and contains files if [ ! -f eqemu-server-linux-x64.zip ]; then From 246138ac51bb5a238cdfb5d3f8259bd3021d3b3f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:26:54 +0000 Subject: [PATCH 18/28] Package shared libs from build tree Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 49af7ea26..849ed16e6 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -75,12 +75,11 @@ jobs: fi done - # Add shared libraries needed for runtime - for f in *.so*; do - if [ -f "$f" ]; then - zip -uj eqemu-server-linux-x64.zip "$f" - fi - done + # Add shared libraries needed for runtime (from build/bin and build/libs) + find .. -type f -name "*.so*" \( -path "../bin/*" -o -path "../libs/*" \) -print0 | \ + while IFS= read -r -d '' lib; do + zip -uj eqemu-server-linux-x64.zip "$lib" + done # Verify zip file was created and contains files if [ ! -f eqemu-server-linux-x64.zip ]; then From c5fe0c20b81970496ea0d1b72b672a856ccfe233 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:28:16 +0000 Subject: [PATCH 19/28] Package Linux shared libs in release Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 849ed16e6..3a170ceee 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -31,8 +31,8 @@ jobs: - name: Install dependencies run: | - apt-get update - apt-get install -y build-essential ninja-build ccache uuid-dev + apt-get update -qq + DEBIAN_FRONTEND=noninteractive apt-get install -y -qq build-essential ninja-build ccache uuid-dev - name: Configure run: | @@ -69,16 +69,17 @@ jobs: fi # Add all executable files (excluding tests) + ZIP_CMD="zip -uj -j eqemu-server-linux-x64.zip" for f in *; do if [ -f "$f" ] && [ -x "$f" ] && [ "$f" != "tests" ]; then - zip -uj eqemu-server-linux-x64.zip "$f" + $ZIP_CMD "$f" fi done # Add shared libraries needed for runtime (from build/bin and build/libs) - find .. -type f -name "*.so*" \( -path "../bin/*" -o -path "../libs/*" \) -print0 | \ + find . ../libs -type f -name "*.so*" -print0 | \ while IFS= read -r -d '' lib; do - zip -uj eqemu-server-linux-x64.zip "$lib" + $ZIP_CMD "$lib" done # Verify zip file was created and contains files From 907ac747ebceb72e76791b355fa4db5c6f8aba19 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:29:12 +0000 Subject: [PATCH 20/28] Refine Linux shared lib packaging Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3a170ceee..632525778 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -69,7 +69,7 @@ jobs: fi # Add all executable files (excluding tests) - ZIP_CMD="zip -uj -j eqemu-server-linux-x64.zip" + ZIP_CMD="zip -uj eqemu-server-linux-x64.zip" for f in *; do if [ -f "$f" ] && [ -x "$f" ] && [ "$f" != "tests" ]; then $ZIP_CMD "$f" @@ -77,10 +77,12 @@ jobs: done # Add shared libraries needed for runtime (from build/bin and build/libs) - find . ../libs -type f -name "*.so*" -print0 | \ - while IFS= read -r -d '' lib; do - $ZIP_CMD "$lib" - done + if [ -d ../libs ]; then + find . ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ + while IFS= read -r -d '' lib; do + $ZIP_CMD "$lib" + done + fi # Verify zip file was created and contains files if [ ! -f eqemu-server-linux-x64.zip ]; then From 56266f6f217343bac9b12576995c4ad620b31420 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:30:08 +0000 Subject: [PATCH 21/28] Limit shared lib search to build libs Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 632525778..d2879d4e2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -78,7 +78,7 @@ jobs: # Add shared libraries needed for runtime (from build/bin and build/libs) if [ -d ../libs ]; then - find . ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ + find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ while IFS= read -r -d '' lib; do $ZIP_CMD "$lib" done From 2b60bda5b7443442e84131355701b590df78387d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:31:35 +0000 Subject: [PATCH 22/28] Guard shared lib packaging Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d2879d4e2..bea86a9c4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -78,10 +78,17 @@ jobs: # Add shared libraries needed for runtime (from build/bin and build/libs) if [ -d ../libs ]; then - find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ - while IFS= read -r -d '' lib; do - $ZIP_CMD "$lib" - done + lib_count="$(find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) | wc -l)" + if [ "$lib_count" -gt 0 ]; then + find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ + while IFS= read -r -d '' lib; do + $ZIP_CMD "$lib" + done + else + echo "No shared libraries found in build/libs" + fi + else + echo "No build/libs directory found; skipping shared library packaging" fi # Verify zip file was created and contains files From d27e9014216f4eca78a73781e5de46d2f380e697 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:33:16 +0000 Subject: [PATCH 23/28] Improve Linux lib packaging Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bea86a9c4..4f348dd69 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -68,21 +68,32 @@ jobs: exit 1 fi + zip_add() { + zip -uj eqemu-server-linux-x64.zip "$1" + } + # Add all executable files (excluding tests) - ZIP_CMD="zip -uj eqemu-server-linux-x64.zip" for f in *; do if [ -f "$f" ] && [ -x "$f" ] && [ "$f" != "tests" ]; then - $ZIP_CMD "$f" + zip_add "$f" fi done # Add shared libraries needed for runtime (from build/bin and build/libs) + bin_lib_count="$(find . -maxdepth 1 -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) | wc -l)" + if [ "$bin_lib_count" -gt 0 ]; then + find . -maxdepth 1 -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ + while IFS= read -r -d '' lib; do + zip_add "$lib" + done + fi + if [ -d ../libs ]; then lib_count="$(find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) | wc -l)" if [ "$lib_count" -gt 0 ]; then find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ while IFS= read -r -d '' lib; do - $ZIP_CMD "$lib" + zip_add "$lib" done else echo "No shared libraries found in build/libs" From 9e220a05c5961c948064db4107eea040296e7896 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:42:42 +0000 Subject: [PATCH 24/28] Guard ccache and avoid lib name collisions Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 7 +++++++ .github/workflows/release.yaml | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0471176e6..c4fe5a824 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,6 +24,13 @@ jobs: with: key: ${{ runner.os }}-ccache-${{ hashFiles('CMakeLists.txt', '.github/workflows/build.yaml') }} + - name: Ensure ccache installed + run: | + if ! command -v ccache >/dev/null 2>&1; then + apt-get update -qq + DEBIAN_FRONTEND=noninteractive apt-get install -y -qq ccache + fi + - name: Mark workspace safe run: git config --global --add safe.directory "$GITHUB_WORKSPACE" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4f348dd69..c007792e1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -71,6 +71,15 @@ jobs: zip_add() { zip -uj eqemu-server-linux-x64.zip "$1" } + zip_add_unique() { + local target_name + target_name="$(basename "$1")" + if unzip -Z1 eqemu-server-linux-x64.zip | grep -qx "$target_name"; then + echo "Skipping duplicate library: $target_name" + return 0 + fi + zip_add "$1" + } # Add all executable files (excluding tests) for f in *; do @@ -84,7 +93,7 @@ jobs: if [ "$bin_lib_count" -gt 0 ]; then find . -maxdepth 1 -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ while IFS= read -r -d '' lib; do - zip_add "$lib" + zip_add_unique "$lib" done fi @@ -93,7 +102,7 @@ jobs: if [ "$lib_count" -gt 0 ]; then find ../libs -type f \( -name "*.so" -o -name "*.so.[0-9]*" \) -print0 | \ while IFS= read -r -d '' lib; do - zip_add "$lib" + zip_add_unique "$lib" done else echo "No shared libraries found in build/libs" From 324e8d66015fab8370287b0d06a9d0ff3190ef89 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:43:38 +0000 Subject: [PATCH 25/28] Harden ccache and zip handling Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 1 + .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c4fe5a824..316464544 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -27,6 +27,7 @@ jobs: - name: Ensure ccache installed run: | if ! command -v ccache >/dev/null 2>&1; then + echo "ccache not found in container; installing." apt-get update -qq DEBIAN_FRONTEND=noninteractive apt-get install -y -qq ccache fi diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c007792e1..32e840d4b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -74,7 +74,7 @@ jobs: zip_add_unique() { local target_name target_name="$(basename "$1")" - if unzip -Z1 eqemu-server-linux-x64.zip | grep -qx "$target_name"; then + if [ -f eqemu-server-linux-x64.zip ] && unzip -Z1 eqemu-server-linux-x64.zip | grep -qx "$target_name"; then echo "Skipping duplicate library: $target_name" return 0 fi From 9b42bc0a250896a4c9c037114c58424ec9fbf7ad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:44:42 +0000 Subject: [PATCH 26/28] Cache zip contents and verify ccache install Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 1 + .github/workflows/release.yaml | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 316464544..617fa6ce4 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,6 +30,7 @@ jobs: echo "ccache not found in container; installing." apt-get update -qq DEBIAN_FRONTEND=noninteractive apt-get install -y -qq ccache + command -v ccache >/dev/null 2>&1 fi - name: Mark workspace safe diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 32e840d4b..485d8199e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -74,17 +74,20 @@ jobs: zip_add_unique() { local target_name target_name="$(basename "$1")" - if [ -f eqemu-server-linux-x64.zip ] && unzip -Z1 eqemu-server-linux-x64.zip | grep -qx "$target_name"; then + if [ -f eqemu-server-linux-x64.zip ] && printf '%s\n' "$ZIP_CONTENTS" | grep -qx "$target_name"; then echo "Skipping duplicate library: $target_name" return 0 fi zip_add "$1" + ZIP_CONTENTS="${ZIP_CONTENTS}${target_name}"$'\n' } # Add all executable files (excluding tests) + ZIP_CONTENTS="$(unzip -Z1 eqemu-server-linux-x64.zip 2>/dev/null || true)" for f in *; do if [ -f "$f" ] && [ -x "$f" ] && [ "$f" != "tests" ]; then zip_add "$f" + ZIP_CONTENTS="${ZIP_CONTENTS}${f}"$'\n' fi done From 9f27f56d2a1519db26273d9f75f5209c4a331ec1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:45:55 +0000 Subject: [PATCH 27/28] Unify zip duplicate handling Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/build.yaml | 2 +- .github/workflows/release.yaml | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 617fa6ce4..b675d8d6f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,7 +30,7 @@ jobs: echo "ccache not found in container; installing." apt-get update -qq DEBIAN_FRONTEND=noninteractive apt-get install -y -qq ccache - command -v ccache >/dev/null 2>&1 + command -v ccache >/dev/null 2>&1 || { echo "ccache install failed"; exit 1; } fi - name: Mark workspace safe diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 485d8199e..4bf1d75f5 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -83,11 +83,9 @@ jobs: } # Add all executable files (excluding tests) - ZIP_CONTENTS="$(unzip -Z1 eqemu-server-linux-x64.zip 2>/dev/null || true)" for f in *; do if [ -f "$f" ] && [ -x "$f" ] && [ "$f" != "tests" ]; then - zip_add "$f" - ZIP_CONTENTS="${ZIP_CONTENTS}${f}"$'\n' + zip_add_unique "$f" fi done From 97a56904a53235e6f78a6b2de8779880571206bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:46:40 +0000 Subject: [PATCH 28/28] Initialize zip content tracking Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4bf1d75f5..0ffba0dbe 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -68,6 +68,7 @@ jobs: exit 1 fi + ZIP_CONTENTS="" zip_add() { zip -uj eqemu-server-linux-x64.zip "$1" }