summaryrefslogtreecommitdiff
path: root/justfile
diff options
context:
space:
mode:
Diffstat (limited to 'justfile')
-rw-r--r--justfile90
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 }}