option_survey.sh revision 148884
1#!/bin/sh 2# This file is in the public domain 3# $FreeBSD: head/tools/tools/build_option_survey/option_survey.sh 148884 2005-08-09 09:27:11Z phk $ 4 5if [ "x$1" != "x" ] ; then 6 OPLIST=$1 7else 8 OPLIST=no_list 9fi 10 11OPLIST=_.options 12 13set -e 14 15bw ( ) ( 16 cd ../../.. 17 make -j 4 buildworld \ 18 __MAKE_CONF=${ODIR}/make.conf \ 19 > ${ODIR}/_.bw 2>&1 20 make -j 4 buildkernel \ 21 KERNCONF=GENERIC \ 22 __MAKE_CONF=${ODIR}/make.conf \ 23 > ${ODIR}/_.bk 2>&1 24) 25 26iw ( ) ( 27 dd if=/dev/zero of=${ODIR}/_.i bs=1m count=200 28 mkdir -p ${MNT} 29 MD=`mdconfig -a -t vnode -f ${ODIR}/_.i` 30 trap "umount ${MNT} || true ; mdconfig -d -u $MD" 1 2 15 EXIT 31 newfs -O1 -U -b 4096 -f 512 /dev/$MD 32 mount /dev/${MD} ${MNT} 33 34 cd ../../.. 35 make installworld \ 36 __MAKE_CONF=${ODIR}/make.conf \ 37 DESTDIR=${MNT} \ 38 > ${ODIR}/_.iw 2>&1 39 cd etc 40 make distribution \ 41 __MAKE_CONF=${ODIR}/make.conf \ 42 DESTDIR=${MNT} \ 43 > ${ODIR}/_.etc 2>&1 44 cd .. 45 make installkernel \ 46 KERNCONF=GENERIC \ 47 DESTDIR=${MNT} \ 48 __MAKE_CONF=${ODIR}/make.conf \ 49 > ${ODIR}/_.ik 2>&1 50 51 sync ${MNT} 52 ( cd ${MNT} && mtree -c ) > ${ODIR}/_.mtree 53 ( cd ${MNT} && du ) > ${ODIR}/_.du 54 ( df -i ${MNT} ) > ${ODIR}/_.df 55) 56 57ODIR=/usr/obj/`pwd` 58MNT=${ODIR}/_.mnt 59RDIR=${ODIR}/_.result 60export ODIR MNT RDIR 61 62 63# Clean and recrate the ODIR 64 65if false ; then 66 if rm -rf ${ODIR} ; then 67 true 68 else 69 chflags -R noschg ${ODIR} 70 rm -rf ${ODIR} 71 fi 72 mkdir -p ${ODIR} 73 74fi 75 76# Build the reference world 77 78if false ; then 79 echo '' > ${ODIR}/make.conf 80 MAKEOBJDIRPREFIX=$ODIR/_.ref 81 export MAKEOBJDIRPREFIX 82 bw 83fi 84 85# Parse option list into subdirectories with make.conf files. 86 87if false ; then 88 rm -rf ${RDIR} 89 grep -v '^[ ]*#' $OPLIST | while read o 90 do 91 echo "$o=/dev/YES" > ${ODIR}/_make.conf 92 m=`md5 < ${ODIR}/_make.conf` 93 mkdir -p ${RDIR}/$m 94 mv ${ODIR}/_make.conf ${RDIR}/$m/make.conf 95 done 96fi 97 98# Do the reference installworld 99 100if false ; then 101 echo '' > ${ODIR}/make.conf 102 MAKEOBJDIRPREFIX=$ODIR/_.ref 103 export MAKEOBJDIRPREFIX 104 mkdir -p ${RDIR}/Ref 105 iw 106 cp ${ODIR}/_.df ${RDIR}/Ref 107 cp ${ODIR}/_.mtree ${RDIR}/Ref 108 cp ${ODIR}/_.du ${RDIR}/Ref 109fi 110 111# Run through each testtarget in turn 112 113if true ; then 114 for d in ${RDIR}/[0-9a-z]* 115 do 116 if [ ! -d $d ] ; then 117 continue; 118 fi 119 echo '------------------------------------------------' 120 cat $d/make.conf 121 echo '------------------------------------------------' 122 cp $d/make.conf ${ODIR}/make.conf 123 124 if [ ! -f $d/iw/done ] ; then 125 echo "# Trying IW" 126 rm -rf $d/iw 127 mkdir -p $d/iw 128 MAKEOBJDIRPREFIX=$ODIR/_.ref 129 export MAKEOBJDIRPREFIX 130 if iw ; then 131 cp ${ODIR}/_.df $d/iw 132 cp ${ODIR}/_.mtree $d/iw 133 cp ${ODIR}/_.du $d/iw 134 else 135 cp ${ODIR}/_.iw $d/iw || true 136 cp ${ODIR}/_.ik $d/iw || true 137 fi 138 touch $d/iw/done 139 fi 140 if [ ! -f $d/bw/done ] ; then 141 echo "# Trying BW" 142 MAKEOBJDIRPREFIX=$ODIR/_.tst 143 export MAKEOBJDIRPREFIX 144 if bw ; then 145 mkdir -p $d/w 146 if iw ; then 147 cp ${ODIR}/_.df $d/w 148 cp ${ODIR}/_.mtree $d/w 149 cp ${ODIR}/_.du $d/w 150 else 151 cp ${ODIR}/_.iw $d/w || true 152 cp ${ODIR}/_.ik $d/w || true 153 fi 154 touch $d/w/done 155 echo "# Trying W" 156 mkdir -p $d/bw 157 echo '' > ${ODIR}/make.conf 158 if iw ; then 159 cp ${ODIR}/_.df $d/bw 160 cp ${ODIR}/_.mtree $d/bw 161 cp ${ODIR}/_.du $d/bw 162 else 163 cp ${ODIR}/_.iw $d/bw || true 164 cp ${ODIR}/_.ik $d/bw || true 165 fi 166 touch $d/bw/done 167 else 168 mkdir -p $d/bw 169 cp ${ODIR}/_.bw $d/bw || true 170 cp ${ODIR}/_.bk $d/bw || true 171 touch $d/bw/done 172 fi 173 fi 174 done 175fi 176