]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/tools/build_option_survey/option_survey.sh
This commit was generated by cvs2svn to compensate for changes in r155364,
[FreeBSD/FreeBSD.git] / tools / tools / build_option_survey / option_survey.sh
1 #!/bin/sh
2 # This file is in the public domain
3 # $FreeBSD$
4
5 if [ "x$1" != "x" ] ; then
6         OPLIST=$1
7 else
8         OPLIST=no_list
9 fi
10
11 OPLIST=_.options
12
13 set -e
14
15 bw ( ) (
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
26 iw ( ) (
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
57 ODIR=/usr/obj/`pwd`
58 MNT=${ODIR}/_.mnt
59 RDIR=${ODIR}/_.result
60 export ODIR MNT RDIR
61
62
63 # Clean and recrate the ODIR
64
65 if 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
74 fi
75
76 # Build the reference world
77
78 if false ; then 
79         echo '' > ${ODIR}/make.conf
80         MAKEOBJDIRPREFIX=$ODIR/_.ref 
81         export MAKEOBJDIRPREFIX
82         bw
83 fi
84
85 # Parse option list into subdirectories with make.conf files.
86
87 if 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
96 fi
97
98 # Do the reference installworld 
99
100 if 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
109 fi
110
111 # Run through each testtarget in turn
112
113 if 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
175 fi