option_survey.sh revision 157118
1139749Simp#!/bin/sh 214258Sgibbs# This file is in the public domain 314258Sgibbs# $FreeBSD: head/tools/tools/build_option_survey/option_survey.sh 157118 2006-03-25 10:50:40Z phk $ 414258Sgibbs 514258Sgibbsset -ex 614258Sgibbs 714258SgibbsOPLIST=`sh listallopts.sh` 814258Sgibbs 914258SgibbsMDUNIT=47 1014258Sgibbsexport MDUNIT 1114258Sgibbs 1214258SgibbsODIR=/usr/obj/`pwd` 1314258SgibbsFDIR=${ODIR}/files 1414258SgibbsMNT=${ODIR}/_.mnt 1514258SgibbsRDIR=${ODIR}/_.result 1614258Sgibbs 1714258Sgibbsexport ODIR MNT RDIR FDIR 1814258Sgibbs 1914258Sgibbsbw ( ) ( 2014258Sgibbs cd ../../.. 2114258Sgibbs make showconfig \ 2214258Sgibbs SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 23117700Smarkm > ${FDIR}/_.sc 2>&1 24117700Smarkm a=$? 25117700Smarkm echo retval $a 2614258Sgibbs if [ $a -ne 0 ] ; then 2714258Sgibbs exit 1 2814258Sgibbs fi 2918892Sbde make -j 4 buildworld \ 3045791Speter SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 3145791Speter > ${FDIR}/_.bw 2>&1 3214258Sgibbs a=$? 3345791Speter echo retval $a 3445791Speter if [ $a -ne 0 ] ; then 35117700Smarkm exit 1 3614258Sgibbs fi 3714258Sgibbs make -j 4 buildkernel \ 3852549Smdodd KERNCONF=GENERIC \ 39117700Smarkm SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 4014258Sgibbs > ${FDIR}/_.bk 2>&1 41112845Smdodd a=$? 42112845Smdodd echo retval $a 4351879Smdodd if [ $a -ne 0 ] ; then 4451879Smdodd exit 1 4551879Smdodd fi 4614258Sgibbs exit 0 4714258Sgibbs) 4814258Sgibbs 4914258Sgibbsiw ( ) ( 5014258Sgibbs trap "umount ${MNT} || true" 1 2 15 EXIT 5114258Sgibbs newfs -O1 -U -b 4096 -f 512 /dev/md$MDUNIT 5214258Sgibbs mkdir -p ${MNT} 5314258Sgibbs mount /dev/md${MDUNIT} ${MNT} 5414258Sgibbs 5514258Sgibbs cd ../../.. 5614258Sgibbs make installworld \ 5714258Sgibbs SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 5814258Sgibbs DESTDIR=${MNT} \ 5914258Sgibbs > ${FDIR}/_.iw 2>&1 6014258Sgibbs a=$? 6114258Sgibbs echo retval $a 6214258Sgibbs if [ $a -ne 0 ] ; then 6314258Sgibbs exit 1 6414258Sgibbs fi 6514258Sgibbs cd etc 6614258Sgibbs make distribution \ 6714258Sgibbs SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 6814258Sgibbs DESTDIR=${MNT} \ 6914258Sgibbs > ${FDIR}/_.etc 2>&1 7014258Sgibbs a=$? 7114258Sgibbs echo retval $a 7292739Salfred if [ $a -ne 0 ] ; then 7314258Sgibbs exit 1 74117700Smarkm fi 7545791Speter cd .. 7614258Sgibbs make installkernel \ 77117700Smarkm KERNCONF=GENERIC \ 78117700Smarkm DESTDIR=${MNT} \ 79149559Simp SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \ 80117700Smarkm > ${FDIR}/_.ik 2>&1 81149559Simp a=$? 82117700Smarkm echo retval $a 83149559Simp if [ $a -ne 0 ] ; then 84117700Smarkm exit 1 85149559Simp fi 86117700Smarkm 87149559Simp sync ${MNT} 88117700Smarkm ( cd ${MNT} && mtree -c ) > ${FDIR}/_.mtree 89149559Simp ( cd ${MNT} && du ) > ${FDIR}/_.du 90117700Smarkm ( df -i ${MNT} ) > ${FDIR}/_.df 91117700Smarkm echo success > ${FDIR}/_.success 9214258Sgibbs sync 9314258Sgibbs sleep 1 9414258Sgibbs sync 9514258Sgibbs sleep 1 9645791Speter trap "" 1 2 15 EXIT 9714258Sgibbs umount ${MNT} 9845791Speter echo "iw done" 9914258Sgibbs) 10045791Speter 10145791Speter 10245791Speter# Clean and recreate the ODIR 10352549Smdodd 10414258Sgibbsif true ; then 10545791Speter echo "=== Clean and recreate ${ODIR}" 10645791Speter if rm -rf ${ODIR} ; then 10745791Speter true 10845791Speter else 10914258Sgibbs chflags -R noschg ${ODIR} 11045791Speter rm -rf ${ODIR} 11145791Speter fi 11214258Sgibbs mkdir -p ${ODIR} ${FDIR} ${MNT} 11345791Speter 11445791Speterfi 115132518Simp 11614258Sgibbstrap "umount ${MNT} || true; mdconfig -d -u $MDUNIT" 1 2 15 EXIT 117112845Smdodd 118112845Smdoddumount $MNT || true 11914258Sgibbsmdconfig -d -u $MDUNIT || true 12045791Speterdd if=/dev/zero of=${ODIR}/imgfile bs=1m count=250 12145791Spetermdconfig -a -t vnode -f ${ODIR}/imgfile -u $MDUNIT 12245791Speter 12345791Speter# Build & install the reference world 124117700Smarkm 125117700Smarkmif true ; then 12645791Speter echo "=== Build reference world" 127117700Smarkm echo '' > ${ODIR}/src.conf 128117700Smarkm MAKEOBJDIRPREFIX=$ODIR/_.ref 12945791Speter export MAKEOBJDIRPREFIX 130117700Smarkm bw 131117700Smarkm echo "=== Install reference world" 13245791Speter mkdir -p ${RDIR}/Ref 133117700Smarkm iw 134117700Smarkm mv ${FDIR}/_.* ${RDIR}/Ref 13545791Speterfi 136117700Smarkm 137117700Smarkm# Parse option list into subdirectories with src.conf files. 13845791Speter 139117700Smarkmif true ; then 140117700Smarkm rm -rf ${RDIR}/[0-9a-f]* 14145791Speter for o in $OPLIST 142117700Smarkm do 143117700Smarkm echo "${o}=foo" > ${FDIR}/_src.conf 14445791Speter m=`md5 < ${FDIR}/_src.conf` 145117700Smarkm mkdir -p ${RDIR}/$m 146117700Smarkm mv ${FDIR}/_src.conf ${RDIR}/$m/src.conf 14745791Speter done 148117700Smarkmfi 149117700Smarkm 150117700Smarkm# Run through each testtarget in turn 151117700Smarkm 152117700Smarkmif true ; then 153117700Smarkm for d in ${RDIR}/[0-9a-z]* 15414258Sgibbs do 15545791Speter if [ ! -d $d ] ; then 156117700Smarkm continue; 157117700Smarkm fi 158117700Smarkm echo '------------------------------------------------' 159117700Smarkm cat $d/src.conf 160117700Smarkm echo '------------------------------------------------' 161117700Smarkm cp $d/src.conf ${ODIR}/src.conf 162117700Smarkm 163117700Smarkm if [ ! -f $d/iw/done ] ; then 16452549Smdodd MAKEOBJDIRPREFIX=$ODIR/_.ref 165117700Smarkm export MAKEOBJDIRPREFIX 166112845Smdodd echo "# BW(ref)+IW(ref) `cat $d/src.conf`" 16752549Smdodd rm -rf $d/iw 168117700Smarkm mkdir -p $d/iw 16914258Sgibbs iw || true 17014258Sgibbs mv ${FDIR}/_.* $d/iw || true 17114258Sgibbs touch $d/iw/done 17245791Speter fi 17314258Sgibbs if [ ! -f $d/bw/done ] ; then 174117700Smarkm MAKEOBJDIRPREFIX=$ODIR/_.tst 175117700Smarkm export MAKEOBJDIRPREFIX 176140523Simp echo "# BW(opt) `cat $d/src.conf`" 177117700Smarkm rm -rf $d/w $d/bw 178117700Smarkm mkdir -p $d/w $d/bw 179117700Smarkm if bw ; then 18014258Sgibbs mv ${FDIR}/_.* $d/bw || true 18145791Speter 182127135Snjl echo "# BW(opt)+IW(opt) `cat $d/src.conf`" 18345791Speter iw || true 18445791Speter mv ${FDIR}/_.* $d/w || true 18552549Smdodd touch $d/w/done 18645791Speter 18745791Speter echo "# BW(opt)+IW(ref) `cat $d/src.conf`" 18852549Smdodd echo '' > ${ODIR}/src.conf 18914258Sgibbs iw || true 19052549Smdodd mv ${FDIR}/_.* $d/bw || true 19152549Smdodd touch $d/bw/done 192117700Smarkm else 19352549Smdodd mv ${FDIR}/_.* $d/bw || true 19452549Smdodd touch $d/bw/done $d/w/done 19514258Sgibbs fi 19652549Smdodd fi 19752549Smdodd done 19845791Speterfi 19952549Smdodd