2 # This file is in the public domain
7 OPLIST=`sh listallopts.sh`
16 : ${MAKE_JOBS:="-j$(sysctl -n hw.ncpu)"}
18 export ODIR MNT RDIR FDIR
23 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
27 if [ $a -ne 0 ] ; then
30 make ${MAKE_JOBS} buildworld \
31 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
35 if [ $a -ne 0 ] ; then
38 make ${MAKE_JOBS} buildkernel \
40 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
44 if [ $a -ne 0 ] ; then
51 trap "umount ${MNT} || true" 1 2 15 EXIT
52 newfs -O1 -U -b 4096 -f 512 /dev/md$MDUNIT
54 mount /dev/md${MDUNIT} ${MNT}
57 make ${MAKE_JOBS} installworld \
58 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
63 if [ $a -ne 0 ] ; then
68 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
73 if [ $a -ne 0 ] ; then
77 make ${MAKE_JOBS} installkernel \
80 SRCCONF=${ODIR}/src.conf __MAKE_CONF=/dev/null \
84 if [ $a -ne 0 ] ; then
89 ( cd ${MNT} && mtree -c ) > ${FDIR}/_.mtree
90 ( cd ${MNT} && du ) > ${FDIR}/_.du
91 ( df -i ${MNT} ) > ${FDIR}/_.df
92 echo success > ${FDIR}/_.success
103 # Clean and recreate the ODIR
106 echo "=== Clean and recreate ${ODIR}"
107 if rm -rf ${ODIR} ; then
110 chflags -R noschg ${ODIR}
113 mkdir -p ${ODIR} ${FDIR} ${MNT}
117 trap "umount ${MNT} || true; mdconfig -d -u $MDUNIT" 1 2 15 EXIT
120 mdconfig -d -u $MDUNIT || true
121 dd if=/dev/zero of=${ODIR}/imgfile bs=1m count=4096
122 mdconfig -a -t vnode -f ${ODIR}/imgfile -u $MDUNIT
124 # Build & install the reference world
127 echo "=== Build reference world"
128 echo '' > ${ODIR}/src.conf
129 MAKEOBJDIRPREFIX=$ODIR/_.ref
130 export MAKEOBJDIRPREFIX
132 echo "=== Install reference world"
135 mv ${FDIR}/_.* ${RDIR}/Ref
138 # Parse option list into subdirectories with src.conf files.
141 rm -rf ${RDIR}/[0-9a-f]*
144 echo "${o}=foo" > ${FDIR}/_src.conf
145 m=`md5 < ${FDIR}/_src.conf`
147 mv ${FDIR}/_src.conf ${RDIR}/$m/src.conf
151 # Run through each testtarget in turn
154 for d in ${RDIR}/[0-9a-z]*
156 if [ ! -d $d ] ; then
159 echo '------------------------------------------------'
161 echo '------------------------------------------------'
162 cp $d/src.conf ${ODIR}/src.conf
164 if [ ! -f $d/iw/done ] ; then
165 MAKEOBJDIRPREFIX=$ODIR/_.ref
166 export MAKEOBJDIRPREFIX
167 echo "# BW(ref)+IW(ref) `cat $d/src.conf`"
171 mv ${FDIR}/_.* $d/iw || true
174 if [ ! -f $d/bw/done ] ; then
175 MAKEOBJDIRPREFIX=$ODIR/_.tst
176 export MAKEOBJDIRPREFIX
177 echo "# BW(opt) `cat $d/src.conf`"
181 mv ${FDIR}/_.* $d/bw || true
183 echo "# BW(opt)+IW(opt) `cat $d/src.conf`"
185 mv ${FDIR}/_.* $d/w || true
188 echo "# BW(opt)+IW(ref) `cat $d/src.conf`"
189 echo '' > ${ODIR}/src.conf
191 mv ${FDIR}/_.* $d/bw || true
194 mv ${FDIR}/_.* $d/bw || true
195 touch $d/bw/done $d/w/done