[Collab-qa-commits] r694 - tools/debcmp

lucas at alioth.debian.org lucas at alioth.debian.org
Tue Feb 5 20:34:19 UTC 2008


Author: lucas
Date: 2008-02-05 20:34:18 +0000 (Tue, 05 Feb 2008)
New Revision: 694

Modified:
   tools/debcmp/Notes
   tools/debcmp/debcmp.rb
Log:
small debcmp improvements

Modified: tools/debcmp/Notes
===================================================================
--- tools/debcmp/Notes	2008-02-03 14:45:24 UTC (rev 693)
+++ tools/debcmp/Notes	2008-02-05 20:34:18 UTC (rev 694)
@@ -1,8 +1,11 @@
+D1=~/debcluster-data/results/bdfh/normal/
+D2=~/debcluster-data/results/bdfh/bdfh/
 
-D1=/scratch/grenoble/lnussbaum/debcluster-data/debian-mirror/pool/main
-D2=/scratch/grenoble/lnussbaum/debcluster-data/logs/output.20070220
+find $D1 -name '*.dsc' -exec basename {} \; |sed 's/.dsc$//' | sort > d1_dsc
+find $D2 -name '*.dsc' -exec basename {} \; |sed 's/.dsc$//' | sort > d2_dsc
+cat d1_dsc d2_dsc | sort | uniq -c | grep "^\s*2 " | awk '{print $2}' > dsc
 
-for i in $(find $D2 -name '*.dsc' -exec basename {} \; |sed 's/.dsc$//' | sort); do
+for i in $(<dsc); do
   set $(echo $i | sed 's/_/ /')
   echo $1 $2
   echo "./debcmp.rb -p $1 -v $2 -a $D1 -b $D2 --pool" > ${1}_${2}.cmd
@@ -18,3 +21,12 @@
   ./debcmp.rb -p $1 -v $2 -a $D1 -b $D2 --pool &> ${1}_${2}.out || echo "FAILED $1 $2"
 done
 
+
+# move 0-sized files to subdir
+mkdir output_zero
+for f in *.out; do
+  if [ -f $f -a ! -s $f ]; then
+    mv ${f%%out}cmd $f output_zero/
+  fi
+done
+

Modified: tools/debcmp/debcmp.rb
===================================================================
--- tools/debcmp/debcmp.rb	2008-02-03 14:45:24 UTC (rev 693)
+++ tools/debcmp/debcmp.rb	2008-02-05 20:34:18 UTC (rev 694)
@@ -1,4 +1,4 @@
-#!/usr/bin/ruby -w
+#!/usr/bin/ruby
 #
 # example:
 # ./debcmd.rb -p hebcal -v 3.5-1 -a ~/mir/mirror/h/hebcal -b ~/mir/built/h/hebcal
@@ -16,7 +16,7 @@
 $arch = 'i386'
 $nocleanup = false
 pool = false
-tmpbase = '/scratch/grenoble/lnussbaum/tmp'
+tmpbase = '/scratch/grenoble/lnussbaum/debcluster-data/tmp'
 
 # create the first working directories
 $wd = `mktemp -d #{tmpbase}/debcmp.XXXXXX`.chomp
@@ -129,7 +129,7 @@
 tgz_a = ! Dir::glob("#{sdir_a}/*_#{sversion}*.tar.gz").empty?
 tgz_b = ! Dir::glob("#{sdir_b}/*_#{sversion}*.tar.gz").empty?
 
-if Dir::glob("#{sdir_b}/*_#{version}_*.deb").length == 0
+if Dir::glob("#{sdir_b}/*_*_*.{deb,udeb}").length == 0
   puts "E: No .deb files found! Build probably failed."
   clean_exit(1)
 end
@@ -138,26 +138,35 @@
 if native
   systemr("cp #{sdir_a}/*_#{sversion}.tar.gz #{sdir_a}/*_#{version}.dsc #{$wd}/a")
   systemr("cp #{sdir_b}/*_#{sversion}.tar.gz #{sdir_b}/*_#{version}.dsc #{$wd}/b")
-  l = Dir::glob("#{sdir_a}/*_#{version}_*.deb").reject { |e| e !~ /_(#{$arch}|all).deb/ }
+  l = Dir::glob("#{sdir_a}/*_*_*.{deb,udeb}").reject { |e| e !~ /_(#{$arch}|all).(u|)deb/ }
   systemr("cp #{l.join(' ')} #{$wd}/a")
-  l = Dir::glob("#{sdir_b}/*_#{version}_*.deb").reject { |e| e !~ /_(#{$arch}|all).deb/ }
+  l = Dir::glob("#{sdir_b}/*_*_*.{deb,udeb}").reject { |e| e !~ /_(#{$arch}|all).(u|)deb/ }
   systemr("cp #{l.join(' ')} #{$wd}/b")
 else
   systemr("cp #{sdir_a}/*_#{version}{.dsc,.diff.gz} #{$wd}/a")
   systemr("cp #{sdir_a}/*_#{sversion}.orig.tar.gz #{$wd}/a") if tgz_a
-  l = Dir::glob("#{sdir_a}/*_#{version}_*.deb").reject { |e| e !~ /_(#{$arch}|all).deb/ }
-  systemr("cp #{l.join(' ')} #{$wd}/a")
   systemr("cp #{sdir_b}/*_#{version}{.dsc,.diff.gz} #{$wd}/b")
   systemr("cp #{sdir_b}/*_#{sversion}.orig.tar.gz #{$wd}/b") if tgz_b
-  l = Dir::glob("#{sdir_b}/*_#{version}_*.deb").reject { |e| e !~ /_(#{$arch}|all).deb/ }
-  systemr("cp #{l.join(' ')} #{$wd}/b")
-end
+  l = Dir::glob("#{sdir_a}/*_*_*.{deb,udeb}").reject { |e| e !~ /_(#{$arch}|all).(u|)deb/ }
+  systemr("cp #{l.join(' ')} #{$wd}/a")
+  l = Dir::glob("#{sdir_b}/*_*_*.{deb,udeb}").reject { |e| e !~ /_(#{$arch}|all).(u|)deb/ }
+  systemr("cp #{l.join(' ')} #{$wd}/b")end
 
 # compare orig.tar.gz and .diff.gz files
 puts "# Comparing .orig.tar.gz and .diff.gz files..." if $verbose
 if native
   if not system("cmp #{$wd}/a/*.tar.gz #{$wd}/b/*.tar.gz &>/dev/null")
-    puts "E: .tar.gz files differ (native package)."
+    if not system("zcmp #{$wd}/a/*.tar.gz #{$wd}/b/*.tar.gz &>/dev/null")
+      # archives differ
+      systemr("mkdir -p #{$wd}/tgz_{a,b}")
+      systemr("tar xz -C #{$wd}/tgz_a -f #{$wd}/a/*.tar.gz") 
+      systemr("tar xz -C #{$wd}/tgz_b -f #{$wd}/b/*.tar.gz") 
+      s1 = `diff -bur #{$wd}/tgz_a #{$wd}/tgz_b`.chomp
+      if s1.length != 0
+        puts "E: .tar.gz files differ (native package):"
+        puts s1
+      end
+    end
   end
 elsif tgz_a and tgz_b
   if not system("cmp #{$wd}/a/*.orig.tar.gz #{$wd}/b/*.orig.tar.gz")
@@ -184,8 +193,8 @@
 
 # compare list of .debs
 puts "# Comparing list of .debs ..." if $verbose
-debs_a = Dir::glob("#{$wd}/a/*.deb").map { |f| File::basename(f) }.sort
-debs_b = Dir::glob("#{$wd}/b/*.deb").map { |f| File::basename(f) }.sort
+debs_a = Dir::glob("#{$wd}/a/*.{deb,udeb}").map { |f| File::basename(f) }.sort
+debs_b = Dir::glob("#{$wd}/b/*.{deb,udeb}").map { |f| File::basename(f) }.sort
 if debs_a != debs_b
   puts "E: different debs in dirs:"
   puts "E: A: #{debs_a.join(' ')}"
@@ -319,8 +328,8 @@
 end
 
 # function to compare file sizes
-ERROR_THR = 0.2
-WARNING_THR = 0.03
+ERROR_THR = 0.05
+WARNING_THR = 0.02
 def cmpsize(d, base_a, base_b, f)
   s_a = File::size("#{base_a}/#{f}")
   s_b = File::size("#{base_b}/#{f}")
@@ -374,6 +383,13 @@
       end
     end
 
+  elsif t =~ /^application\/x-bzip2/
+    systemr("bzcat \"#{base_a}/#{f}\" > \"#{base_a}/#{f}.unzipped\"")
+    systemr("bzcat \"#{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-sharedlib/
     system("objdump -p \"#{base_a}/#{f}\" |grep NEEDED > \"#{base_a}/#{f}.objdumpp\"")
     system("objdump -p \"#{base_b}/#{f}\" |grep NEEDED > \"#{base_b}/#{f}.objdumpp\"")
@@ -419,7 +435,7 @@
   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'
     # files must be the sames
     equalfiles?(d, base_a, base_b, f)
-  elsif t == 'application/x-archive'
+  elsif t == 'application/x-archive' || t =~ /^application\/x-tar/ # FIXME could uncompress and look inside
     # just compare size
     cmpsize(d, base_a, base_b, f)
   else




More information about the Collab-qa-commits mailing list