blob: a59ad15b22de84aef18859b27bd8dc6ef09f19ed (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
#!/bin/sh
# This file is in the public domain
# $FreeBSD: src/tools/tools/build_option_survey/option_survey.sh,v 1.3.8.1 2009/04/15 03:14:26 kensmith Exp $
set -ex
OPLIST=`sh listallopts.sh`
MDUNIT=47
export MDUNIT
ODIR=/usr/obj/`pwd`
FDIR=${ODIR}/files
MNT=${ODIR}/_.mnt
RDIR=${ODIR}/_.result
export ODIR MNT RDIR FDIR
bw ( ) (
cd ../../..
make showconfig \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
> ${FDIR}/_.sc 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
make -j 4 buildworld \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
> ${FDIR}/_.bw 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
make -j 4 buildkernel \
KERNCONF=GENERIC \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
> ${FDIR}/_.bk 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
exit 0
)
iw ( ) (
trap "umount ${MNT} || true" 1 2 15 EXIT
newfs -O1 -U -b 4096 -f 512 /dev/md$MDUNIT
mkdir -p ${MNT}
mount /dev/md${MDUNIT} ${MNT}
cd ../../..
make installworld \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
DESTDIR=${MNT} \
> ${FDIR}/_.iw 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
cd etc
make distribution \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
DESTDIR=${MNT} \
> ${FDIR}/_.etc 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
cd ..
make installkernel \
KERNCONF=GENERIC \
DESTDIR=${MNT} \
SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
> ${FDIR}/_.ik 2>&1
a=$?
echo retval $a
if [ $a -ne 0 ] ; then
exit 1
fi
sync ${MNT}
( cd ${MNT} && mtree -c ) > ${FDIR}/_.mtree
( cd ${MNT} && du ) > ${FDIR}/_.du
( df -i ${MNT} ) > ${FDIR}/_.df
echo success > ${FDIR}/_.success
sync
sleep 1
sync
sleep 1
trap "" 1 2 15 EXIT
umount ${MNT}
echo "iw done"
)
# Clean and recreate the ODIR
if true ; then
echo "=== Clean and recreate ${ODIR}"
if rm -rf ${ODIR} ; then
true
else
chflags -R noschg ${ODIR}
rm -rf ${ODIR}
fi
mkdir -p ${ODIR} ${FDIR} ${MNT}
fi
trap "umount ${MNT} || true; mdconfig -d -u $MDUNIT" 1 2 15 EXIT
umount $MNT || true
mdconfig -d -u $MDUNIT || true
dd if=/dev/zero of=${ODIR}/imgfile bs=1m count=250
mdconfig -a -t vnode -f ${ODIR}/imgfile -u $MDUNIT
# Build & install the reference world
if true ; then
echo "=== Build reference world"
echo '' > ${ODIR}/src.conf
MAKEOBJDIRPREFIX=$ODIR/_.ref
export MAKEOBJDIRPREFIX
bw
echo "=== Install reference world"
mkdir -p ${RDIR}/Ref
iw
mv ${FDIR}/_.* ${RDIR}/Ref
fi
# Parse option list into subdirectories with src.conf files.
if true ; then
rm -rf ${RDIR}/[0-9a-f]*
for o in $OPLIST
do
echo "${o}=foo" > ${FDIR}/_src.conf
m=`md5 < ${FDIR}/_src.conf`
mkdir -p ${RDIR}/$m
mv ${FDIR}/_src.conf ${RDIR}/$m/src.conf
done
fi
# Run through each testtarget in turn
if true ; then
for d in ${RDIR}/[0-9a-z]*
do
if [ ! -d $d ] ; then
continue;
fi
echo '------------------------------------------------'
cat $d/src.conf
echo '------------------------------------------------'
cp $d/src.conf ${ODIR}/src.conf
if [ ! -f $d/iw/done ] ; then
MAKEOBJDIRPREFIX=$ODIR/_.ref
export MAKEOBJDIRPREFIX
echo "# BW(ref)+IW(ref) `cat $d/src.conf`"
rm -rf $d/iw
mkdir -p $d/iw
iw || true
mv ${FDIR}/_.* $d/iw || true
touch $d/iw/done
fi
if [ ! -f $d/bw/done ] ; then
MAKEOBJDIRPREFIX=$ODIR/_.tst
export MAKEOBJDIRPREFIX
echo "# BW(opt) `cat $d/src.conf`"
rm -rf $d/w $d/bw
mkdir -p $d/w $d/bw
if bw ; then
mv ${FDIR}/_.* $d/bw || true
echo "# BW(opt)+IW(opt) `cat $d/src.conf`"
iw || true
mv ${FDIR}/_.* $d/w || true
touch $d/w/done
echo "# BW(opt)+IW(ref) `cat $d/src.conf`"
echo '' > ${ODIR}/src.conf
iw || true
mv ${FDIR}/_.* $d/bw || true
touch $d/bw/done
else
mv ${FDIR}/_.* $d/bw || true
touch $d/bw/done $d/w/done
fi
fi
done
fi
|