From c141a204ed4a14759795804f87280ffef765f9c6 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 28 Mar 2026 13:35:41 +0200 Subject: Move package build/upload scripts from gogios Magefile to conf/packages Packaging logic is now OS-agnostic shell scripts + Makefile, reusable for any Go project. Cross-compiles locally, SCPs to target host for native packaging, and uploads to the PV. Co-Authored-By: Claude Opus 4.6 --- packages/scripts/pkg-freebsd.sh | 54 +++++++++++++++++++++++++++++++++++++++++ packages/scripts/pkg-openbsd.sh | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100755 packages/scripts/pkg-freebsd.sh create mode 100755 packages/scripts/pkg-openbsd.sh (limited to 'packages/scripts') diff --git a/packages/scripts/pkg-freebsd.sh b/packages/scripts/pkg-freebsd.sh new file mode 100755 index 0000000..bd3dcf2 --- /dev/null +++ b/packages/scripts/pkg-freebsd.sh @@ -0,0 +1,54 @@ +#!/bin/sh +# Build a FreeBSD package from a pre-compiled binary and upload to the repo PV. +# Run on a FreeBSD host (e.g. f0). Called by the Makefile via SSH. +# +# Arguments: +# $1 — package name (e.g. gogios) +# $2 — version (e.g. 1.4.1) +# $3 — one-line comment +# $4 — description +# $5 — maintainer email +# $6 — project URL +# $7 — PV destination path (e.g. /data/nfs/k3svolumes/pkgrepo/freebsd/FreeBSD:15:amd64/latest) + +set -e + +NAME="$1" +VERSION="$2" +COMMENT="$3" +DESC="$4" +MAINTAINER="$5" +WWW="$6" +PV_DEST="$7" + +WORKDIR="/tmp/${NAME}-pkg" +rm -rf "$WORKDIR" +mkdir -p "$WORKDIR/stage/usr/local/bin" "$WORKDIR/out/All" + +# Place the pre-compiled binary +cp "/tmp/${NAME}" "$WORKDIR/stage/usr/local/bin/${NAME}" +chmod 755 "$WORKDIR/stage/usr/local/bin/${NAME}" + +# Packing list — files relative to prefix +printf 'bin/%s\n' "$NAME" > "$WORKDIR/plist" + +# Package manifest +cat > "$WORKDIR/+MANIFEST" <-pkg/out/ for the Makefile to retrieve. +# +# Arguments: +# $1 — package name (e.g. gogios) +# $2 — version (e.g. 1.4.1) +# $3 — one-line comment +# $4 — description + +set -e + +NAME="$1" +VERSION="$2" +COMMENT="$3" +DESC="$4" + +WORKDIR="/tmp/${NAME}-pkg" +doas rm -rf "$WORKDIR" +mkdir -p "$WORKDIR/stage/usr/local/bin" "$WORKDIR/out" + +# Place the pre-compiled binary +cp "/tmp/${NAME}" "$WORKDIR/stage/usr/local/bin/${NAME}" +chmod 755 "$WORKDIR/stage/usr/local/bin/${NAME}" + +# Packing list +printf 'usr/local/bin/%s\n' "$NAME" > "$WORKDIR/plist" + +# Description file +printf '%s\n' "$DESC" > "$WORKDIR/desc" + +# Build the package +doas pkg_create \ + -D COMMENT="$COMMENT" \ + -d "$WORKDIR/desc" \ + -f "$WORKDIR/plist" \ + -B "$WORKDIR/stage" \ + -p / \ + "$WORKDIR/out/${NAME}-${VERSION}.tgz" + +# Sign with signify if the key exists +if [ -f /etc/signify/custom-pkg.sec ]; then + mkdir -p "$WORKDIR/signed" + doas pkg_sign -s signify2 -s /etc/signify/custom-pkg.sec \ + -o "$WORKDIR/signed" "$WORKDIR/out/${NAME}-${VERSION}.tgz" + mv "$WORKDIR/signed/${NAME}-${VERSION}.tgz" "$WORKDIR/out/${NAME}-${VERSION}.tgz" + rm -rf "$WORKDIR/signed" + echo "Package signed with signify" +else + echo "Warning: /etc/signify/custom-pkg.sec not found, package is unsigned" +fi + +echo "OpenBSD package ${NAME}-${VERSION} built in $WORKDIR/out/" -- cgit v1.2.3