#!/bin/sh -Cefux set -Cefux pool=zroot base_dir=/root/files/fbsd/release/dist dir_clean="$base_dir/clean" dir_clean_new="$dir_clean.new" dir_full="$base_dir/full" dir_full_new="$dir_full.new" dir_jail="$base_dir/jail" dir_jail_new="$dir_jail.new" _make() { local jobs_arg= case "$*" in *build*) jobs_arg="-j $((`sysctl -n hw.ncpu` * 2))" ;; esac time -h make -C /usr/src $jobs_arg $@ } _tar_tar() { local src="$1" local dst="$2" tar -cf- -C "$src" . | tar -vxpf- -C "$dst" } _install_clean() { zfs create "$pool$dir_clean_new" _make installworld installkernel distribution "DESTDIR=$dir_clean_new" zfs set readonly=on "$pool$dir_clean_new" zfs destroy "$pool$dir_clean" zfs rename "$pool$dir_clean_new" "$pool$dir_clean" } _install_full() { zfs create "$pool$dir_full_new" _tar_tar "$dir_clean" "$dir_full_new" zfs set readonly=on "$pool$dir_full_new" zfs destroy "$pool$dir_full" zfs rename "$pool$dir_full_new" "$pool$dir_full" } _install_jail() { zfs create "$pool$dir_jail_new" _tar_tar "$dir_clean" "$dir_jail_new" /root/files/copy-overlay-jail.sh zfs set readonly=on "$pool$dir_jail_new" } case "$1" in o) rm -vfr /usr/obj ;; b) _make buildworld buildkernel ;; i-k) _make installkernel ;; e-p) etcupdate -p ;; i-w) _make installworld ;; e-b) etcupdate -B ;; e-r) etcupdate resolve ;; c) _make check-old ;; d) _make delete-old ;; d-l) _make delete-old-libs ;; k-c) rm -vfr /boot/kernel.old ;; ic) _install_clean ;; f) _install_full ;; j) _install_jail ;; z-d) zfs destroy "$pool$dir_jail" ;; z-r) zfs rename "$pool$dir_jail_new" "$pool$dir_jail" ;; u) tail -27 "$0" ;; *) exit 1 ;; esac