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