forked from Ports/goldeneye-pc-port
CI: Linux bundle built in the Steam Runtime sniper container (glibc floor 2.38 -> 2.31), SDL2 2.30.0 from source (D572)
This commit is contained in:
1 parent
1d75c4c849
commit
9f1cfe909e
5 files changed
+65
-18
No files matched your search
@@ -127,7 +127,8 @@ and controller-only sessions.
|
||||
Each contains the engine executable, a README, license texts, and the
|
||||
one-time asset tool. **No ROM, no game assets.** The Windows bundle carries
|
||||
its runtime DLLs and the Linux bundle carries SDL2, so nothing needs to be
|
||||
installed first.
|
||||
installed first. The Linux bundle runs on glibc 2.31 or newer (Ubuntu 20.04+,
|
||||
Debian 11+, SteamOS).
|
||||
|
||||
### Running it
|
||||
|
||||
@@ -157,7 +158,6 @@ Full steps, controls and troubleshooting are in the bundled `README.md`.
|
||||
| Issue | Impact | Workaround |
|
||||
|---|---|---|
|
||||
| PAL and JP ROMs aren't supported in release packages | NTSC-U only | Use an NTSC-U ROM. Both regions convert, build and boot from source; packaging is still open |
|
||||
| The Linux tarball needs glibc 2.38 or newer | Won't start on older distros (Ubuntu 22.04, Debian 12, Fedora 38 and earlier) | Use a newer distro, or build from source |
|
||||
| Changing aspect ratio inside a level can briefly glitch the gun/hand model, rarely | Cosmetic, one-off | Change the ratio from the front-end PC Options, or accept it |
|
||||
| No macOS or ARM builds | Platform | — |
|
||||
| Saves from v0.4.0 and earlier can hold fake unlocks from `All unlocked` | Save data | Not repaired automatically. Since v0.5.0 the option never writes the save; keep a backup of `data/ge007.eep` from before you used it |
|
||||
|
||||
+40
-14
@@ -171,21 +171,32 @@ jobs:
|
||||
# here is a "does it compile + link" signal only, not a runtime claim.
|
||||
# Not a required check yet; flip it to required once it is reliably green.
|
||||
#
|
||||
# Toolchain: ubuntu-24.04 + gcc-14. The port is developed on MinGW GCC 16;
|
||||
# pinning a recent GCC here keeps the first bring-up focused on real
|
||||
# portability gaps rather than a decade of accumulated old-GCC pedantry.
|
||||
# (A "does it build on the GCC a typical distro ships" pass can come later.)
|
||||
# Toolchain: Steam Runtime 3 "sniper" SDK container (Debian 11 base,
|
||||
# glibc 2.31) + its gcc-14. Building against the old glibc is what sets the
|
||||
# tarball's floor: the ubuntu-24.04 build needed glibc 2.38 (C23
|
||||
# __isoc23_* symbols), so it refused to start on Ubuntu 22.04 / Debian 12.
|
||||
# The image is pinned by version AND digest.
|
||||
# SDL2 is built from source (2.30.0, the version the 24.04 build bundled
|
||||
# and every Linux/Deck test used): the SDK's own libSDL2 is sdl2-compat,
|
||||
# which needs SDL3 at runtime. pip is bootstrapped from a hash-pinned
|
||||
# get-pip.py: Debian 11's security archive no longer serves python3-pip.
|
||||
linux-build:
|
||||
runs-on: ubuntu-24.04
|
||||
container:
|
||||
image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:3.0.20260805.254768@sha256:1c33c507bc75d012e77df5727f93b0d5b8c3f7c8d4142ba5f7a16882cc92e014
|
||||
env:
|
||||
CC: gcc-14
|
||||
CXX: g++-14
|
||||
# CMakeLists.txt opt-in enables CMAKE_{C,CXX}_COMPILER_LAUNCHER=ccache
|
||||
# when ccache is on PATH (b4de1c68, speed-ups plan Step 5). Game
|
||||
# sources are frozen (1:1 with the decomp), so after the first run only
|
||||
# touched port/ files miss cache -- near-total hit rate.
|
||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||
# touched port/ files miss cache -- near-total hit rate. CCACHE_DIR is
|
||||
# set in a step: in a container job ${{ github.workspace }} is the
|
||||
# host path, not the container's.
|
||||
CCACHE_MAXSIZE: 500M
|
||||
SDL2_VERSION: 2.30.0
|
||||
SDL2_SHA256: 36e2e41557e0fa4a1519315c0f5958a87ccb27e25c51776beb6f1239526447b0
|
||||
GET_PIP_SHA256: 95c0ae79ccf9ac1e47e4187f49081d6ae1f45997afd4549e14f37337cbcfd766
|
||||
steps:
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
@@ -193,18 +204,33 @@ jobs:
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential gcc-14 g++-14 cmake python3 \
|
||||
python3-pip libsdl2-dev zlib1g-dev libgl1-mesa-dev ccache patchelf
|
||||
echo "CCACHE_DIR=$GITHUB_WORKSPACE/.ccache" >> "$GITHUB_ENV"
|
||||
apt-get update
|
||||
apt-get install -y patchelf
|
||||
curl -fsSL -o /tmp/get-pip.py https://bootstrap.pypa.io/pip/3.9/get-pip.py
|
||||
echo "$GET_PIP_SHA256 /tmp/get-pip.py" | sha256sum -c
|
||||
python3 /tmp/get-pip.py --quiet
|
||||
|
||||
- name: Build SDL2 ${{ env.SDL2_VERSION }} from source
|
||||
run: |
|
||||
curl -fsSL -o /tmp/sdl2.tar.gz \
|
||||
"https://github.com/libsdl-org/SDL/releases/download/release-$SDL2_VERSION/SDL2-$SDL2_VERSION.tar.gz"
|
||||
echo "$SDL2_SHA256 /tmp/sdl2.tar.gz" | sha256sum -c
|
||||
tar xzf /tmp/sdl2.tar.gz -C /tmp
|
||||
cmake -S "/tmp/SDL2-$SDL2_VERSION" -B /tmp/sdl-build -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local -DSDL_STATIC=OFF -DSDL_TEST=OFF
|
||||
cmake --build /tmp/sdl-build -j"$(nproc)"
|
||||
cmake --install /tmp/sdl-build
|
||||
ldconfig
|
||||
|
||||
- name: Restore ccache
|
||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: ccache-linux-${{ hashFiles('CMakeLists.txt') }}-${{ github.sha }}
|
||||
path: .ccache
|
||||
key: ccache-linux-sniper-${{ hashFiles('CMakeLists.txt') }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
ccache-linux-${{ hashFiles('CMakeLists.txt') }}-
|
||||
ccache-linux-
|
||||
ccache-linux-sniper-${{ hashFiles('CMakeLists.txt') }}-
|
||||
ccache-linux-sniper-
|
||||
|
||||
- name: Regenerate ROM-asset symbol file (US)
|
||||
run: python3 scripts/gen_romassets.py u
|
||||
@@ -217,7 +243,7 @@ jobs:
|
||||
- name: Freeze asset converter (PyInstaller)
|
||||
run: |
|
||||
python3 -c "import PyInstaller, sys; sys.exit(PyInstaller.__version__ != '6.22.3')" 2>/dev/null \
|
||||
|| python3 -m pip install --quiet --break-system-packages pyinstaller==6.22.3
|
||||
|| python3 -m pip install --quiet pyinstaller==6.22.3
|
||||
python3 -m PyInstaller --onefile --noconfirm --clean \
|
||||
--name ge007-convert \
|
||||
--distpath tools_pc/dist/prepare-assets \
|
||||
|
||||
@@ -92,8 +92,8 @@ project is as much a study of that process as it is a port. See
|
||||
download carries its own runtime libraries and the one-time asset tool (no
|
||||
Python, no emulator).
|
||||
|
||||
**Linux / Steam Deck:** 64-bit x86 Linux with glibc 2.38 or newer (Ubuntu
|
||||
24.04+, Fedora 39+, Debian 13+, current SteamOS or Arch). SDL2 is bundled, so
|
||||
**Linux / Steam Deck:** 64-bit x86 Linux with glibc 2.31 or newer (Ubuntu
|
||||
20.04+, Debian 11+, Fedora 32+, SteamOS). SDL2 is bundled, so
|
||||
the tarball runs as-is; it sideloads onto a Steam Deck with nothing installed.
|
||||
|
||||
**Both:** a GPU with OpenGL 3.0 drivers (practically any PC GPU from the last
|
||||
|
||||
@@ -314,6 +314,7 @@ D568,FIXED,F10 dropdown popup drawn empty and misplaced for a long list on a mid
|
||||
D569,?,Crosshair color follows the PD port:,CHANGED 2026-10-06 (maintainer request; old presets migrate to Custom RGB)
|
||||
D570,FIXED,Scaled crosshair (Crosshair size != 100%) showed a faint copy of the top bar's tip under the bottom bar (WRAP tile flags) —,FIXED 2026-10-06 (port only:
|
||||
D571,?,"Project icon restyled to the in-game sight red as pixel art (exe, window, favicon) —",CHANGED 2026-10-06 (maintainer request; make_icon.py; social preview unchanged)
|
||||
D572,?,Linux tarball glibc floor lowered from 2.38 to 2.31:,CHANGED 2026-10-07 (maintainer request; packaging only; X220 glibc 2.36 fresh install PASS)
|
||||
D407,CLOSED,Tanks cannot be boarded/exited on PC —,CLOSED (2026-09-28 bookkeeping:
|
||||
D408,FIXED,Game.SkipIntro skips the post-mission failure dossier:,FIXED 2026-09-30 (SkipIntro hook gated to first boot; live dossier check owed).
|
||||
D415,FIXED,"Shooting a light fixture does not ""kill"" its flickering light (Bunker, Caverns):",FIXED (2026-09-29 bookkeeping:
|
||||
|
||||
|
@@ -722,6 +722,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121).
|
||||
| D569 | **Crosshair color follows the PD port: Original or Custom RGB, left/right stepper, 0-255 sliders** — full `## D569` entry at file tail | CHANGED 2026-10-06 (maintainer request; old presets migrate to Custom RGB) |
|
||||
| D570 | **Scaled crosshair (Crosshair size != 100%) showed a faint copy of the top bar's tip under the bottom bar (WRAP tile flags)** — full `## D570` entry at file tail | FIXED 2026-10-06 (port only: CLAMP when scaled in `gunDrawSight` + F10 pointer; 100% unchanged, Dam gate PASS) |
|
||||
| D571 | **Project icon restyled to the in-game sight red as pixel art (exe, window, favicon)** — full `## D571` entry at file tail | CHANGED 2026-10-06 (maintainer request; make_icon.py; social preview unchanged) |
|
||||
| D572 | **Linux tarball glibc floor lowered from 2.38 to 2.31: CI builds in the Steam Runtime sniper container with SDL2 2.30.0 from source** — full `## D572` entry at file tail | CHANGED 2026-10-07 (maintainer request; packaging only; X220 glibc 2.36 fresh install PASS) |
|
||||
| D407 | **Tanks cannot be boarded/exited on PC — the v0.4.0 use/reload split (D378/D393) removed the B-button tap the engine's tank handlers in `bondview2.c` consume (user report 2026-09-28, Runway/Streets)** — full `## D407` entry at file tail | **CLOSED (2026-09-28 bookkeeping: tank board/exit accepted by the user; shipped in v0.4.0).** Earlier: PARTIAL (fix landed in v0.4.0, port-only): present `GE_CONT_B` on the use (E / pad A) rising edge only while `g_PlayerIsInTank == 1` or `g_BondCanEnterTank != 0`; E keeps its D378 no-reload-fallback semantics elsewhere, N64 layout unaffected. D407(b) same cycle: front PC Options page-edge highlight clamp + mouse-wheel / W-S paging (wheel queue consumed on the menu, D223); its wheel mapping shipped inverted and was fixed to match W/S (wheel up = step up). D407(c): board-animation lockout, menu-accept B gate in tank states, in-tank aim routed through the legacy velocity stick + `Input.TankAimScale` knob. RESOLVED 2026-09-28: all port-only (src/game zero-diff), 10 TANKDBG probes stripped, release binary verified clean, user live tank drive signed off (board + exit OK, aim feel good). |
|
||||
| D408 | **`Game.SkipIntro` skips the post-mission failure dossier: with it on, entering a level then aborting (watch Z+A) or dying (KIA) returns straight to the menus — no REPORT / "Mission status: KILLED IN ACTION / ABORTED" screen** (user report 2026-09-28; save/AllUnlocked ruled out) — full `## D408` entry at file tail | FIXED 2026-09-30 (SkipIntro hook gated to first boot; live dossier check owed). |
|
||||
| D415 | **Shooting a light fixture does not "kill" its flickering light (Bunker, Caverns): the fixture takes the hit but the flicker keeps going (community report, issue #87 comment by the reporter, 2026-09-28, 00 Agent playthrough of v0.4.0).** — full `## D415` entry at file tail | FIXED (2026-09-29 bookkeeping: root-caused and fixed as D430 + D431, user-verified vs GEPD/1964 on Caverns 2026-09-29; #119). Earlier: ROOT-CAUSED as D430 (see there); fix in tree, live check owed. |
|
||||
@@ -18390,3 +18391,22 @@ capture data). Outputs regenerated: exe `.ico`, `docs/favicon.ico` (byte copy),
|
||||
`docs/img/icon/ge007-icon.png`, `port/fast3d/ge007_icon.h` (now written with LF).
|
||||
`--check` passes; two runs byte-identical. The social preview card is unchanged
|
||||
(maintainer decision).
|
||||
|
||||
## D572: Linux tarball glibc floor 2.38 -> 2.31 (Steam Runtime sniper build) — CHANGED 2026-10-07 (maintainer request)
|
||||
|
||||
The `linux-build` CI job built on `ubuntu-24.04`, so the game and its bundled
|
||||
SDL linked GCC's C23 `__isoc23_strtol`/`__isoc23_sscanf` redirects
|
||||
(`GLIBC_2.38`): the release tarball refused to start on Ubuntu 22.04, Debian 12,
|
||||
Fedora 38 and older (seen on the X220, Fedora 37 / glibc 2.36). The job now runs
|
||||
in the Steam Runtime 3 "sniper" SDK container (Debian 11, glibc 2.31), pinned by
|
||||
version + digest, with the SDK's gcc-14 (same compiler as before). Two SDK
|
||||
gaps: its `libSDL2-2.0.so.0` is sdl2-compat (aborts with "Failed loading SDL3
|
||||
library" unless SDL3 is shipped too), so SDL2 2.30.0 — the version the 24.04
|
||||
build bundled and every Linux/Deck test ran — is built from the hash-pinned
|
||||
upstream tarball (X11, Wayland+libdecor, PipeWire, Pulse, ALSA, udev, HIDAPI,
|
||||
D-Bus/IBus all compiled in, dynamically loaded); and Debian 11's security archive
|
||||
no longer serves `python3-pip`, so pip comes from a hash-pinned `get-pip.py`
|
||||
(PyInstaller 6.22.3 supports the SDK's Python 3.9). Result: game `GLIBC_2.29`,
|
||||
SDL `GLIBC_2.4`, `ge007-convert` built against 2.31. Verified: the container
|
||||
build run by hand on the X220 (podman) — fresh install there (ROM only ->
|
||||
converter -> boot -> clean quit, exit 0). No source changes; packaging only.
|
||||
Reference in new issue
Block a user