blob: d0d0143a052d4a2d2de6f3db9b08a19ab57b880c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 }}
|