option_survey.sh revision 148601
1#!/bin/sh
2# This file is in the public domain
3# $FreeBSD: head/tools/tools/build_option_survey/option_survey.sh 148601 2005-07-31 14:16:13Z phk $
4
5set -e
6
7bw ( ) (
8	cd ../../.. 
9	make -j 4 buildworld \
10		__MAKE_CONF=${ODIR}/make.conf \
11		> ${ODIR}/_.bw 2>&1
12	make -j 4 buildkernel \
13		KERNCONF=GENERIC \
14		__MAKE_CONF=${ODIR}/make.conf \
15		> ${ODIR}/_.bk 2>&1
16)
17
18iw ( ) (
19	dd if=/dev/zero of=${ODIR}/_.i bs=1m count=200
20	mkdir -p ${MNT}
21	MD=`mdconfig -a -t vnode -f ${ODIR}/_.i`
22	trap "umount ${MNT} || true ; mdconfig -d -u $MD" 1 2 15 EXIT
23	newfs -O1 -U -b 4096 -f 512 /dev/$MD
24	mount /dev/${MD} ${MNT}
25
26	cd ../../..
27	make installworld \
28		__MAKE_CONF=${ODIR}/make.conf \
29		DESTDIR=${MNT} \
30		> ${ODIR}/_.iw 2>&1
31	cd etc
32	make distribution \
33		__MAKE_CONF=${ODIR}/make.conf \
34		DESTDIR=${MNT} \
35		> ${ODIR}/_.etc 2>&1
36	cd ..
37	make installkernel \
38		KERNCONF=GENERIC \
39		DESTDIR=${MNT} \
40		__MAKE_CONF=${ODIR}/make.conf \
41		> ${ODIR}/_.ik 2>&1
42
43	sync ${MNT}
44	( cd ${MNT} && mtree -c ) > ${ODIR}/_.mtree
45	( cd ${MNT} && du ) > ${ODIR}/_.du
46	( df -i ${MNT} ) > ${ODIR}/_.df
47)
48
49ODIR=/usr/obj/`pwd`
50MNT=${ODIR}/_.mnt
51MAKEOBJDIRPREFIX=$ODIR
52export MAKEOBJDIRPREFIX ODIR MNT
53
54if false ; then 
55	if rm -rf ${ODIR} ; then
56		true
57	else
58		chflags -R noschg ${ODIR}
59		rm -rf ${ODIR}
60	fi
61	mkdir -p ${ODIR}
62
63	echo '' > ${ODIR}/make.conf
64
65	bw
66fi
67
68if false ; then
69	rm -rf Tmp
70
71	echo '' > ${ODIR}/make.conf
72
73	if iw ; then
74		m=Tmp/Ref
75		mkdir -p $m
76		cp ${ODIR}/_.df $m
77		cp ${ODIR}/_.mtree $m
78		cp ${ODIR}/_.du $m
79	fi
80
81	cat no_list | while read o
82	do
83		echo "IW $o"
84		echo "$o=YES" > ${ODIR}/make.conf
85		m=Tmp/`md5 < ${ODIR}/make.conf`/iw
86		mkdir -p $m
87		echo $m
88		cp ${ODIR}/make.conf $m
89		if iw ; then
90			cp ${ODIR}/_.df $m
91			cp ${ODIR}/_.mtree $m
92			cp ${ODIR}/_.du $m
93		else
94			cp ${ODIR}/_.iw $m
95			cp ${ODIR}/_.ik $m
96		fi
97	done
98fi
99
100if true ; then
101	cat no_list | while read o
102	do
103		# First build+installworld
104		echo "W $o"
105		echo "$o=YES" > ${ODIR}/make.conf
106
107		m=Tmp/`md5 < ${ODIR}/make.conf`/w
108		mkdir -p $m
109		echo $m
110		cp ${ODIR}/make.conf $m
111
112		if bw ; then
113			true
114		else
115			cp ${ODIR}/_.bw $m || true
116			cp ${ODIR}/_.bk $m || true
117		fi
118		if iw ; then
119			cp ${ODIR}/_.df $m
120			cp ${ODIR}/_.mtree $m
121			cp ${ODIR}/_.du $m
122		else
123			cp ${ODIR}/_.iw $m
124			cp ${ODIR}/_.ik $m
125		fi
126
127		# Then only buildworld
128		echo "BW $o"
129		m=Tmp/`md5 < ${ODIR}/make.conf`/bw
130		mkdir -p $m
131		echo $m
132		cp ${ODIR}/make.conf $m
133		echo '' > ${ODIR}/make.conf
134		if iw ; then
135			cp ${ODIR}/_.df $m
136			cp ${ODIR}/_.mtree $m
137			cp ${ODIR}/_.du $m
138		else
139			cp ${ODIR}/_.iw $m
140			cp ${ODIR}/_.ik $m
141		fi
142
143		
144	done
145fi
146