Author: imp
Date: Sun Feb  7 16:44:13 2016
New Revision: 295377
URL: https://svnweb.freebsd.org/changeset/base/295377

Log:
  Use new NANO_LOG to put the logs some place reasonable. Also, share
  the object directory among all builds where it makes sense. When
  building with NANO_CPUTYPE, separate that out to its own object
  directory. Put disk files in their own directories.
  
  This should make having multiple variants of the same architecture
  saner.

Modified:
  head/tools/tools/nanobsd/embedded/common

Modified: head/tools/tools/nanobsd/embedded/common
==============================================================================
--- head/tools/tools/nanobsd/embedded/common    Sun Feb  7 16:44:06 2016        
(r295376)
+++ head/tools/tools/nanobsd/embedded/common    Sun Feb  7 16:44:13 2016        
(r295377)
@@ -88,23 +88,30 @@ NANO_CFG_BASE=$(pwd)
 NANO_CFG_BASE=$(realpath ${NANO_CFG_BASE}/..)
 NANO_SRC=$(realpath ${NANO_CFG_BASE}/../../..)
 #### XXX share obj 
-NANO_OBJ=${NANO_SRC}/../$NANO_NAME/obj
-# Where cust_pkg() finds packages to install
-#XXX: Is this the right place?
-#NANO_PORTS=$(realpath ${NANO_SRC}/../ports)
-NANO_PORTS=/usr/ports
-NANO_PACKAGE_DIR=${NANO_SRC}/${NANO_TOOLS}/Pkg
+if [ -z ${NANO_CPUTYPE} ]; then
+       NANO_OBJ=${NANO_SRC}/../embedded/obj
+else
+       # Alas, I can't set OBJTREE to ${MACHINE}.${MACHINE_ARCH}.${CPUTYPE}
+       # so this will have to do until I can.
+       NANO_OBJ=${NANO_SRC}/../embedded/obj.${NANO_CPUTYPE}
+fi
+NANO_LOG=${NANO_OBJ}/../${NANO_NAME}
+NANO_DISKIMGDIR=${NANO_OBJ}/../images
+NANO_WORLDDIR=${NANO_LOG}/_.w
 NANO_INIT_IMG2=0
 NANO_NOPRIV_BUILD=t
 unset MAKEOBJDIRPREFIX
 
-# this to go into nanobsd.sh
-NANO_PORTS=${NANO_PORTS:-/usr/ports}
-
 mkdir -p ${NANO_OBJ}
 NANO_OBJ=$(realpath ${NANO_OBJ})
+mkdir -p ${NANO_LOG}
+NANO_LOG=$(realpath ${NANO_LOG})
+mkdir -p ${NANO_IMAGES}
+NANO_IMAGES=$(realpath ${NANO_IMAGES})
+mkdir -p ${NANO_WORLDDIR}
+NANO_WORLDDIR=$(realpath ${NANO_WORLDDIR})
 
-NANO_FAT_DIR=${NANO_OBJ}/_.fat
+NANO_FAT_DIR=${NANO_LOG}/_.fat
 
 customize_cmd cust_allow_ssh_root
 
@@ -191,7 +198,7 @@ create_diskimage_gpt ( ) (
 create_diskimage_mbr ( ) (
 
        pprint 2 "build diskimage ${NANO_NAME}"
-       pprint 3 "log: ${NANO_OBJ}/_.di"
+       pprint 3 "log: ${NANO_LOG}/_.di"
 
        (
        local extra i sz fmt fmtarg bootmbr bootbsd skiparg
@@ -204,36 +211,36 @@ create_diskimage_mbr ( ) (
        skiparg=${NANO_MBR_FIRST_SKIP:+-S ${NANO_MBR_FIRST_SKIP}}
 
        for i in s1 s2 s3 s4 p1 p2 p3 p4 p5 empty; do
-               rm -fr ${NANO_OBJ}/_.${i}*
+               rm -fr ${NANO_LOG}/_.${i}*
        done
 
        # Populate the FAT partition, if needed
        if [ -n "${NANO_SLICE_FAT}" ]; then
                echo Creating MSDOS partition for kernel
                newfs_msdos -C ${NANO_SLICE_FAT_SIZE} -F 16 -L ${NANO_NAME} \
-                       ${NANO_OBJ}/_.${NANO_SLICE_FAT}
+                       ${NANO_LOG}/_.${NANO_SLICE_FAT}
                if [ -d ${NANO_FAT_DIR} ]; then
                        # Need to copy files from ${NANO_FATDIR} with mtools, 
or use
                        # makefs -t msdos once that's supported
-                       mcopy -i ${NANO_OBJ}/_.${NANO_SLICE_FAT} 
${NANO_FAT_DIR}/* ::
+                       mcopy -i ${NANO_LOG}/_.${NANO_SLICE_FAT} 
${NANO_FAT_DIR}/* ::
                fi
        fi
 
        # Populate the Powerpc boot image, if needed
        if [ "${NANO_LAYOUT}" = powerpc64-ibm ]; then
-               dd if=${NANO_WORLDDIR}/boot/boot1.elf of=${NANO_OBJ}/_.s1 
bs=800k count=1 conv=sync
+               dd if=${NANO_WORLDDIR}/boot/boot1.elf of=${NANO_LOG}/_.s1 
bs=800k count=1 conv=sync
        fi
 
        # Populate the / partition, and place it into a slice with a
        # bsd label
        [ -z ${NANO_NOPRIV_BUILD} ] || extra="-F ${NANO_METALOG}"
        sz=${NANO_SLICE_ROOT_SIZE:+-s ${NANO_SLICE_ROOT_SIZE}}
-       eval "${NANO_MAKEFS_UFS}" ${extra} $sz "${NANO_OBJ}/_.${NANO_ROOT}" \
+       eval "${NANO_MAKEFS_UFS}" ${extra} $sz "${NANO_LOG}/_.${NANO_ROOT}" \
                "${NANO_WORLDDIR}"
        case ${NANO_DISK_SCHEME} in
        mbr)
-               mkimg -s bsd ${bootbsd} -p 
freebsd-ufs:=${NANO_OBJ}/_.${NANO_ROOT} \
-                       -o ${NANO_OBJ}/_.${NANO_SLICE_ROOT}
+               mkimg -s bsd ${bootbsd} -p 
freebsd-ufs:=${NANO_LOG}/_.${NANO_ROOT} \
+                       -o ${NANO_LOG}/_.${NANO_SLICE_ROOT}
                eval $NANO_SLICE_CFG=freebsd
                eval $NANO_SLICE_ROOT=freebsd
                ;;
@@ -246,12 +253,12 @@ create_diskimage_mbr ( ) (
        # Populate the /cfg partition, empty if none given
        if [ -z "${NANO_CFGDIR}" ]; then
                echo "Faking cfg dir, it's empty"
-               NANO_CFGDIR=${NANO_OBJ}/_.empty
+               NANO_CFGDIR=${NANO_LOG}/_.empty
                mkdir -p ${NANO_CFGDIR}
        fi
        # XXX -F cfg-mtree
        eval "${NANO_MAKEFS_UFS}" -s ${NANO_SLICE_CFG_SIZE} \
-               "${NANO_OBJ}/_.${NANO_SLICE_CFG}" "${NANO_CFGDIR}"
+               "${NANO_LOG}/_.${NANO_SLICE_CFG}" "${NANO_CFGDIR}"
 
        # data slice not supported since we need the part for FAT for 
        # booting
@@ -261,31 +268,32 @@ create_diskimage_mbr ( ) (
                eval $NANO_SLICE_FAT=fat16b
        fi
 
+       out=${NANO_DISKIMGDIR}/_.disk.image.${NANO_NAME}${fmt}
        # below depends on https://reviews.freebsd.org/D4403 not yet in the tree
        # but there's problems: it marks all partitions as active, so you have 
to
        # boot off parittion 3 or 2 by hand if you're playing around with this 
WIP
        case ${NANO_LAYOUT} in
        std-embedded)
-               mkimg -a 3 ${skiparg} ${fmtarg} ${bootmbr} -s mbr -p 
${s1}:=${NANO_OBJ}/_.s1 \
-                       -p ${s2}:=${NANO_OBJ}/_.s2 \
-                       -p ${s3}:=${NANO_OBJ}/_.s3 \
-                       -o ${NANO_OBJ}/_.disk.image.${NANO_NAME}${fmt}
+               mkimg -a 3 ${skiparg} ${fmtarg} ${bootmbr} -s mbr -p 
${s1}:=${NANO_LOG}/_.s1 \
+                       -p ${s2}:=${NANO_LOG}/_.s2 \
+                       -p ${s3}:=${NANO_LOG}/_.s3 \
+                       -o ${out}
                ;;
        std-x86)
                # s1 is cfg, s2 is /, not sure how to make that
                # boot (marked as active) with mkimg yet
-               mkimg -a 2 ${fmtarg} ${bootmbr} -s mbr -p 
${s1}:=${NANO_OBJ}/_.s1 \
-                       -p ${s2}:=${NANO_OBJ}/_.s2 \
-                       -o ${NANO_OBJ}/_.disk.image.${NANO_NAME}${fmt}
+               mkimg -a 2 ${fmtarg} ${bootmbr} -s mbr -p 
${s1}:=${NANO_LOG}/_.s1 \
+                       -p ${s2}:=${NANO_LOG}/_.s2 \
+                       -o ${out}
                ;;
        std-uefi)
                # s1 is boot, s2 is cfg, s3 is /, not sure how to make that
                # boot (marked as active) with mkimg yet
                mkimg -a 2 ${fmtarg} ${bootmbr} -s mbr \
                        -p efi:=${NANO_WORLDDIR}/boot/boot1.efifat \
-                       -p ${s2}:=${NANO_OBJ}/_.s2 \
-                       -p ${s3}:=${NANO_OBJ}/_.s3 \
-                       -o ${NANO_OBJ}/_.disk.image.${NANO_NAME}${fmt}
+                       -p ${s2}:=${NANO_LOG}/_.s2 \
+                       -p ${s3}:=${NANO_LOG}/_.s3 \
+                       -o ${out}
                ;;
        std-uefi-bios)
                # p1 is boot for uefi, p2 is boot for gpt, p3 is cfg, p4 is /
@@ -293,9 +301,9 @@ create_diskimage_mbr ( ) (
                mkimg -a 2 ${fmtarg} ${bootmbr} -s gpt \
                        -p efi:=${NANO_WORLDDIR}/boot/boot1.efifat \
                        -p freebsd-boot:=${NAANO_WORLDDIR}/boot/gptboot \
-                       -p ${p3}:=${NANO_OBJ}/_.p3 \
-                       -p ${p4}:=${NANO_OBJ}/_.p4 \
-                       -o ${NANO_OBJ}/_.disk.image.${NANO_NAME}${fmt}
+                       -p ${p3}:=${NANO_LOG}/_.p3 \
+                       -p ${p4}:=${NANO_LOG}/_.p4 \
+                       -o ${out}
                ;;
        powerpc64-ibm)
                # A lie to make the boot loader work, it boots the first BSD 
partition
@@ -304,13 +312,14 @@ create_diskimage_mbr ( ) (
                # boot image is on a special partition, ala std-embedded, but 
that
                # partition isn't FAT with special files, but a copy of the boot
                # loader itself.
-               mkimg -a 1 ${fmtarg} -s mbr -p prepboot:=${NANO_OBJ}/_.s1 \
-                       -p ${s2}:=${NANO_OBJ}/_.s2 \
-                       -p ${s3}:=${NANO_OBJ}/_.s3a \
-                       -o ${NANO_OBJ}/_.disk.image.${NANO_NAME}${fmt}
+               mkimg -a 1 ${fmtarg} -s mbr -p prepboot:=${NANO_LOG}/_.s1 \
+                       -p ${s2}:=${NANO_LOG}/_.s2 \
+                       -p ${s3}:=${NANO_LOG}/_.s3a \
+                       -o ${out}
                ;;
        esac
-       ) > ${NANO_OBJ}/_.di 2>&1
+       xz -9 --keep ${out}
+       ) > ${NANO_LOG}/_.di 2>&1
 )
 
 die( ) {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to