build(packaging): bundle ttyd prebuilt; record license-compliance notes (DEPS.md)

ttyd is the interactive-job launcher for worker TTY/DISPLAY modes: the
worker resolves it next to its own binary (inter_job_utils.c
readlink(/proc/self/exe) + /ttyd, /opt/xce/bin/ttyd fallback), so a
tarball without bin/ttyd silently loses -I/--tty on the target host.
The packager now picks it up from $BUILD_DIR/worker/ttyd first, then
/opt/xce/bin/ttyd, and warns loudly if neither exists.

NB it is NOT an upstream release: this is rshen's modified ttyd (version
string 1.7.7-eccebc6), and the binary we bundle today is that same
modified build. Source lands in-tree later and moves to a meson target;
the packager already prefers a build-dir copy for that day.

DEPS.md: document the ttyd situation (including the MIT-compatibility
audit needed before commercial distribution) and record the user-flagged
license note on bundling libhwloc/libedit/libtirpc -- fine for the
development/test rollout, needs a per-item license audit (bundled
LICENSE file at minimum) before commercial release.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
lei.chen 2026-10-21 03:33:10 +00:00
parent 6bf26cbab3
commit 017f41a010
2 changed files with 36 additions and 0 deletions

View file

@ -53,6 +53,25 @@ if [ -d "$BUILD_DIR/xceadmin/.venv" ]; then
fi
# static worker fallback for hosts without systemd --include cgroup support
[ -f "$BUILD_DIR"/worker/xcecd_virtual ] && install -m 755 "$BUILD_DIR"/worker/xcecd_virtual "$STAGING/bin/"
# ttyd: interactive-job launcher (TTY/DISPLAY modes). The worker resolves it
# NEXT TO ITS OWN BINARY (inter_job_utils.c readlink(/proc/self/exe) + /ttyd)
# with /opt/xce/bin/ttyd as fallback -- so shipping bin/ttyd in the tarball
# is what actually runs on the target.
# NB: NOT an upstream release. This is rshen's MODIFIED ttyd (version string
# 1.7.7-eccebc6; the official 1.7.7 differs) and the binary below is that
# same modified build. Source lands in-tree later and moves to a proper
# meson target then; until then we carry the prebuilt static binary.
TTYD_SRC=""
for cand in "$BUILD_DIR/worker/ttyd" /opt/xce/bin/ttyd; do
if [ -x "$cand" ]; then TTYD_SRC="$cand"; break; fi
done
if [ -n "$TTYD_SRC" ]; then
install -m 755 "$TTYD_SRC" "$STAGING/bin/ttyd"
echo "=== ttyd: bundled prebuilt from $TTYD_SRC (modified build, source pending) ==="
else
echo "WARNING: ttyd not found (looked in $BUILD_DIR/worker/ttyd, /opt/xce/bin/ttyd);" >&2
echo " interactive jobs (-I/--tty) will fail on the target host." >&2
fi
# --- bundled shared libraries ---
# Two collection rules (DEPS.md 运行期 bundle 规则):