Skip to content

fix(mods): resolve AMX Mod X packages from the latest 1.10 build - #5119

Merged
dgibbs64 merged 4 commits into
GameServerManagers:developfrom
borzaka:fix/amxmodx-latest-1.10
Oct 31, 2026
Merged

dgibbs64 merged 4 commits into
GameServerManagers:developfrom
borzaka:fix/amxmodx-latest-1.10

Conversation

@borzaka

@borzaka borzaka commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Description

AMX Mod X 1.9.0-git5303 requests an executable stack, which prevents amxmodx_mm_i386.so from loading with newer glibc. Resolve the latest Linux build from the upstream 1.10 base marker once when mods-install or mods-update loads mods_list.sh and use that same version for the base, cstrike, dod, tfc, ns and ts archives. This follows the upstream executable-stack fix in alliedmodders/amxmodx@460d963 without pinning a build number.

Only cs, dod, tfc, ns, ts and hldm query the marker during installation or updates. mods-remove uses the local manifests and static metadata without querying AMX Mod X. HTTP/network failures and invalid or empty filenames produce console and log errors and exit with status 1. Existing addon entries, compatibility filters, dependencies and configuration preservation remain unchanged, as do Metamod and all other mods.

Fixes #5114
Fixes #4525

Related to #5115, which fixes the same issue by pinning the current build.

Affected servers: cs, dod, tfc, ns, ts, hldm

Type of change

  • Bug fix (a change which fixes an issue).
  • New feature (a change which adds functionality).
  • New Server (new server added).
  • Refactor (restructures existing code).
  • Chore (CI, workflows, tooling or other maintenance).
  • Comment update (typo, spelling, explanation, examples, etc).

Testing

  • Commands/tests run:
    • for file in lgsm/modules/{mods_list,mods_core,command_mods_install,command_mods_update,command_mods_remove}.sh; do bash -n "$file"; done
    • shellcheck lgsm/modules/{mods_list,mods_core,command_mods_install,command_mods_update,command_mods_remove}.sh
    • Prettier --check lgsm/modules/mods_list.sh, using the lockfile versions (Prettier 3.4.2 and prettier-plugin-sh 0.14.0) and the repository's formatting settings.
    • bash .github/scripts/version-check.sh and git diff --check.
    • Temporary isolated harness (python3 /tmp/linuxgsm-amxx-5114.ukyXe9/check_amxx.py): source the real modules with mocked HTTP responses; verify one lookup for each supported game, two synthetic build versions, all six package URLs, unchanged metadata, no AMXX requests for the other 140 server configurations, 12 invalid/empty responses and four curl errors, and a fresh resolution on each list load.
    • The same harness runs 10 actual mods-install and six mods-update command flows with synthetic extracted archives in temporary directories. Checks include installed files, base plugin registration, shared versions, preserved custom configurations, and aborting install/update before downloads on marker failure.
    • The harness also runs 11 actual mods-remove flows covering base and game addons with an unavailable upstream. All succeed with zero AMXX requests; the owned files, file lists and installed-mod entries are removed while an unrelated file is preserved. Install/update resolution and error handling still pass.
    • Live check (python3 /tmp/linuxgsm-amxx-5114.ukyXe9/check_live.py): resolve the marker with the changed module, download all six archives using curl --fail, validate their tar contents and inspect the base binary with readelf -W -l.
  • Result: all checks passed. The live marker resolved 1.10.0-git5487; all six archives returned HTTP 200. The base amxmodx_mm_i386.so has GNU_STACK permissions RW, without execute permission.
  • Environment used (distro/version): Ubuntu 22.04.5 LTS, Bash 5.1.16, ShellCheck 0.11.0.
  • No installed game server was available, so a real game launch/Metamod load on newer glibc was not tested. The pre-existing Half-Life: Deathmatch versus Half Life: Deathmatch compatibility-name mismatch was left unchanged; the hldm command-flow test covers updating an existing base installation.

Risk and rollback

  • Risk level: low. Installing or updating mods on affected GoldSrc servers requires a reachable upstream marker with a valid 1.10 filename; failure stops the command rather than selecting an old build. Removal does not depend on this marker.
  • Rollback plan: revert this commit. This restores the old 1.9 build selection and its known executable-stack issue; it does not automatically downgrade already installed addons.

Breaking changes

  • No breaking changes.
  • Breaking changes included (describe below).

Documentation

Checklist

  • This pull request links to an issue ("Fixes", or "Related to" for a partial fix).
  • This pull request uses the develop branch as its base.
  • This pull request subject follows the Conventional Commits standard.
  • This code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have provided a detailed enough description of this PR.

🤖 Generated with OpenAI Codex.

@github-actions github-actions Bot added the type: bugfix Pull request that fixes a bug label Oct 31, 2026
@dgibbs64 dgibbs64 added this to the v26.5.0 milestone Oct 31, 2026
@github-actions github-actions Bot added engine: goldsrc game: Half-Life: Deathmatch Issues related to Half-Life: Deathmatch game: Day of Defeat Issues related to Day of Defeat game: Team Fortress Classic Issues related to Team Fortress Classic labels Oct 31, 2026
@dgibbs64
dgibbs64 merged commit eed5036 into GameServerManagers:develop Oct 31, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine: goldsrc game: Day of Defeat Issues related to Day of Defeat game: Half-Life: Deathmatch Issues related to Half-Life: Deathmatch game: Team Fortress Classic Issues related to Team Fortress Classic type: bugfix Pull request that fixes a bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants