@@ -106,7 +106,12 @@ jobs:
106106 # download + self-install manually to avoid broken releases.
107107 XLINGS_VERSION : ' 2026.10.10.2'
108108 run : |
109- if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
109+ # BY VERSION, NOT BY PRESENCE. A restored ~/.xlings holds the
110+ # xlings of an earlier release, and this binary is the one the
111+ # tarball bundles: 2026.10.10.1 shipped xlings 2026.10.8.1 on
112+ # linux-x86_64 because one was present.
113+ have=$("$HOME/.xlings/subos/default/bin/xlings" --version 2>/dev/null | awk '{print $2}')
114+ if [ "$have" != "$XLINGS_VERSION" ]; then
110115 tarball="xlings-${XLINGS_VERSION}-linux-x86_64.tar.gz"
111116 bash "$GITHUB_WORKSPACE/.github/tools/fetch_release.sh" \
112117 "https://github.com/openxlings/xlings/releases/download/v${XLINGS_VERSION}/${tarball}" \
@@ -116,6 +121,8 @@ jobs:
116121 fi
117122 export PATH="$HOME/.xlings/subos/default/bin:$PATH"
118123 xlings --version
124+ test "$(xlings --version | awk '{print $2}')" = "$XLINGS_VERSION" || {
125+ echo "::error::the xlings this release bundles is $(xlings --version), not $XLINGS_VERSION"; exit 1; }
119126 # Pinned to .xlings.json — a bare `xlings install mcpp` resolves
120127 # "newest in this runner's index copy" and put 0.0.105 (below the
121128 # index floor) into this job. See .github/tools/install_pinned_mcpp.sh.
@@ -484,7 +491,9 @@ jobs:
484491 XLINGS_NON_INTERACTIVE : ' 1'
485492 XLINGS_VERSION : ' 2026.10.10.2'
486493 run : |
487- if [ ! -x "$HOME/.xlings/subos/default/bin/xlings" ]; then
494+ # By version, not by presence (see the Linux job).
495+ have=$("$HOME/.xlings/subos/default/bin/xlings" --version 2>/dev/null | awk '{print $2}')
496+ if [ "$have" != "$XLINGS_VERSION" ]; then
488497 WORK=$(mktemp -d)
489498 tarball="xlings-${XLINGS_VERSION}-macosx-arm64.tar.gz"
490499 bash "$GITHUB_WORKSPACE/.github/tools/fetch_release.sh" \
@@ -495,6 +504,8 @@ jobs:
495504 fi
496505 export PATH="$HOME/.xlings/subos/default/bin:$PATH"
497506 xlings --version
507+ test "$(xlings --version | awk '{print $2}')" = "$XLINGS_VERSION" || {
508+ echo "::error::the xlings this release bundles is $(xlings --version), not $XLINGS_VERSION"; exit 1; }
498509 # Pinned to .xlings.json — a bare `xlings install mcpp` resolves
499510 # "newest in this runner's index copy" and put 0.0.105 (below the
500511 # index floor) into this job. See .github/tools/install_pinned_mcpp.sh.
@@ -682,6 +693,8 @@ jobs:
682693 export PATH="$USERPROFILE/.xlings/subos/default/bin:$PATH"
683694 echo "$USERPROFILE/.xlings/subos/default/bin" >> "$GITHUB_PATH"
684695 xlings.exe --version
696+ test "$(xlings.exe --version | awk '{print $2}' | tr -d '\r')" = "$XLINGS_VERSION" || {
697+ echo "::error::the xlings this release bundles is not $XLINGS_VERSION"; exit 1; }
685698 # Pinned + version-scoped lookup. The old `find | head -1` returned
686699 # whichever version the directory walk reached first.
687700 MCPP=$(bash "$REPO_DIR/.github/tools/install_pinned_mcpp.sh" "$REPO_DIR")
0 commit comments