og-cod-plutainer/scripts
Amos 25f53f5b04
fix(iw4x): cede zone/patch and zone/zonebuilder to the launcher
Mirroring the host's zone/ still broke the launcher, just one level lower.
Making the directories real was not enough: the leaf entries were symlinks
into the read-only gamefiles mount, so extracting through them still hit
EROFS and died at the same place.

  [E] exception caught in main: failed to extract file:
      zone/patch/iw4_credits_load.ff

The mistake was treating zone/ as host-owned. The rawfiles manifest writes
every file under zone/patch/ and zone/zonebuilder/, so those belong to the
launcher and must not be pre-populated at all. Checked before ceding them:
its 56 zone/patch entries are a strict superset of a full MW2 install's 39
(zero host-only files), and zone/zonebuilder is the same lone
zonebuilder_minigun.ff it ships. Only zone/english and zone/dlc are
mirrored now — the host's map fastfiles, which the launcher never writes,
since its DLC component targets iw3/zone/dlc/ instead.

link_dir_contents now accepts a nested name so one subtree can be mirrored
without disturbing its siblings, and replaces a symlink at every component
of the destination path rather than only the last: upgrading from an image
that symlinked `zone` itself would otherwise make mkdir -p follow the link
into the read-only mount and abort startup under set -e.

Consequence of the original bug, for the record: the crash aborted the run
before sync_dlc and sync_helper, and left rawfiles unstamped, so iw4x
client updates never applied and the server was pinned to r5046 forever.
2026-07-30 13:47:15 +01:00
..
alterentry.sh fix(iw4x): adapt to rewritten launcher, persist install in volume 2026-07-30 13:14:10 +01:00
entrypoint.sh V2 layout (#4) 2026-05-25 11:56:13 +01:00
game-config.sh fix(iw4x): cede zone/patch and zone/zonebuilder to the launcher 2026-07-30 13:47:15 +01:00
healthcheck.sh Fix HEALTHCHECK env var logic so true means enabled 2026-05-05 13:47:52 +01:00
iw4xentry.sh fix(iw4x): cede zone/patch and zone/zonebuilder to the launcher 2026-07-30 13:47:15 +01:00
log-watcher.sh V2 layout (#4) 2026-05-25 11:56:13 +01:00
migrate-v1-to-v2.sh V2 layout (#4) 2026-05-25 11:56:13 +01:00
plutoentry.sh fix(iw4x): adapt to rewritten launcher, persist install in volume 2026-07-30 13:14:10 +01:00
pyquake3.py Add rcon-cli, deduplicate shared logic, and reorganize scripts 2026-03-29 17:44:08 +01:00
rcon-cli Fix rcon-cli symlink resolution for SCRIPT_DIR and pyquake3 import 2026-03-29 18:18:24 +01:00