/[d-i]/trunk/build/treecompare
ViewVC logotype

Contents of /trunk/build/treecompare

Parent Directory Parent Directory | Revision Log Revision Log


Revision 611 - (show annotations) (download)
Fri Oct 19 17:44:19 2001 UTC (11 years, 7 months ago) by joeyh
File size: 3021 byte(s)
daily_build updates
1 #!/bin/sh -e
2 # "Daddy, I wanna be a perl script when I grow up.."
3 #
4 # Compares two unpacked trees, and finds and flags added files,
5 # files that have increased in size, and so on.
6
7 if [ ! "$1" -o ! "$2" ]; then
8 echo "Usage: $0 oldtree newtree" >&2
9 exit 1
10 fi
11
12 oldtree=$1
13 newtree=$2
14
15 # Special case hack: rename lib/modules/k.ver.sion to lib/modules/x.y.zz, to
16 # facilitate seeing changes inside the modules tree over kernel versions.
17 oldmod=$(echo $oldtree/lib/modules/*)
18 mv $oldmod $oldtree/lib/modules/x.y.zz
19 newmod=$(echo $newtree/lib/modules/*)
20 mv $newmod $newtree/lib/modules/x.y.zz
21
22 # $1 = command to run ($tree is substitutued)
23 # $2 = optional units
24 # Sets as a size effect $change to the difference netween new and old.
25 compare () {
26 tree=$oldtree
27 oldval=$(eval "$1")
28 tree=$newtree
29 newval=$(eval "$1")
30 if [ $oldval -lt $newval ]; then
31 echo "added $(($newval - $oldval))$2"
32 elif [ $oldval -gt $newval ]; then
33 echo "removed $(($oldval - $newval))$2"
34 else
35 echo "unchanged"
36 fi
37 change=$(($newval - $oldval))
38 }
39
40 sortbysize () {
41 perl -e '
42 $basedir=shift;
43 %filesize=map {
44 chomp;
45 $file=$_;
46 $file=~s/^\s+//;
47 $file="$basedir/$file";
48 $size=0;
49 if (-d $file) {
50 $size=`du -b -s $file`;
51 chomp $size;
52 $size=~s/\s.*//;
53 }
54 elsif (! -l $file) {
55 $size=-s $file;
56 }
57 "\t$size:\t$_\n" => $size;
58 } <>;
59 print sort { $filesize{$b} <=> $filesize{$a} } keys %filesize
60 ' $newtree
61 }
62
63 echo -n "Size: "
64 compare 'du -k -s $tree | cut -d " " -f 1' 'k'
65 sizechange=$change
66 echo -n "Dir count: "
67 compare 'find $tree -type d | wc -l'
68 dirchange=$change
69 echo -n "File count: "
70 compare 'find $tree -not -type d | wc -l'
71 filechange=$change
72 echo
73
74 if [ $sizechange -gt 0 ]; then
75 echo "Bigger directories:"
76 # A better man than I may be able to do this in shell..
77 perl -e '
78 $dir2=shift()."/";
79 $dir1=shift()."/";
80 %du=map {chomp;s/$dir1//;reverse split " ", $_, 2} `du -b $dir1`;
81 %du2=map {chomp;s/$dir2//;reverse split " ", $_, 2} `du -b $dir2`;
82 foreach (sort { $du{$b} <=> $du{$a} } keys %du) {
83 next unless exists $du2{$_};
84 next if $du{$_} <= $du2{$_};
85 print "\t".($du{$_} - $du2{$_}).":\t/$_\n"
86 }
87 ' $oldtree $newtree | sort -rn
88 echo
89
90 echo "Bigger files:"
91 perl -e '
92 $dir2=shift()."/";
93 $dir1=shift()."/";
94 %files=map {chomp; $file=$_; s/^$dir1//; $_ => -s $file }
95 `find $dir1 -type f`;
96 %files2=map {chomp; $file=$_; s/^$dir2//; $_ => -s $file }
97 `find $dir2 -type f`;
98 foreach (sort { $files{$b} <=> $files{$a} } keys %files) {
99 next unless exists $files2{$_};
100 next if $files{$_} <= $files2{$_};
101 print "\t".($files{$_} - $files2{$_}).":\t/$_\n"
102 }
103 ' $oldtree $newtree | sort -rn
104 echo
105 fi
106
107 echo "New stuff (biggest first):"
108 diff -rq $oldtree $newtree | fgrep "in $newtree" | sed "s!Only in $newtree\(.*\): !\1/!" | sortbysize
109 echo
110
111 echo "Removed stuff:"
112 diff -rq $oldtree $newtree | fgrep "in $oldtree" | sed "s!Only in $oldtree\(.*\): ! \1/!"
113 echo
114
115 # Clean up.
116 mv $newtree/lib/modules/x.y.zz $newmod
117 mv $oldtree/lib/modules/x.y.zz $oldmod
118

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.5