aboutsummaryrefslogtreecommitdiffstats
path: root/roles/host/templates
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2026-07-25 12:14:27 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-07-25 12:14:27 +0300
commit6bf890f5bcafd9747509efe1122a6132a064a53e (patch)
treecb654270c56a0f882744b4cc6217e9addf41fd54 /roles/host/templates
parentda9a729eaf6fac9b0cc532dcf0056ba76c7f677d (diff)
Set up poudriere custom repo
Diffstat (limited to 'roles/host/templates')
-rw-r--r--roles/host/templates/etc_crontab.j24
-rw-r--r--roles/host/templates/poudriere_build_make.conf.j22
-rw-r--r--roles/host/templates/usr_local_bin_poudriere_start_build.sh.j22
-rw-r--r--roles/host/templates/usr_local_bin_update_ports.sh.j261
-rw-r--r--roles/host/templates/usr_local_etc_poudriere.conf.j213
-rw-r--r--roles/host/templates/usr_local_etc_poudriere_pkglist.j211
6 files changed, 93 insertions, 0 deletions
diff --git a/roles/host/templates/etc_crontab.j2 b/roles/host/templates/etc_crontab.j2
index 33276ab..a78c105 100644
--- a/roles/host/templates/etc_crontab.j2
+++ b/roles/host/templates/etc_crontab.j2
@@ -30,3 +30,7 @@ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
*/10 * * * * root python -m pylogsentinel
# Run pylogsentinel batch job once a day
5 6 * * * root /usr/local/bin/pylogsentinel-batch-email.sh
+
+# Update ports trees nightly
+0 2 * * * root /usr/local/bin/update-ports quarterly >>/var/log/update-ports.log 2>&1
+5 2 * * * root /usr/local/bin/update-ports custom >>/var/log/update-ports.log 2>&1
diff --git a/roles/host/templates/poudriere_build_make.conf.j2 b/roles/host/templates/poudriere_build_make.conf.j2
new file mode 100644
index 0000000..6bc860f
--- /dev/null
+++ b/roles/host/templates/poudriere_build_make.conf.j2
@@ -0,0 +1,2 @@
+DEFAULT_VERSIONS+=python=3.12 python3=3.12
+DISABLE_LICENSES=yes
diff --git a/roles/host/templates/usr_local_bin_poudriere_start_build.sh.j2 b/roles/host/templates/usr_local_bin_poudriere_start_build.sh.j2
new file mode 100644
index 0000000..6bbd379
--- /dev/null
+++ b/roles/host/templates/usr_local_bin_poudriere_start_build.sh.j2
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec poudriere bulk -j poudriere_build -p quarterly -O custom -f /usr/local/etc/poudriere-pkglist "$@"
diff --git a/roles/host/templates/usr_local_bin_update_ports.sh.j2 b/roles/host/templates/usr_local_bin_update_ports.sh.j2
new file mode 100644
index 0000000..ad4102d
--- /dev/null
+++ b/roles/host/templates/usr_local_bin_update_ports.sh.j2
@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+usage() {
+ echo "Usage: update-ports [quarterly|custom]"
+ exit 1
+}
+
+[ $# -eq 1 ] || usage
+
+BASEDIR=/usr/ports
+REMOTE_QUARTERLY="https://github.com/freebsd/freebsd-ports.git"
+REMOTE_CUSTOM="https://github.com/jantuomi/freebsd-ports-custom.git"
+
+case "$1" in
+quarterly)
+ # Find the newest quarterly branch
+ BRANCH=$(git ls-remote --heads "$REMOTE_QUARTERLY" | grep -oE 'refs/heads/[0-9]{4}Q[0-9]' | sort -t/ -k3 -V | tail -1 | sed 's|refs/heads/||')
+ if [ -z "$BRANCH" ]; then
+ echo "Error: Could not determine quarterly branch"
+ exit 1
+ fi
+
+ # Check if already at this version
+ VERSION_FILE="${BASEDIR}/quarterly/.version"
+ if [ -f "$VERSION_FILE" ] && [ "$(cat "$VERSION_FILE")" = "$BRANCH" ]; then
+ echo "Quarterly ports tree already at $BRANCH."
+ exit 0
+ fi
+
+ echo "Downloading quarterly ports tree (branch: $BRANCH)..."
+ TMPDIR="${BASEDIR}/.quarterly.new"
+ rm -rf "$TMPDIR"
+ mkdir -p "$TMPDIR"
+ fetch -qo- "https://github.com/freebsd/freebsd-ports/archive/refs/heads/${BRANCH}.tar.gz" | tar -xf - -C "$TMPDIR" --strip-components=1
+ echo "$BRANCH" > "$TMPDIR/.version"
+
+ if [ -d "${BASEDIR}/quarterly" ]; then
+ mv "${BASEDIR}/quarterly" "${BASEDIR}/.quarterly.old"
+ fi
+ mv "$TMPDIR" "${BASEDIR}/quarterly"
+ rm -rf "${BASEDIR}/.quarterly.old" &
+ echo "Done. Quarterly ports tree updated to $BRANCH."
+ ;;
+custom)
+ # Clone or update
+ if [ -d "${BASEDIR}/custom/.git" ]; then
+ echo "Updating custom ports overlay..."
+ git -C "${BASEDIR}/custom" fetch origin
+ git -C "${BASEDIR}/custom" reset --hard origin/main
+ else
+ echo "Cloning custom ports overlay..."
+ rm -rf "${BASEDIR}/custom"
+ git clone "$REMOTE_CUSTOM" "${BASEDIR}/custom"
+ fi
+ echo "Done. Custom ports overlay updated."
+ ;;
+*)
+ usage
+ ;;
+esac
diff --git a/roles/host/templates/usr_local_etc_poudriere.conf.j2 b/roles/host/templates/usr_local_etc_poudriere.conf.j2
new file mode 100644
index 0000000..965ca3a
--- /dev/null
+++ b/roles/host/templates/usr_local_etc_poudriere.conf.j2
@@ -0,0 +1,13 @@
+ZPOOL=zroot
+ZROOTFS=/poudriere
+FREEBSD_HOST=https://download.FreeBSD.org
+RESOLV_CONF=/etc/resolv.conf
+BASEFS=/usr/local/poudriere
+DISTFILES_CACHE=/usr/local/poudriere/distfiles
+USE_PORTLINT=no
+USE_TMPFS=yes
+NOLINUX=yes
+ALLOW_MAKE_JOBS=yes
+MAKE_JOBS_NUMBER={{ ansible_processor_count | default(4) }}
+PACKAGE_FETCH_BRANCH=quarterly
+PACKAGE_FETCH_URL=pkg+https://pkg.FreeBSD.org/{{ pkg_abi }}
diff --git a/roles/host/templates/usr_local_etc_poudriere_pkglist.j2 b/roles/host/templates/usr_local_etc_poudriere_pkglist.j2
new file mode 100644
index 0000000..add1784
--- /dev/null
+++ b/roles/host/templates/usr_local_etc_poudriere_pkglist.j2
@@ -0,0 +1,11 @@
+databases/py-tinydb
+www/py-ua-parser
+www/py-user-agents
+sysutils/pylogsentinel
+net-im/taulubot
+net-im/hommabot
+www/aggro
+www/diddle
+www/expense-tracker
+www/gdrive-photo-gallery
+www/pastebin