]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - tools/tools/build_option_survey/reduce.sh
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / tools / tools / build_option_survey / reduce.sh
1 #!/bin/sh
2 # This file is in the public domain
3 # $FreeBSD$
4
5 set -e
6
7 OPLIST=`sh listallopts.sh`
8
9 ODIR=/usr/obj/`pwd`
10 RDIR=${ODIR}/_.result
11 export ODIR RDIR
12
13
14 compa ( ) (
15         if [ ! -f $1/_.mtree ] ; then
16                 return
17         fi
18         if [ ! -f $2/_.mtree ] ; then
19                 return
20         fi
21         
22         mtree -k uid,gid,mode,nlink,size,link,type,flags \
23             -f ${1}/_.mtree -f $2/_.mtree > $2/_.mtree.all.txt || true
24         grep '^         ' $2/_.mtree.all.txt > $4/$3.mtree.chg.txt || true
25         grep '^[^       ]' $2/_.mtree.all.txt > $4/$3.mtree.sub.txt || true
26         grep '^ [^      ]' $2/_.mtree.all.txt > $4/$3.mtree.add.txt || true
27         a=`wc -l < $4/$3.mtree.add.txt`
28         s=`wc -l < $4/$3.mtree.sub.txt`
29         c=`wc -l < $4/$3.mtree.chg.txt`
30         c=`expr $c / 2 || true`
31
32         br=`awk 'NR == 2 {print $3}' $1/_.df`
33         bt=`awk 'NR == 2 {print $3}' $2/_.df`
34         echo $3 A $a S $s C $c B $bt D `expr $br - $bt`
35 )
36
37 for o in $OPLIST
38 do
39         md=`echo "${o}=foo" | md5`
40         m=${RDIR}/$md
41         if [ ! -d $m ] ; then
42                 continue
43         fi
44         if [ ! -d $m/iw -a ! -d $m/bw -a ! -d $m/w ] ; then
45                 continue
46         fi
47         echo "=== reduce ${o}"
48
49         echo
50         echo -------------------------------------------------------------
51         echo $md
52         cat $m/src.conf
53         echo -------------------------------------------------------------
54         if [ ! -f $m/iw/done ] ; then
55                 echo "IW pending"
56         elif [ ! -f $m/iw/_.success ] ; then
57                 echo "IW failed"
58         fi
59         if [ ! -f $m/bw/done ] ; then
60                 echo "BW pending"
61         elif [ ! -f $m/bw/_.success ] ; then
62                 echo "BW failed"
63         fi
64         if [ ! -f $m/w/done ] ; then
65                 echo "W pending"
66         elif [ ! -f $m/w/_.success ] ; then
67                 echo "W failed"
68         fi
69         (
70         for x in iw bw w
71         do
72                 compa ${RDIR}/Ref/ $m/$x r-$x $m
73         done
74         ) > $m/stats
75         cat $m/stats
76 done
77 echo "== reduce done"