From cf296cf3d721503a6fcf141dbd75fe219850df52 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Tue, 22 Dec 2015 19:40:34 +0000 Subject: [PATCH] Delete the DOS dir to mirror what we do with NANO_WORLDDIR. Copy ubldr and ubldr.bin to the dos partition when we're making it. Minor style fixes. --- tools/tools/nanobsd/embedded/common | 68 ++++++++++++++++------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/tools/tools/nanobsd/embedded/common b/tools/tools/nanobsd/embedded/common index decc08b2c569..76edbab3d0c4 100644 --- a/tools/tools/nanobsd/embedded/common +++ b/tools/tools/nanobsd/embedded/common @@ -106,18 +106,16 @@ NANO_FAT_DIR=${NANO_OBJ}/_.fat customize_cmd cust_allow_ssh_root -add_etc_make_conf() -{ +add_etc_make_conf ( ) ( touch ${NANO_WORLDDIR}/etc/make.conf -} +) customize_cmd add_etc_make_conf -cust_install_machine_files() -{ +cust_install_machine_files ( ) ( echo "cd ${NANO_CFG_BASE}/Files" cd ${NANO_CFG_BASE}/Files find . -print | grep -Ev '/(CVS|\.svn|\.hg|\.git)' | cpio -dumpv ${NANO_WORLDDIR} -} +) customize_cmd cust_install_files customize_cmd cust_install_machine_files @@ -181,8 +179,7 @@ WITHOUT_RCS=true NANO_PACKAGE_ONLY=1 # install a package from a pre-built binary -do_add_pkg () -{ +do_add_pkg ( ) ( # Need to create ${NANO_OBJ}/ports in this add_pkg_${port} function set -x mkdir -p ${NANO_OBJ}/ports/distfiles @@ -200,11 +197,10 @@ do_add_pkg () rmdir ${NANO_WORLDDIR}/usr/ports/distfiles rmdir ${NANO_WORLDDIR}/usr/ports set +x -} +) # Build a port (with the side effect of creating a package) -do_add_port () -{ +do_add_port ( ) ( local port_path port_path=$1 shift @@ -245,11 +241,12 @@ do_add_port () umount ${NANO_WORLDDIR}/usr/ports umount ${NANO_WORLDDIR}/usr/src set +x -} +) # Need to check if this function works with cross-compiling architecture!!!! # Recursive complex fonction: Generate one function for each ports -add_port () { +# writes shell functions called later, so don't do in subshell. +add_port ( ) { local port_path=$1 local port=`echo $1 | sed -e 's/\//_/'` shift @@ -262,7 +259,7 @@ add_port () { if [ -f ${NANO_OBJ}/ports/packages/All/${PKG_NAME}.txz ]; then # Pkg file found: Generate add_pkg_NAME function eval " - add_pkg_${port} () { + add_pkg_${port} ( ) { do_add_pkg ${PKG_NAME} } customize_cmd add_pkg_${port} @@ -270,7 +267,7 @@ add_port () { else # No pkg file: Generate add_port_NAME function eval " - add_port_${port} () { + add_port_${port} ( ) { do_add_port ${port_path} $* } customize_cmd add_port_${port} @@ -329,7 +326,7 @@ create_diskimage_mbr ( ) ( if [ -z "${NANO_CFGDIR}" ]; then echo "Faking cfg dir, it's empty" NANO_CFGDIR=${NANO_OBJ}/_.empty - mkdir ${NANO_CFGDIR} + mkdir -p ${NANO_CFGDIR} fi # XXX -F cfg-mtree eval "${NANO_MAKEFS_UFS}" -s ${NANO_SLICE_CFG_SIZE} \ @@ -377,8 +374,7 @@ create_diskimage_mbr ( ) ( ) > ${NANO_OBJ}/_.di 2>&1 ) -die() -{ +die( ) { echo "$*" exit 1 } @@ -435,19 +431,17 @@ $var=$val" fi done -save_build ( ) -{ +save_build ( ) ( VERSION_FILE=${NANO_WORLDDIR}/etc/version if [ "${SVNREVISION}" = "${REVISION}" ]; then echo "${NANO_NAME}" > "${VERSION_FILE}" else echo "${NANO_NAME} (${SVNREVISION})" > "${VERSION_FILE}" fi -} +) customize_cmd save_build -shrink_md_fbsize ( ) -{ +shrink_md_fbsize ( ) ( # We have a lot of little files on our memory disks. Let's decrease # the block and frag size to fit more little files on them (this # halves our space requirement by ~50% on /etc and /var on 8.x -- @@ -455,17 +449,25 @@ shrink_md_fbsize ( ) # are 4 times larger). sed -i '' -e 's,-S -i 4096,-S -i 4096 -b 4096 -f 512,' \ ${NANO_WORLDDIR}/etc/rc.initdiskless -} +) customize_cmd shrink_md_fbsize customize_cmd cust_comconsole -dos_boot_part ( ) -( +dos_boot_part ( ) ( local d=/usr/local/share/u-boot/${NANO_BOOT_PKG} + # For now, just copy all the files. However, for iMX6 and Allwinner, + # we'll need to put a special boot block at a fixed location + # on the disk as well. + rm -rf ${NANO_FAT_DIR} mkdir ${NANO_FAT_DIR} - cp ${d}/* ${NANO_FAT_DIR} + cp ${d}/* ${NANO_FAT_DIR} + + # Also copy ubldr. u-boot will load it and it will load the kernel + # from the ufs partition + cp ${NANO_WORLDDIR}/boot/ubldr ${NANO_FAT_DIR} + cp ${NANO_WORLDDIR}/boot/ubldr.bin ${NANO_FAT_DIR} ) if [ -n "$NANO_BOOT_PKG" ]; then @@ -480,8 +482,7 @@ if [ -n "$NANO_BOOT_PKG" ]; then customize_cmd dos_boot_part fi -product_custom ( ) -( +product_custom ( ) ( # not quie ready to tweak these in nopriv build if [ -z ${NANO_NOPRIV_BUILD} ]; then # Last second tweaks -- generally not needed @@ -493,6 +494,12 @@ product_custom ( ) chown root:wheel ${NANO_WORLDDIR}/ chown root:wheel ${NANO_WORLDDIR}/usr fi + local rc=${NANO_WORLDDIR}/etc/rc.conf + echo "hostname=nanobsd-${NANO_NAME}" > $rc + echo "growfs_enable=YES" >> $rc + echo "growfs_type=nanobsd-pingpong" >> $rc + echo "ntpdate_enable=YES" >> $rc + echo "ntpdate_hosts=0.freebsd.pool.ntp.org 1.freebsd.pool.ntp.org" >> $rc ) late_customize_cmd product_custom @@ -504,7 +511,8 @@ late_customize_cmd product_custom # For each architecture, we have a standard set of settings to the extent # it makes sense. For architectures that don't have a standard environment # cfg files need to either define a lot of settings, provide their own disk -# imaging, or set which of the variants we support. +# imaging, or set which of the variants we support. No subshells, since we +# set global variables # std_aarch64 ( ) {