Files
marfrit-packages/debian/lmcp/build-deb.sh
T
marfrit dfdee75668 debian/*/build-deb.sh: add curl timeouts (10s connect, 600s total, 3 retries)
Without timeouts, a slow/dead-TCP upstream (e.g. github tarballs)
hangs the runner indefinitely.  Today run 15185 mpv-fourier-debian
sat 6+ min on "curl -sSLfo mpv.tar.gz https://github.com/.../mpv-0.41.0.tar.gz"
with no progress visible — fermis act_runner blocked, slot unusable
for parallel work.

--connect-timeout 10  fails fast if upstream is unreachable
--max-time 600        caps worst-case at 10 min per fetch
--retry 3             handles transient flakes
--retry-delay 5       gives transient outages a moment

Patched in: claude-his-agent, daedalus-v4l2, daedalus-v4l2-dkms,
libva-v4l2-request-fourier, lmcp, mpv-fourier.  ffmpeg-v4l2-request-fourier
has no curl call.
2026-05-20 16:32:36 +02:00

71 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Build lmcp_<ver>_all.deb from this directory using dpkg-deb directly.
# Run from inside the runner container, which has dpkg installed.
#
# This avoids dh/debhelper to keep the build simple and runnable on a
# non-Debian builder. The resulting .deb is structurally a normal apt
# package (Architecture: all, depends on lua + lua-socket).
set -euo pipefail
PKGVER=1.2.1
UPSTREAM_TAG=v1.2.1
PKGREL=1
LMCP_TARBALL_SHA256=bf9cce1a84c66b1b74c5aec923c5960d60ae33c221afc8d47ce0d74b8f7ee609
HERE=$(dirname "$(readlink -f "$0")")
# Reproducible build: pin all file mtimes + ar member timestamps to a fixed
# epoch tied to this packaging release (lmcp v0.3.0 — 2026-04-14 22:00 UTC).
# Without this, repeat builds produce different byte streams and reprepro
# refuses re-includes with "size expected: X, got: Y".
export SOURCE_DATE_EPOCH=1776677688
work=$(mktemp -d)
trap "rm -rf $work" EXIT
cd "$work"
curl --connect-timeout 10 --max-time 600 --retry 3 --retry-delay 5 -sSLfo lmcp.tar.gz "https://git.reauktion.de/marfrit/lmcp/archive/${UPSTREAM_TAG}.tar.gz"
echo "$LMCP_TARBALL_SHA256 lmcp.tar.gz" | sha256sum -c
tar xzf lmcp.tar.gz
ROOT="$work/pkgroot"
mkdir -p "$ROOT/DEBIAN" \
"$ROOT/usr/share/lua/5.4" \
"$ROOT/usr/bin" \
"$ROOT/usr/share/doc/lmcp"
cp lmcp/lmcp.lua "$ROOT/usr/share/lua/5.4/"
cp lmcp/json.lua "$ROOT/usr/share/lua/5.4/"
cp lmcp/server.lua "$ROOT/usr/share/lua/5.4/"
cp lmcp/hub.lua "$ROOT/usr/share/lua/5.4/"
mkdir -p "$ROOT/usr/share/doc/lmcp/examples"
cp lmcp/examples/lmcp-hub.service "$ROOT/usr/share/doc/lmcp/examples/"
cp lmcp/examples/lmcp.service "$ROOT/usr/share/doc/lmcp/examples/"
cp lmcp/examples/hub-backends.conf.example "$ROOT/usr/share/doc/lmcp/examples/"
install -m 755 lmcp/example_server.lua "$ROOT/usr/bin/lmcp-example"
cp lmcp/README.md "$ROOT/usr/share/doc/lmcp/"
cp "$HERE/debian/copyright" "$ROOT/usr/share/doc/lmcp/copyright"
cp "$HERE/debian/changelog" "$ROOT/usr/share/doc/lmcp/changelog.Debian"
gzip -9 -n "$ROOT/usr/share/doc/lmcp/changelog.Debian"
cat > "$ROOT/DEBIAN/control" <<EOF
Package: lmcp
Version: ${PKGVER}-${PKGREL}
Section: net
Priority: optional
Architecture: all
Depends: lua5.4 | lua5.3 | lua, lua-socket
Maintainer: Markus Fritsche <mfritsche@reauktion.de>
Homepage: https://git.reauktion.de/marfrit/lmcp
Description: Lightweight MCP server in pure Lua
lmcp is a small Model Context Protocol server written in Lua. It exposes
user-defined tools over HTTP for use by AI agents.
.
Library files install to /usr/share/lua/5.4/. The example server is
available as /usr/bin/lmcp-example.
EOF
# Build the .deb. Output to current dir of the caller.
DEB_OUT=lmcp_${PKGVER}-${PKGREL}_all.deb
dpkg-deb --root-owner-group --build "$ROOT" "$HERE/$DEB_OUT"
echo "built: $HERE/$DEB_OUT"