• src/doors/syncdoom/build.sh src/doors/syncduke/build.sh

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jun 26 18:53:31 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/32936e72194b217d8d068f92
    Modified Files:
    src/doors/syncdoom/build.sh src/doors/syncduke/build.sh
    Log Message:
    syncduke/syncdoom: build.sh deploys to the live install, not just the repo

    A sysop reported re-running build.sh without his live door binary updating. build.sh derived its destination purely from the script's own location (../../../xtrn/<door>), which is the REPO's xtrn -- correct only when the live xtrn is the repo's (the recommended SYMLINK=1 *nix install, where xtrn -> repo/xtrn). On a COPY-style install the live xtrn is a separate directory the in-tree copy never reaches, so the running door kept the old binary. The binary is a git-ignored build artifact, so unlike the tracked door files it is not carried to a live install by `git pull` / `update.js` -- build.sh is what must deliver it.

    Deploy to the in-tree bundle AND, when it is a distinct directory, the live install -- located via $SBBSCTRL (install root = $SBBSCTRL/..) or an explicit $SYNCDUKE_DEST / $SYNCDOOM_DEST override. Same-directory targets (symlinked or build-in-place installs) are detected with -ef and skipped, and the deployed path is printed so a wrong guess/fallback is visible.

    The -ef guard also fixes a latent abort: cp -f onto a dev symlink (xtrn/<door>/<door> -> build/<door>) is a same-file copy that errors and, under `set -e`, aborted the whole script.

    Validated for both doors across three layouts: in-tree-only (SBBSCTRL unset), copy install (separate live dir gets the binary, verified byte-identical), and symlinked install (live == in-tree, skipped).

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net