1148601Sphk#!/bin/sh
2148601Sphk# This file is in the public domain
3148601Sphk# $FreeBSD$
4148601Sphk
5157118Sphkset -ex
6148884Sphk
7157118SphkOPLIST=`sh listallopts.sh`
8148884Sphk
9157118SphkMDUNIT=47
10157118Sphkexport MDUNIT
11148601Sphk
12157118SphkODIR=/usr/obj/`pwd`
13157118SphkFDIR=${ODIR}/files
14157118SphkMNT=${ODIR}/_.mnt
15157118SphkRDIR=${ODIR}/_.result
16157118Sphk
17157118Sphkexport ODIR MNT RDIR FDIR
18157118Sphk
19148601Sphkbw ( ) (
20148601Sphk	cd ../../.. 
21157118Sphk	make showconfig \
22157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
23157118Sphk		> ${FDIR}/_.sc 2>&1
24157118Sphk	a=$?
25157118Sphk	echo retval $a
26157118Sphk	if [ $a -ne 0 ] ; then
27157118Sphk		exit 1
28157118Sphk	fi
29148601Sphk	make -j 4 buildworld \
30157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
31157118Sphk		> ${FDIR}/_.bw 2>&1
32157118Sphk	a=$?
33157118Sphk	echo retval $a
34157118Sphk	if [ $a -ne 0 ] ; then
35157118Sphk		exit 1
36157118Sphk	fi
37148601Sphk	make -j 4 buildkernel \
38148601Sphk		KERNCONF=GENERIC \
39157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
40157118Sphk		> ${FDIR}/_.bk 2>&1
41157118Sphk	a=$?
42157118Sphk	echo retval $a
43157118Sphk	if [ $a -ne 0 ] ; then
44157118Sphk		exit 1
45157118Sphk	fi
46157118Sphk	exit 0
47148601Sphk)
48148601Sphk
49148601Sphkiw ( ) (
50157118Sphk	trap "umount ${MNT} || true" 1 2 15 EXIT
51157118Sphk	newfs -O1 -U -b 4096 -f 512 /dev/md$MDUNIT
52148601Sphk	mkdir -p ${MNT}
53157118Sphk	mount /dev/md${MDUNIT} ${MNT}
54148601Sphk
55148601Sphk	cd ../../..
56148601Sphk	make installworld \
57157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
58148601Sphk		DESTDIR=${MNT} \
59157118Sphk		> ${FDIR}/_.iw 2>&1
60157118Sphk	a=$?
61157118Sphk	echo retval $a
62157118Sphk	if [ $a -ne 0 ] ; then
63157118Sphk		exit 1
64157118Sphk	fi
65148601Sphk	cd etc
66148601Sphk	make distribution \
67157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
68148601Sphk		DESTDIR=${MNT} \
69157118Sphk		> ${FDIR}/_.etc 2>&1
70157118Sphk	a=$?
71157118Sphk	echo retval $a
72157118Sphk	if [ $a -ne 0 ] ; then
73157118Sphk		exit 1
74157118Sphk	fi
75148601Sphk	cd ..
76148601Sphk	make installkernel \
77148601Sphk		KERNCONF=GENERIC \
78148601Sphk		DESTDIR=${MNT} \
79157118Sphk		SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
80157118Sphk		> ${FDIR}/_.ik 2>&1
81157118Sphk	a=$?
82157118Sphk	echo retval $a
83157118Sphk	if [ $a -ne 0 ] ; then
84157118Sphk		exit 1
85157118Sphk	fi
86148601Sphk
87148601Sphk	sync ${MNT}
88157118Sphk	( cd ${MNT} && mtree -c ) > ${FDIR}/_.mtree
89157118Sphk	( cd ${MNT} && du ) > ${FDIR}/_.du
90157118Sphk	( df -i ${MNT} ) > ${FDIR}/_.df
91157118Sphk	echo success > ${FDIR}/_.success
92157118Sphk	sync
93157118Sphk	sleep 1
94157118Sphk	sync
95157118Sphk	sleep 1
96157118Sphk	trap "" 1 2 15 EXIT
97157118Sphk	umount ${MNT}
98157118Sphk	echo "iw done"
99148601Sphk)
100148601Sphk
101148601Sphk
102157118Sphk# Clean and recreate the ODIR
103148884Sphk
104157118Sphkif true ; then 
105157118Sphk	echo "=== Clean and recreate ${ODIR}"
106148601Sphk	if rm -rf ${ODIR} ; then
107148601Sphk		true
108148601Sphk	else
109148601Sphk		chflags -R noschg ${ODIR}
110148601Sphk		rm -rf ${ODIR}
111148601Sphk	fi
112157118Sphk	mkdir -p ${ODIR} ${FDIR} ${MNT}
113148601Sphk
114148601Sphkfi
115148601Sphk
116157118Sphktrap "umount ${MNT} || true; mdconfig -d -u $MDUNIT" 1 2 15 EXIT
117148601Sphk
118157118Sphkumount $MNT || true
119157118Sphkmdconfig -d -u $MDUNIT || true
120157118Sphkdd if=/dev/zero of=${ODIR}/imgfile bs=1m count=250 
121157118Sphkmdconfig -a -t vnode -f ${ODIR}/imgfile -u $MDUNIT
122157118Sphk
123157118Sphk# Build & install the reference world
124157118Sphk
125157118Sphkif true ; then 
126157118Sphk	echo "=== Build reference world"
127157118Sphk	echo '' > ${ODIR}/src.conf
128148884Sphk	MAKEOBJDIRPREFIX=$ODIR/_.ref 
129148884Sphk	export MAKEOBJDIRPREFIX
130148884Sphk	bw
131157118Sphk	echo "=== Install reference world"
132157118Sphk	mkdir -p ${RDIR}/Ref
133157118Sphk	iw
134157118Sphk	mv ${FDIR}/_.* ${RDIR}/Ref
135148884Sphkfi
136148601Sphk
137157118Sphk# Parse option list into subdirectories with src.conf files.
138148601Sphk
139157118Sphkif true ; then
140157118Sphk	rm -rf ${RDIR}/[0-9a-f]*
141157118Sphk	for o in $OPLIST
142148601Sphk	do
143157118Sphk		echo "${o}=foo" > ${FDIR}/_src.conf
144157118Sphk		m=`md5 < ${FDIR}/_src.conf`
145148884Sphk		mkdir -p ${RDIR}/$m
146157118Sphk		mv ${FDIR}/_src.conf ${RDIR}/$m/src.conf
147148601Sphk	done
148148601Sphkfi
149148601Sphk
150148884Sphk# Run through each testtarget in turn
151148884Sphk
152148601Sphkif true ; then
153148884Sphk	for d in ${RDIR}/[0-9a-z]*
154148601Sphk	do
155148884Sphk		if [ ! -d $d ] ; then
156148884Sphk			continue;
157148884Sphk		fi
158148884Sphk		echo '------------------------------------------------'
159157118Sphk		cat $d/src.conf
160148884Sphk		echo '------------------------------------------------'
161157118Sphk		cp $d/src.conf ${ODIR}/src.conf
162148601Sphk
163148884Sphk		if [ ! -f $d/iw/done ] ; then
164157118Sphk			MAKEOBJDIRPREFIX=$ODIR/_.ref
165157118Sphk			export MAKEOBJDIRPREFIX
166157118Sphk			echo "# BW(ref)+IW(ref) `cat $d/src.conf`"
167148884Sphk			rm -rf $d/iw
168148884Sphk			mkdir -p $d/iw
169157118Sphk			iw || true
170157118Sphk			mv ${FDIR}/_.* $d/iw || true
171148884Sphk			touch $d/iw/done
172148601Sphk		fi
173148884Sphk		if [ ! -f $d/bw/done ] ; then
174148884Sphk			MAKEOBJDIRPREFIX=$ODIR/_.tst 
175148884Sphk			export MAKEOBJDIRPREFIX
176157118Sphk			echo "# BW(opt) `cat $d/src.conf`"
177157118Sphk			rm -rf $d/w $d/bw
178157118Sphk			mkdir -p $d/w $d/bw
179148884Sphk			if bw ; then
180157118Sphk				mv ${FDIR}/_.* $d/bw || true
181157118Sphk
182157118Sphk				echo "# BW(opt)+IW(opt) `cat $d/src.conf`"
183157118Sphk				iw || true
184157118Sphk				mv ${FDIR}/_.* $d/w || true
185148884Sphk				touch $d/w/done
186157118Sphk
187157118Sphk				echo "# BW(opt)+IW(ref) `cat $d/src.conf`"
188157118Sphk				echo '' > ${ODIR}/src.conf
189157118Sphk				iw || true
190157118Sphk				mv ${FDIR}/_.* $d/bw || true
191148884Sphk				touch $d/bw/done
192148884Sphk			else
193157118Sphk				mv ${FDIR}/_.* $d/bw || true
194157118Sphk				touch $d/bw/done $d/w/done
195148884Sphk			fi
196148601Sphk		fi
197148601Sphk	done
198148601Sphkfi
199