#!/bin/bash # Build lmcp__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 # Debian-conventional pre-release notation: 1.0.0~rc1 sorts BEFORE 1.0.0. # Upstream tag is v1.0.0-rc1 (with dash); UPSTREAM_TAG drives the source URL, # PKGVER feeds the Debian package version field. PKGVER=1.0.0~rc1 UPSTREAM_TAG=v1.0.0-rc1 PKGREL=1 LMCP_TARBALL_SHA256=81f9222264371735c196664382460261ef60a259348766bbd6fd2f49ea9d1e7e 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 -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" < 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"