[Collab-qa-commits] r852 - tools/debcmp
lucas at alioth.debian.org
lucas at alioth.debian.org
Tue May 20 13:29:13 UTC 2008
Author: lucas
Date: 2008-05-20 13:29:11 +0000 (Tue, 20 May 2008)
New Revision: 852
Modified:
tools/debcmp/Notes
tools/debcmp/debcmp.rb
Log:
minor debcmp fixes
Modified: tools/debcmp/Notes
===================================================================
--- tools/debcmp/Notes 2008-05-20 13:27:03 UTC (rev 851)
+++ tools/debcmp/Notes 2008-05-20 13:29:11 UTC (rev 852)
@@ -21,7 +21,15 @@
./debcmp.rb -p $1 -v $2 -a $D1 -b $D2 --pool &> ${1}_${2}.out || echo "FAILED $1 $2"
done
+D1=normal-2008-03-18
+D2=dash-2008-03-18
+cat ~/debcluster-data/logs/res.dash.bothok | while read s; do
+ set $s
+ echo "./debcmp.rb -p $1 -v $2 -a $D1 -b $D2 --pool" > ${1}_${2}.cmd
+ ./debcmp.rb -p $1 -v $2 -a $D1 -b $D2 --pool &> ${1}_${2}.out || echo "FAILED $1 $2"
+done &>debcmp.log
+
# move 0-sized files to subdir
mkdir output_zero
for f in *.out; do
@@ -30,3 +38,19 @@
fi
done
+# partial rerun
+# change z*.out to something else
+for f in z*.out; do
+ echo -n "$f: "
+ sh ${f%%out}cmd &> $f
+ if [ -s $f ]; then
+ echo "not empty"
+ else
+ echo "empty"
+ fi
+done
+
+# full rerun
+for f in *.out; do
+ sh ${f%%out}cmd &> $f
+done &> debcmp.log
Modified: tools/debcmp/debcmp.rb
===================================================================
--- tools/debcmp/debcmp.rb 2008-05-20 13:27:03 UTC (rev 851)
+++ tools/debcmp/debcmp.rb 2008-05-20 13:29:11 UTC (rev 852)
@@ -18,6 +18,15 @@
pool = false
tmpbase = '/scratch/grenoble/lnussbaum/debcluster-data/tmp'
+DATEMATCHES = {
+ /docbook-to-man, \w\w\w \d\d \w\w\w \d\d\d\d, \d\d:\d\d/ => 'docbook-to-man, Sun 01 Jan 2000, 00:00',
+ /Generated on \w\w\w \w\w\w \d+ \d\d:\d\d:\d\d \d\d\d\d/ => 'Generated on Sun Jan 1 00:00:00 2000',
+ /\w\w\w \w\w\w ( |\d)\d \d\d:\d\d:\d\d \w\w\w \d\d\d\d/ => 'Sun Jan 1 00:00:00 CET 2000',
+ /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/ => '2000-01-01 00:00:00',
+ /ZM_TIME_BUILD=\d\d\d\d\d\d*/ => 'ZM_TIME_BUILD=111111111'
+
+}
+
# create the first working directories
$wd = `mktemp -d #{tmpbase}/debcmp.XXXXXX`.chomp
system("mkdir -p #{$wd}/a #{$wd}/b")
@@ -270,7 +279,7 @@
# sort lines of control files that should be sorted
[ "#{$wd}/c_a", "#{$wd}/c_b" ].each do |dir|
Find::find(dir) do |path|
- if File::file?(path) and [ 'conffiles' ].include?(File::basename(path))
+ if File::file?(path) and [ 'conffiles', 'shlibs' ].include?(File::basename(path))
str = IO::read(path).split(/\n/).sort.join("\n")
File::open(path, 'w') { |fd| fd.puts str }
end
@@ -288,10 +297,10 @@
debstrip_a.each do |d|
systemr("cd #{$wd}/p_a/#{d} && find . | sort > #{$wd}/a_#{d}.files")
systemr("cd #{$wd}/p_b/#{d} && find . | sort > #{$wd}/b_#{d}.files")
- systemr("cd #{$wd}/p_a/#{d} && find . -exec file {} + | sort > #{$wd}/a_#{d}.file_output")
- systemr("cd #{$wd}/p_b/#{d} && find . -exec file {} + | sort > #{$wd}/b_#{d}.file_output")
- systemr("cd #{$wd}/p_a/#{d} && find . -exec file -i {} + | sort > #{$wd}/a_#{d}.filei_output")
- systemr("cd #{$wd}/p_b/#{d} && find . -exec file -i {} + | sort > #{$wd}/b_#{d}.filei_output")
+ systemr("cd #{$wd}/p_a/#{d} && find . | xargs -s 2048 file | sort > #{$wd}/a_#{d}.file_output")
+ systemr("cd #{$wd}/p_b/#{d} && find . | xargs -s 2048 file | sort > #{$wd}/b_#{d}.file_output")
+ systemr("cd #{$wd}/p_a/#{d} && find . | xargs -s 2048 file -i | sort > #{$wd}/a_#{d}.filei_output")
+ systemr("cd #{$wd}/p_b/#{d} && find . | xargs -s 2048 file -i | sort > #{$wd}/b_#{d}.filei_output")
[ "#{$wd}/a_#{d}.file_output", "#{$wd}/b_#{d}.file_output",
"#{$wd}/a_#{d}.filei_output", "#{$wd}/b_#{d}.filei_output"].each do |fn|
@@ -344,11 +353,28 @@
def equalfiles?(d, base_a, base_b, f, verbose = true)
s = `diff -u \"#{base_a}/#{f}\" \"#{base_b}/#{f}\"`
if s.length != 0
- if verbose
+ sa = IO::read("#{base_a}/#{f}")
+ sb = IO::read("#{base_b}/#{f}")
+ sao = sa.clone
+ sbo = sb.clone
+ DATEMATCHES.each_pair do |k,v|
+ sa.gsub!(k, v)
+ sb.gsub!(k, v)
+ end
+ diff = true
+ if sa != sao or sb != sbo
+ File::open("#{base_a}/#{f}.stripdates", 'w') { |fd| fd.print sa }
+ File::open("#{base_b}/#{f}.stripdates", 'w') { |fd| fd.print sb }
+ s = `diff -u \"#{base_a}/#{f}.stripdates\" \"#{base_b}/#{f}.stripdates\"`
+ if s.length == 0
+ diff = false
+ end
+ end
+ if diff and verbose
puts "E: #{d}: #{f} differs:"
puts s
end
- return false
+ return diff
end
return true
end
@@ -383,6 +409,13 @@
end
end
+ elsif t =~ /^application\/x-gzip/
+ systemr("zcat \"#{base_a}/#{f}\" > \"#{base_a}/#{f}.unzipped\"")
+ systemr("zcat \"#{base_b}/#{f}\" > \"#{base_b}/#{f}.unzipped\"")
+ t = `file -ib "#{base_a}/#{f}.unzipped"`.chomp
+ filecmp(d, base_a, base_b, "#{f}.unzipped", t)
+ systemr("rm -f \"#{base_a}/#{f}.unzipped\" \"#{base_b}/#{f}.unzipped\"")
+
elsif t =~ /^application\/x-bzip2/
systemr("bzcat \"#{base_a}/#{f}\" > \"#{base_a}/#{f}.unzipped\"")
systemr("bzcat \"#{base_b}/#{f}\" > \"#{base_b}/#{f}.unzipped\"")
@@ -398,20 +431,22 @@
puts "E: #{d}: #{f} NEEDED in headers differ:"
puts s
end
- systemr("objdump -T \"#{base_a}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_a}/#{f}.undef\"")
- systemr("objdump -T \"#{base_b}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_b}/#{f}.undef\"")
- s = `diff -u #{base_b}/#{f}.undef #{base_b}/#{f}.undef`.chomp
- if s.length != 0
- puts "E: #{d}: #{f} undefined symbols differ:"
- puts s
+ if f !~ /^\.\/usr\/lib\/debug\//
+ systemr("objdump -T \"#{base_a}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_a}/#{f}.undef\"")
+ systemr("objdump -T \"#{base_b}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_b}/#{f}.undef\"")
+ s = `diff -u #{base_b}/#{f}.undef #{base_b}/#{f}.undef`.chomp
+ if s.length != 0
+ puts "E: #{d}: #{f} undefined symbols differ:"
+ puts s
+ end
+ systemr("objdump -T \"#{base_a}/#{f}\" | grep '.text' | cut -c 34- > \"#{base_a}/#{f}.def\"")
+ systemr("objdump -T \"#{base_b}/#{f}\" | grep '.text' | cut -c 34- > \"#{base_b}/#{f}.def\"")
+ s = `diff -u #{base_b}/#{f}.def #{base_b}/#{f}.def`.chomp
+ if s.length != 0
+ puts "E: #{d}: #{f} Defined symbols differ:"
+ puts s
+ end
end
- systemr("objdump -T \"#{base_a}/#{f}\" | grep '.text' | cut -c 34- > \"#{base_a}/#{f}.def\"")
- systemr("objdump -T \"#{base_b}/#{f}\" | grep '.text' | cut -c 34- > \"#{base_b}/#{f}.def\"")
- s = `diff -u #{base_b}/#{f}.def #{base_b}/#{f}.def`.chomp
- if s.length != 0
- puts "E: #{d}: #{f} Defined symbols differ:"
- puts s
- end
systemr("rm -f \"#{base_a}/#{f}.objdumpp\" \"#{base_b}/#{f}.objdumpp\" \"#{base_a}/#{f}.undef\" \"#{base_b}/#{f}.undef\" \"#{base_a}/#{f}.def\" \"#{base_b}/#{f}.def\"")
elsif t =~ /^application\/x-executable.*dynamically linked \(uses shared libs\)/
@@ -422,22 +457,27 @@
puts "E: #{d}: #{f} NEEDED in headers differ:"
puts s
end
- systemr("objdump -T \"#{base_a}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_a}/#{f}.undef\"")
- systemr("objdump -T \"#{base_b}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_b}/#{f}.undef\"")
- s = `diff -u \"#{base_b}/#{f}.undef\" \"#{base_b}/#{f}.undef\"`.chomp
- if s.length != 0
- puts "E: #{d}: #{f} undefined symbols differ:"
- puts s
+ if f !~ /^\.\/usr\/lib\/debug\//
+ systemr("objdump -T \"#{base_a}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_a}/#{f}.undef\"")
+ systemr("objdump -T \"#{base_b}/#{f}\" | grep '*UND*' | cut -c 34- > \"#{base_b}/#{f}.undef\"")
+ s = `diff -u \"#{base_b}/#{f}.undef\" \"#{base_b}/#{f}.undef\"`.chomp
+ if s.length != 0
+ puts "E: #{d}: #{f} undefined symbols differ:"
+ puts s
+ end
end
systemr("rm -f \"#{base_a}/#{f}.objdumpp\" \"#{base_b}/#{f}.objdumpp\" \"#{base_a}/#{f}.undef\" \"#{base_b}/#{f}.undef\"")
cmpsize(d, base_a, base_b, f)
- elsif t =~ /^text\// or t == 'application/x-perl' or t == 'application/x-empty' or t == '' or t =~ /^image\// or t == 'application/x-shellscript' or t == 'application/pdf'
+ elsif t =~ /^text\// or t == 'application/x-perl' or t == 'application/x-empty' or t == '' or t =~ /^image\// or t == 'application/x-shellscript'
# files must be the sames
equalfiles?(d, base_a, base_b, f)
- elsif t == 'application/x-archive' || t =~ /^application\/x-tar/ # FIXME could uncompress and look inside
+ elsif t == 'application/pdf'
# just compare size
cmpsize(d, base_a, base_b, f)
+ elsif t == 'application/x-archive' || t =~ /^application\/x-tar/ || t =~ /^application\/zip/ # FIXME could uncompress and look inside
+ # just compare size
+ cmpsize(d, base_a, base_b, f)
else
if not equalfiles?(d, base_a, base_b, f)
puts "I: #{d}: Filetype unknown, files differ: #{f} / #{t}"
More information about the Collab-qa-commits
mailing list