diff options
| author | cashmere <cashmere@autistici.org> | 2026-07-25 13:55:02 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-07-25 13:55:02 +0200 |
| commit | a19f2d101a0d2a8ba21b5f723c2e6a842c7ae71d (patch) | |
| tree | bb73c3f99f463bb4776159668c127459b5a54d3c | |
| parent | 8132c06bf78e2ed39deb917fd9e96823e40b7b42 (diff) | |
| download | ports-a19f2d101a0d2a8ba21b5f723c2e6a842c7ae71d.tar.gz | |
justfile: wrap the daily poudriere workflows
| -rw-r--r-- | justfile | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/justfile b/justfile new file mode 100644 index 0000000..d0d0143 --- /dev/null +++ b/justfile @@ -0,0 +1,90 @@ +# justfile for the cashmere/ports overlay. +# Wraps the poudriere workflow from AGENTS.md — run from the repo root. +# Host-side make runs as the user; DISTDIR/WRKDIRPREFIX/PORTSDIR come from ~/.env. + +set minimum-version := '1.39.0' + +jail := "151amd64" +tree := "base" +overlay := "custom" +pkgdir := "/usr/local/poudriere/data/packages/" + jail + "-" + tree + "/All" +pkglist := justfile_directory() / "pkglist" + +doas := require("doas") +poudriere := require("poudriere") + +# List the available recipes +[default] +default: + @just --list + +# Test a port in the poudriere jail: just test kimi-code +[group('ports')] +test port: + #!/usr/bin/env bash + set -euo pipefail + dir=$(ls -d */{{ quote(port) }} 2>/dev/null | head -1) || true + [ -n "$dir" ] || { echo "port '{{ port }}' not found in overlay" >&2; exit 1; } + {{ doas }} {{ poudriere }} testport -j {{ jail }} -p {{ tree }} -O {{ overlay }} -o "$dir" + +# Install a port systemwide, building it first if the package is missing: just install kimi-code +[group('ports')] +install port: + #!/usr/bin/env bash + set -euo pipefail + . ~/.env + dir=$(ls -d */{{ quote(port) }} 2>/dev/null | head -1) || true + [ -n "$dir" ] || { echo "port '{{ port }}' not found in overlay" >&2; exit 1; } + pkgname=$(make -C "$dir" -V PKGNAME) + # testport does not keep its package; bulk does + [ -n "$pkgname" ] && [ -f "{{ pkgdir }}/$pkgname.pkg" ] \ + || {{ doas }} {{ poudriere }} bulk -j {{ jail }} -p {{ tree }} -O {{ overlay }} "$dir" + {{ doas }} pkg install -y "$dir" + +# Upgrade a port to a new version, then build and install it: just upgrade kimi-code 0.29.0 +[group('ports')] +upgrade port version: + #!/usr/bin/env bash + set -euo pipefail + . ~/.env + dir=$(ls -d */{{ quote(port) }} 2>/dev/null | head -1) || true + [ -n "$dir" ] || { echo "port '{{ port }}' not found in overlay" >&2; exit 1; } + old_dist=$(make -C "$dir" -V DISTFILES) + sed -i '' 's/^DISTVERSION=.*/DISTVERSION= {{ version }}/' "$dir/Makefile" + # npm ports (lockfile present): regenerate files/package-lock.json per the overlay workflow + if [ -f "$dir/files/package-lock.json" ]; then + mv "$dir/files/package-lock.json" "$dir/files/package-lock.json.old" + make -C "$dir" fetch + cp "$WRKDIRPREFIX/$(pwd)/$dir/work/package-lock.json.generated" "$dir/files/package-lock.json" + rm "$dir/files/package-lock.json.old" + make -C "$dir" clean distclean + fi + make -C "$dir" fetch + make -C "$dir" makesum + # regenerate the plist if the port has one (hashed asset names change every release) + if [ -f "$dir/pkg-plist" ]; then + make -C "$dir" makeplist | tail -n +2 > "$dir/pkg-plist.new" + mv "$dir/pkg-plist.new" "$dir/pkg-plist" + make -C "$dir" clean + fi + # bulk validates the port (check-plist, stage-qa) and keeps the package for pkg install + {{ doas }} {{ poudriere }} bulk -j {{ jail }} -p {{ tree }} -O {{ overlay }} "$dir" + {{ doas }} pkg install "$dir" + # prune the previous version's distfile (may be root-owned) + [ -z "$old_dist" ] || {{ doas }} rm -f "$DISTDIR/$old_dist" + +# Bulk-build every port in the overlay (the tracked pkglist) +[group('repo')] +bulk: + {{ doas }} {{ poudriere }} bulk -j {{ jail }} -p {{ tree }} -O {{ overlay }} -f {{ pkglist }} + +# Update the base ports tree (git pull --rebase of the pinned quarterly branch) +[group('repo')] +update-tree: + {{ doas }} {{ poudriere }} ports -u -p {{ tree }} + +# Stop a running poudriere build +[confirm('Kill the running build in jail ' + jail + '?')] +[group('repo')] +stop: + {{ doas }} {{ poudriere }} jail -k -j {{ jail }} |
