Date: Wed, 6 Apr 2016 19:34:44 +0000 (UTC) From: Warner Losh <imp@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r297621 - head/tools/tools/nanobsd Message-ID: <201604061934.u36JYinF059830@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: imp Date: Wed Apr 6 19:34:44 2016 New Revision: 297621 URL: https://svnweb.freebsd.org/changeset/base/297621 Log: Update cust_pkgng with a simpler, more robust version. We don't need to loop for pkg, which simplifies things. Modified: head/tools/tools/nanobsd/defaults.sh (contents, props changed) Modified: head/tools/tools/nanobsd/defaults.sh ============================================================================== --- head/tools/tools/nanobsd/defaults.sh Wed Apr 6 16:50:18 2016 (r297620) +++ head/tools/tools/nanobsd/defaults.sh Wed Apr 6 19:34:44 2016 (r297621) @@ -916,6 +916,17 @@ cust_install_files ( ) ( cust_pkgng ( ) ( + local PKG_CONF="${NANO_WORLDDIR}/usr/local/etc/pkg.conf" + local PKGCMD="env ASSUME_ALWAYS_YES=YES PKG_DBDIR=${NANO_PKG_META_BASE}/pkg SIGNATURE_TYPE=none /usr/sbin/pkg" + + # Ensure pkg.conf points pkg to where the package meta data lives. + touch ${PKG_CONF} + if grep -Eiq '^PKG_DBDIR:.*' ${PKG_CONF}; then + sed -i -e "\|^PKG_DBDIR:.*|Is||PKG_DBDIR: "\"${NANO_PKG_META_BASE}/pkg\""|" ${PKG_CONF} + else + echo "PKG_DBDIR: \"${NANO_PKG_META_BASE}/pkg\"" >> ${PKG_CONF} + fi + # If the package directory doesn't exist, we're done. if [ ! -d ${NANO_PACKAGE_DIR} ]; then echo "DONE 0 packages" @@ -930,52 +941,28 @@ cust_pkgng ( ) ( echo "FAILED: need a pkg/ package for bootstrapping" exit 2 fi + NANO_PACKAGE_LIST="${_NANO_PKG_PACKAGE} ${NANO_PACKAGE_LIST}" - # Copy packages into chroot - mkdir -p ${NANO_WORLDDIR}/Pkg - ( - cd "${NANO_PACKAGE_DIR}" - find ${NANO_PACKAGE_LIST} -print | - cpio -Ldumpv ${NANO_WORLDDIR}/Pkg - ) - - #Bootstrap pkg - CR env ASSUME_ALWAYS_YES=YES SIGNATURE_TYPE=none /usr/sbin/pkg add /Pkg/${_NANO_PKG_PACKAGE} - CR pkg -N >/dev/null 2>&1 - if [ "$?" -ne "0" ]; then - echo "FAILED: pkg bootstrapping faied" - exit 2 - fi - rm -f ${NANO_WORLDDIR}/Pkg/pkg-* + # Mount packages into chroot + mkdir -p ${NANO_WORLDDIR}/_.p + mount -t nullfs -o noatime -o ro ${NANO_PACKAGE_DIR} ${NANO_WORLDDIR}/_.p + + trap "umount ${NANO_WORLDDIR}/_.p ; rm -rf ${NANO_WORLDDIR}/_.p" 1 2 15 - # Count & report how many we have to install - todo=`ls ${NANO_WORLDDIR}/Pkg | /usr/bin/wc -l` - todo=$(expr $todo + 1) # add one for pkg since it is installed already + # Install packages + todo="$(echo "${NANO_PACKAGE_LIST}" | awk '{ print NF }')" echo "=== TODO: $todo" - ls ${NANO_WORLDDIR}/Pkg + echo "${NANO_PACKAGE_LIST}" echo "===" - while true - do - # Record how many we have now - have=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - - # Attempt to install more packages - CR0 'ls 'Pkg/*txz' | xargs env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg add' - - # See what that got us - now=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - echo "=== NOW $now" - CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info - echo "===" - if [ $now -eq $todo ] ; then - echo "DONE $now packages" - break - elif [ $now -eq $have ] ; then - echo "FAILED: Nothing happened on this pass" - exit 2 - fi + for _PKG in ${NANO_PACKAGE_LIST}; do + CR "${PKGCMD} add /_.p/${_PKG}" done - rm -rf ${NANO_WORLDDIR}/Pkg + + CR0 "${PKGCMD} info" + + trap - 1 2 15 EXIT + umount ${NANO_WORLDDIR}/_.p + rm -rf ${NANO_WORLDDIR}/_.p ) #######################################################################
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604061934.u36JYinF059830>