[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