Page MenuHomeFreeBSD

D58974.id185117.diff
No OneTemporary

D58974.id185117.diff

diff --git a/tools/tools/nanobsd/customizations.sh b/tools/tools/nanobsd/customizations.sh
--- a/tools/tools/nanobsd/customizations.sh
+++ b/tools/tools/nanobsd/customizations.sh
@@ -132,14 +132,9 @@
if $do_clean; then
tgt_pkg install -F $NANO_PACKAGE_LIST
fi
- mount -t nullfs -o noatime -o ro "$(nano_pkg_cachedir)" "${NANO_WORLDDIR}/var/cache/pkg"
- trap "nano_umount ${NANO_WORLDDIR}/var/cache/pkg" 1 2 15 EXIT
fi
- cp /etc/resolv.conf "${NANO_WORLDDIR}/etc/resolv.conf"
- tgt_pkg_chroot install $NANO_PACKAGE_LIST
- rm -f "${NANO_WORLDDIR}/etc/resolv.conf"
- rm -rf "${NANO_WORLDDIR}/var/db/pkg/repos/"*
+ tgt_pkg install $NANO_PACKAGE_LIST
if [ -d "$NANO_PACKAGE_DIR" ]; then
trap - 1 2 15 EXIT
@@ -200,57 +195,3 @@
fi
)
}
-
-#######################################################################
-# Patch adduser(8)
-
-# Patch adduser script
-cust_adduser() {
- (
- cd "$NANO_WORLDDIR"
-
- [ -n "${NANO_NOPRIV_BUILD}" ] && chmod 0666 usr/sbin/adduser
- if ! patch -s -V none usr/sbin/adduser <<\EOF
---- usr/sbin/adduser
-+++ usr/sbin/adduser
-@@ -197,6 +197,9 @@ add_user() {
- local _shell= _class= _dotdir= _expire= _pwexpire= _passwd= _upasswd=
- local _passwdmethod= _pwcmd=
-
-+ ${MOUNTCMD} -uw /
-+ trap "${MOUNTCMD} -ur /" 1 2 15 EXIT
-+
- # Is this a configuration run? If so, don't modify user database.
- #
- if [ -n "$configflag" ]; then
-@@ -322,6 +325,20 @@ add_user() {
- info "Sent welcome message to ($username)."
- fi
- fi
-+
-+ ${MOUNTCMD} -ur /
-+ trap - 1 2 15 EXIT
-+
-+ touch "/etc/ssh/authorized_keys/${username}"
-+ chown "${username}:${ulogingroup:-$username}" "/etc/ssh/authorized_keys/${username}"
-+ chmod 0600 "/etc/ssh/authorized_keys/${username}"
-+
-+ ${MOUNTCMD} /cfg
-+ trap "${UMOUNTCMD} /cfg" 1 2 15 EXIT
-+ cp -p /etc/master.passwd /etc/passwd /etc/pwd.db /etc/spwd.db /etc/group /cfg
-+ cp -p "/etc/ssh/authorized_keys/${username}" "/cfg/ssh/authorized_keys/${username}"
-+ ${UMOUNTCMD} /cfg
-+ trap - 1 2 15 EXIT
- }
-
- # get_user
-EOF
- then
- err "Patching /usr/sbin/adduser failed!"
- fi
- [ -n "${NANO_NOPRIV_BUILD}" ] && chmod 0555 usr/sbin/adduser
- if [ -z "$NANO_NOPKGBASE" ]; then
- tgt_pkg_update_file_sha256 usr/sbin/adduser
- fi
- )
-}
diff --git a/tools/tools/nanobsd/legacy.sh b/tools/tools/nanobsd/legacy.sh
--- a/tools/tools/nanobsd/legacy.sh
+++ b/tools/tools/nanobsd/legacy.sh
@@ -117,6 +117,9 @@
NANO_CUST_FILES_MTREE=""
+# Where cust_pkgng() finds packages to install
+NANO_PACKAGE_DIR=${NANO_SRC}/${NANO_TOOLS}/Pkg
+NANO_PACKAGE_LIST="*"
#######################################################################
# Functions and variable definitions used by the legacy nanobsd
@@ -615,3 +618,78 @@
tgt_touch conf/default/etc/remount
)
}
+
+#######################################################################
+# Install packages from ${NANO_PACKAGE_DIR}
+
+#
+# Bootstrap pkg and install all packages from NANO_PACKAGE_DIR
+# into NANO_WORLDDIR via a nullfs-mounted chroot
+#
+cust_pkgng() {
+ if ! $do_root && [ -n "$NANO_NOPRIV_BUILD" ]; then
+ pprint 2 'Skipping "cust_pkgng" (unprivileged builds not supported yet)'
+ return 0
+ fi
+
+ mkdir -p ${NANO_WORLDDIR}/usr/local/etc
+ local PKG_CONF="${NANO_WORLDDIR}/usr/local/etc/pkg.conf"
+ local PKGCMD="env BATCH=YES 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
+ NANO_PACKAGE_DIR="$(realpath $NANO_PACKAGE_DIR)"
+ if [ ! -d ${NANO_PACKAGE_DIR} ]; then
+ echo "DONE 0 packages"
+ return 0
+ fi
+
+ # Find a pkg-* package
+ for x in $(find -s ${NANO_PACKAGE_DIR} -iname 'pkg-*'); do
+ _NANO_PKG_PACKAGE=$(basename "$x")
+ done
+ if [ -z "${_NANO_PKG_PACKAGE}" -o ! -f "${NANO_PACKAGE_DIR}/${_NANO_PKG_PACKAGE}" ]; then
+ err "FAILED: need a pkg/ package for bootstrapping"
+ fi
+
+ # Mount packages into chroot
+ mkdir -p ${NANO_WORLDDIR}/_.p
+ mount -t nullfs -o noatime -o ro ${NANO_PACKAGE_DIR} ${NANO_WORLDDIR}/_.p
+ mount -t devfs devfs ${NANO_WORLDDIR}/dev
+
+ trap "nano_umount ${NANO_WORLDDIR}/dev; nano_umount ${NANO_WORLDDIR}/_.p ; rm -xrf ${NANO_WORLDDIR}/_.p" 1 2 15 EXIT
+
+ # Install pkg-* package
+ CR "${PKGCMD} add /_.p/${_NANO_PKG_PACKAGE}"
+
+ (
+ # Expand any glob characters in package list
+ cd "${NANO_PACKAGE_DIR}"
+ _PKGS=$(find ${NANO_PACKAGE_LIST} -not -name "${_NANO_PKG_PACKAGE}" -print | sort -u)
+
+ # Show todo
+ todo=$(echo "$_PKGS" | wc -l)
+ echo "=== TODO: $todo"
+ echo "$_PKGS"
+ echo "==="
+
+ # Install packages
+ for _PKG in $_PKGS; do
+ CR "${PKGCMD} add /_.p/${_PKG}"
+ done
+ )
+
+ CR0 "${PKGCMD} info"
+
+ trap - 1 2 15 EXIT
+ nano_umount ${NANO_WORLDDIR}/dev
+ nano_umount ${NANO_WORLDDIR}/_.p
+ rm -xrf ${NANO_WORLDDIR}/_.p
+}

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 2, 1:35 PM (15 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37471036
Default Alt Text
D58974.id185117.diff (4 KB)

Event Timeline