Added debug artefact
All checks were successful
Build VulkanEngine / build (push) Successful in 4m52s
Build VulkanEngine / nix (push) Successful in 3m15s
Build VulkanEngine / debug (push) Successful in 3m16s
Build VulkanEngine / release (BUNDLE) (push) Successful in 3m35s
Build VulkanEngine / release (PORTABLE) (push) Successful in 3m38s
Build VulkanEngine / notify (push) Successful in 4s

This commit is contained in:
Alexandre 2026-10-12 13:17:05 +02:00
parent 65a715bd12
commit f724ecc09d

View File

@ -53,6 +53,104 @@ jobs:
# 2. Debian 12 builds: portable (static) and bundle (bin/ + lib/) # 2. Debian 12 builds: portable (static) and bundle (bin/ + lib/)
# Built on glibc 2.36 => runs on Debian 12 and anything newer. # Built on glibc 2.36 => runs on Debian 12 and anything newer.
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
debug:
needs: nix
runs-on: ubuntu-latest
container: debian:12
strategy:
fail-fast: false
steps:
# git + nodejs must exist before checkout (JS actions run in the container)
- name: Dependencies
run: |
apt-get update
apt-get install -y --no-install-recommends \
git ca-certificates nodejs curl \
build-essential cmake ninja-build pkg-config \
libwayland-dev libwayland-bin wayland-protocols libxkbcommon-dev \
libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Git safe directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Download shaders
uses: actions/download-artifact@v4
with:
name: shaders
path: prebuilt-shaders
- name: Configure
run: |
cmake -S . -B build -G Ninja \
--preset debug \
-DVULKANENGINE_FETCH_DEPS=ON \
-DVULKANENGINE_PORTABLE=ON \
-DVULKANENGINE_PREBUILT_SHADERS="$PWD/prebuilt-shaders"
- name: Build
run: cmake --build build --parallel 2
- name: Install
run: cmake --install build --prefix dist --strip
- name: Check binaries
shell: bash
run: |
set -euo pipefail
for b in dist/bin/engine dist/bin/server; do
echo "========== $b =========="
readelf -l "$b" | grep 'program interpreter'
readelf -d "$b" | grep -E 'RPATH|RUNPATH|NEEDED' || true
if strings "$b" | grep -q '/nix/store'; then
echo "ERROR: $b references /nix/store"; exit 1
fi
# The loader must come from volk (dlopen), never from NEEDED
if readelf -d "$b" | grep -q 'libvulkan'; then
echo "ERROR: $b links libvulkan directly"; exit 1
fi
if [ "PORTABLE" = "PORTABLE" ]; then
if readelf -d "$b" | grep -Eq 'libstdc\+\+|libgcc_s'; then
echo "ERROR: $b is not static for libstdc++/libgcc"; exit 1
fi
fi
max=$(objdump -T "$b" | grep -o 'GLIBC_[0-9.]*' | sed 's/GLIBC_//' | sort -uV | tail -1 || true)
echo "Highest GLIBC symbol: ${max:-none}"
if [ -n "$max" ] && [ "$(printf '%s\n%s\n' "$max" 2.36 | sort -V | tail -1)" != "2.36" ]; then
echo "ERROR: needs glibc $max (> 2.36)"; exit 1
fi
if ldd "$b" | grep 'not found'; then
echo "ERROR: unresolved libraries in $b"; exit 1
fi
done
# tar keeps permissions and symlinks; artifact zips do not
- name: Package
run: |
tar -C dist -czf VulkanEngine-DEBUG-linux-x86_64.tar.gz .
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: VulkanEngine-DEBUG-linux-x86_64
path: VulkanEngine-DEBUG-linux-x86_64.tar.gz
- name: Notify progress
if: failure()
run: |
curl \
-H "Title: [Routine] Engine-DEBUG build" \
-d "Build failed (nix: ${{ needs.nix.result }}, release: ${{ needs.debug.result }})" \
https://ntfy.alexdelcamp.fr/FlakeBuild
release: release:
needs: nix needs: nix
runs-on: ubuntu-latest runs-on: ubuntu-latest