@@ -239,21 +239,18 @@ convert_package_list() {
239
239
240
240
install_world_from_pkgbase ()
241
241
{
242
- OSVERSION=$( awk -F ' "' ' /REVISION=/ { print $2 }' ${mnt} /usr/src/sys/conf/newvers.sh | cut -d ' .' -f 1)
243
- mkdir -p ${WRKDIR:? } /world/etc/pkg/
244
- pkg_abi=$( get_pkg_abi)
245
- cat << -EOF > ${WRKDIR:? } /world/etc/pkg/FreeBSD-base.conf
246
- local: {
247
- url: file://${POUDRIERE_DATA} /images/${JAILNAME} -repo/FreeBSD:${OSVERSION} :${pkg_abi} /latest,
248
- enabled: true
249
- }
250
- -EOF
251
- pkg -o ABI_FILE=" ${mnt} /usr/lib/crt1.o" -o REPOS_DIR=${WRKDIR} /world/etc/pkg/ -o ASSUME_ALWAYS_YES=yes -r ${WRKDIR:? } /world update ${PKG_QUIET}
242
+ _repos_dir=" ${WRKDIR:? } /world/etc/pkg"
243
+ _pkg_cmd=" pkg -o ABI_FILE='${mnt:? } /usr/lib/crt1.o' -o REPOS_DIR='${_repos_dir} ' -o ASSUME_ALWAYS_YES=yes -r '${WRKDIR} /world'"
244
+ mkdir -p " ${_repos_dir} "
245
+ cp " ${mnt} /etc/pkg/pkgbase.conf" " ${_repos_dir} /FreeBSD-base.conf"
246
+ ${_pkg_cmd} update ${PKG_QUIET}
252
247
msg " Installing base packages"
253
- while read line; do
254
- pkg -o ABI_FILE=" ${mnt} /usr/lib/crt1.o" -o REPOS_DIR=${WRKDIR} /world/etc/pkg/ -o ASSUME_ALWAYS_YES=yes -r ${WRKDIR:? } /world install -r local ${PKG_QUIET} -y ${line}
255
- done < ${PKGBASELIST}
256
- rm ${WRKDIR:? } /world/etc/pkg/FreeBSD-base.conf
248
+ if [ -n " ${PKGBASELIST} " ]; then
249
+ xargs ${_pkg_cmd} install -r local ${PKG_QUIET} -y < ${PKGBASELIST}
250
+ else
251
+ ${_pkg_cmd} install -r local ${PKG_QUIET} -y -g ' FreeBSD-*'
252
+ fi
253
+ rm " ${_repos_dir} /FreeBSD-base.conf"
257
254
msg " Base packages installed"
258
255
}
259
256
@@ -272,7 +269,6 @@ install_world()
272
269
}
273
270
274
271
HOSTNAME=poudriere-image
275
- INSTALLWORLD=install_world
276
272
PKG_QUIET=" -q"
277
273
278
274
: ${PRE_BUILD_SCRIPT:= " " }
@@ -344,7 +340,6 @@ while getopts "A:bB:c:f:h:i:j:m:n:o:p:P:R:s:S:t:vw:X:z:" FLAG; do
344
340
OPTARG=" ${SAVED_PWD} /${OPTARG} "
345
341
[ -r " ${OPTARG} " ] || err 1 " No such package list: ${OPTARG} "
346
342
PKGBASELIST=${OPTARG}
347
- INSTALLWORLD=install_world_from_pkgbase
348
343
;;
349
344
R)
350
345
ZFS_SEND_FLAGS=" -${OPTARG} "
@@ -437,7 +432,6 @@ WRKDIR=$(mktemp -d ${POUDRIERE_DATA}/images/${IMAGENAME}-XXXX)
437
432
if [ " ${TMPFS_IMAGE:- 0} " -eq 1 -o " ${TMPFS_ALL} " -eq 1 ]; then
438
433
mnt_tmpfs image " ${WRKDIR:? } "
439
434
fi
440
- _jget mnt ${JAILNAME} mnt || err 1 " Missing mnt metadata for jail"
441
435
excludelist=$( mktemp -t excludelist)
442
436
mkdir -p ${WRKDIR:? } /world
443
437
mkdir -p ${WRKDIR:? } /out
@@ -452,6 +446,14 @@ boot/kernel.old
452
446
nxb-bin
453
447
EOF
454
448
449
+ _jget method ${JAILNAME} method || err 1 " Missing method metadata for jail"
450
+ if [ " ${method} " = " pkgbase" ]; then
451
+ INSTALLWORLD=install_world_from_pkgbase
452
+ else
453
+ [ -n " ${PKGBASELIST} " ] && err 1 " -P used for a non-pkgbase jail!"
454
+ INSTALLWORLD=install_world
455
+ fi
456
+
455
457
# Need to convert IMAGESIZE from bytes to bibytes
456
458
# This conversion is needed to be compliant with marketing 'unit'
457
459
# without this, a 2GiB image will not fit into a 2GB flash disk (=1862MiB)
0 commit comments