#!/bin/sh # $Id: pbulk-root.sh,v 4.6 2016/02/18 22:48:03 asau Stab asau $ set -e _progname="${0##*/}" usage="usage: ${0##*/} [-n] [-c mk.conf.fragment] [-l packages.list] [-p pkgsrc] [-d distdir] [-P packages] [-a agent-script] [path]" while getopts "c:nl:p:d:P:a:" opt; do case $opt in c) mk_fragment="${OPTARG}";; n) native=yes;; l) limited_list="${OPTARG}";; p) PKGSRCDIR="${OPTARG}";; d) DISTDIR="${OPTARG}";; P) PACKAGES="${OPTARG}";; a) agent_script="${OPTARG}";; \?) echo "$usage" 1>&2; exit 1;; esac done shift $(expr $OPTIND - 1) if [ $# -gt 1 ]; then echo "$usage" 1>&2; exit 1; fi case "$1" in */*) JAIL="$1";; # path *) JAILNAME="$1";; # name esac : ${JAILNAME:=pbulk} : ${JAILBASE:=/usr/jail} : ${JAIL:=${JAILBASE}/${JAILNAME}} : ${PKGSRCDIR:=/usr/pkgsrc} : ${DISTDIR:=${PKGSRCDIR}/distfiles} : ${PACKAGES:=${PKGSRCDIR}/packages} : ${agent_script:=${PKGSRCDIR}/mk/pbulk/pbulk.sh} if [ ! -f "${agent_script}" ]; then # require pbulk deployment script echo "${0##*/}: pbulk.sh script required" 1>&2; exit 1 fi # Create environment, if it doesn't exist, and make it functional in general: if [ ! -x ${JAIL}/bin/sh ]; then create-root ${JAIL} fi cat /etc/resolv.conf > ${JAIL}/etc/resolv.conf start-root ${JAIL} mkdir -p ${DISTDIR} mkdir -p ${PACKAGES} mkdir -p ${JAIL}/usr/pkgsrc mount -t null -o ro ${PKGSRCDIR} ${JAIL}/usr/pkgsrc mount -t null -o rw ${DISTDIR} ${JAIL}/usr/pkgsrc/distfiles mount -t null -o rw ${PACKAGES} ${JAIL}/usr/pkgsrc/packages # Deploy bulk build tools, if not deployed already: if [ ! -x ${JAIL}/usr/pbulk/bin/bulkbuild ]; then cat "${agent_script}" > ${JAIL}/root/pbulk.sh if [ -n "$mk_fragment" ]; then cat "$mk_fragment" > ${JAIL}/root/mk.conf.frag; fi PACKAGES=/usr/pkgsrc/packages chroot ${JAIL} /bin/sh /root/pbulk.sh ${native:+-n} ${limited_list:+-l} ${mk_fragment:+-c /root/mk.conf.frag} fi # Configure limited list, if given: if [ -n "$limited_list" ]; then cat "$limited_list" > ${JAIL}/usr/pbulk/etc/pbulk.list; fi # Run: (unset TMP; unset TEMP; unset TMPDIR; unset DISTDIR; unset PACKAGES; PACKAGES=/usr/pkgsrc/packages WRKOBJDIR=/tmp exec chroot ${JAIL} /usr/pbulk/bin/bulkbuild) ||: umount ${JAIL}/usr/pkgsrc/packages umount ${JAIL}/usr/pkgsrc/distfiles umount ${JAIL}/usr/pkgsrc # Stop: stop-root ${JAIL}