svn commit: r297621 - head/tools/tools/nanobsd
Warner Losh
imp at FreeBSD.org
Wed Apr 6 19:34:46 UTC 2016
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
)
#######################################################################
More information about the svn-src-head
mailing list