chiark / gitweb /
* Separate email_sourcepackage_header and email_binarypackage_header
authorIan Jackson <ian@davenant.greenend.org.uk>
Mon, 24 Sep 2007 14:54:26 +0000 (15:54 +0100)
committerIan Jackson <ian@davenant.greenend.org.uk>
Mon, 24 Sep 2007 14:54:26 +0000 (15:54 +0100)
  to allow us to properly file bugs in LP against binary packages built
  from differently-named sources.
* adt-testreport-onepackage: Dump a logfile giving the scores and facts
  used for package selection.
* adt-testreport-onepackage: Do not prefer packages whose source package
  is listed in the suppressions file.
* hosts/cadmium/manual-test-one-binary: new testing script.
--

debian/changelog
hosts/cadmium/manual-test-one-binary [new file with mode: 0755]
hosts/cadmium/onepackage-config
runner/adt-testreport-onepackage

index 1883ca30d745f8cacd0362f97cf1cc39c81bfc9a..b295641ae01a2ddd30735d45a0bc108e8962aa13 100644 (file)
@@ -1,3 +1,16 @@
+autopkgtest (1.0.9) unstable; urgency=low
+
+  * Separate email_sourcepackage_header and email_binarypackage_header
+    to allow us to properly file bugs in LP against binary packages built
+    from differently-named sources.
+  * adt-testreport-onepackage: Dump a logfile giving the scores and facts
+    used for package selection.
+  * adt-testreport-onepackage: Do not prefer packages whose source package
+    is listed in the suppressions file.
+  * hosts/cadmium/manual-test-one-binary: new testing script.
+
+  --
+
 autopkgtest (1.0.8) gutsy; urgency=low
 
   * adt-run: pass -o Debug::pkgProblemResolver=true to apt & gdebi;
diff --git a/hosts/cadmium/manual-test-one-binary b/hosts/cadmium/manual-test-one-binary
new file mode 100755 (executable)
index 0000000..7caecd7
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# usage: .../manual-test-one-source <package-name>
+set -ex
+cd /home/iwj/adt-play
+PATH=/home/iwj/autopkgtest/runner:/usr/local/sbin:/usr/sbin:$PATH
+export PATH
+adt-testreport-onepackage /home/iwj/adt-play/onepackage-config adtrun_extra_opts=--built-binaries-filter=__ interactive=false target=binary-amd64 pkg=$1
index aa747db76cbdae2115050b94be91fadaa181b332..700a50f74254fcd418750dfd639df2ed6a3422d7 100644 (file)
@@ -3,7 +3,6 @@ mirror=http://archive.ubuntu.com/ubuntu
 distro=gutsy
 suite=main
 administrator_email=iwj@ubuntu.com
-#maintainer_email_override="$administrator_email"
 salutation="Ian"
 from="$salutation Jackson <ian+ubuntu-autopkgtest@chiark.greenend.org.uk>"
 disable=false
@@ -23,9 +22,18 @@ very few other packages.  Most autopkgtest reports are FTBFS problems.
 '
 
 maintainer_email_override="new@bugs.launchpad.net"
-email_package_header='
- affects /ubuntu/%s
+#maintainer_email_override="$administrator_email"
+
+email_sourcepackage_header=\
+' affects /ubuntu/@p
+ importance high
+ # version @v
+
+'
+email_binarypackage_header=\
+' affects /ubuntu/@s
  importance high
+ # version @v
 
 '
 email_signing_key=0xD6279768
index 0d7a6e62b974a8896e033d84e3657788277c5c48..0839e5a26d31c5fd1fe0a88da4ef6211eeb94f2d 100755 (executable)
@@ -69,6 +69,7 @@ gurl "$mirror/dists/$distro/$suite/$target/$sources.gz" "$tmp"/_$sources.gz
 zcat "$tmp"/_$sources.gz >"$tmp"/_$sources-in
 
 lastinfo="$var"/lastinfo-$target
+: "${scorelog:="$var"/scores-$target}"
 
 now=`date +%s`
 >>"$lastinfo"
@@ -85,6 +86,25 @@ if [ "x$pkg" = x ]; then
        sub f1() { $fn=shift @ARGV; open F, $fn or die "$fn $!"; }
        sub f2() { F->error and die "$fn $!"; close F or die "$fn $!"; }
 
+       $scorelog= "'"$scorelog"'";
+       if (length $scorelog) { open SCORE, "> $scorelog.new" or die $!; }
+       sub pscore ($;$) {
+               return unless length $scorelog;
+               printf SCORE "%$_[1]s", $_[0] or die $!;
+       }
+
+       $suppresspackages= "'"$suppresspackages"'";
+       if (length $suppresspackages) {
+               unshift @ARGV, $suppresspackages; f1();
+               while (<F>) {
+                       next if m/^\#/ or !m/\S/;
+                       die unless m/^($pre)\s*$/;
+#print STDERR "SUPPRESS GOT $1\n";
+                       $suppress{$1}= 1;
+               }
+               f2();
+       }
+
        f1();
        while (<F>) {
                die unless m/^($pre) ($vre) (\d+)( .*)?$/;
@@ -94,26 +114,61 @@ if [ "x$pkg" = x ]; then
        }
        f2();
        f1();
-       $best_score= -1;
+       $best_score= -2e9;
        sub scorepackage () {
                return if $skip;
                return if $score < $best_score
                     or ($score==$best_score and \
                         $package gt $best_package);
 #printf STDERR " <----- best score=%s best_score=%s\n", $score, $best_score;
+               pscore(" (best)");
                $best_score= $score;
                $best_package= $package;
        }
        sub endpackage () {
                return unless (defined $package
                                or defined $version
-                               or defined $skip);
+                               or defined $skip
+                               or defined $source);
                die unless defined $package;
                die unless defined $version;
+               $source= $package if !defined $source;
+
+               $score= '$now' - $lasttime{$package};
+               pscore("$package ",-30);
+               pscore("$source ",-25);
+               pscore("$score",10);
+
+               if ($score>1e7) {
+                       $score= 1e7;
+                       $scorechars.='c';
+               }
+               pscore(" $lastver{$package}",-25);
+               pscore(" $version ",-25);
+               $scorechars= "";
+               if ($lastver{$package} ne $version) {
+                       $score *= 5;
+                       $scorechars.="U";
+               }
+               if ($extras{$package} =~ m/ nt /) {
+                       $scorechars.="n";
+               } else {
+                       $score *= 10;
+               }
+               if ($suppress{$source}) {
+                       $score -= 2e7;
+                       $scorechars.="s";
+               }
+               pscore("-$scorechars",-5);
+               pscore("$score",10);
+
+#print STDERR "SCORE package=$package score $score source=$source\n";
                scorepackage();
+               pscore("\n");
                undef $package;
                undef $version;
                undef $skip;
+               undef $source;
        }
        while (<F>) {
                if (m/^Package: ($pre)$/) {
@@ -122,11 +177,9 @@ if [ "x$pkg" = x ]; then
                } elsif (m/^Version: ($vre)$/) {
                        die if defined $version;
                        $version= $1;
-                       $score= '$now' - $lasttime{$package};
-                       $score= 1e7 if $score>1e7;
-                       $score *= 5 if $lastver{$package} ne $version;
-                       $score *= 10 unless $extras{$package} =~ m/ nt /;
-#print STDERR "$package score $score\n";
+               } elsif (m/^Source: ($pre)$/) {
+                       die if defined $source;
+                       $source= $1;
                } elsif (m/^Architecture:.*/ &&
                         !m/\s(?:'$arch'|all|any)\s/) {
 #printf STDERR " <----- skip %s %s\n", $&, "'$arch'";
@@ -137,6 +190,10 @@ if [ "x$pkg" = x ]; then
        }
        f2();
        endpackage();
+       if (length $scorelog) {
+               close SCORE or die $!;
+               rename "$scorelog.new","$scorelog" or die $!;
+       }
        die unless length $best_package;
        open L, ">&4" or die $!;
        printf L "selected %s (age %s, score %d)\n",
@@ -171,6 +228,13 @@ mkdir "$tp" "$tp/src" "$tp/tmp" "$tp/out"
 
 getfield Version
 
+getfield Source
+if [ "x$pSource" != x ]; then
+       src="$pSource"
+else
+       src="$pkg"
+fi
+
 if test $target = source; then
        getfield Directory
        leafnames="`
@@ -191,6 +255,7 @@ if test $target = source; then
        testmode2=''
        desc="$pkg"
        : ${upload_if_ok:=true}
+       email_package_header="$email_sourcepackage_header"
 else
        getfield Filename
        fot="$tp/src/$pkg.deb"
@@ -199,6 +264,7 @@ else
        testmode2=--instantiate
        desc="$pkg $descx"
        : ${upload_if_ok:=false}
+       email_package_header="$email_binarypackage_header"
 fi
 
 if [ "x$maintainer_email_override" = x ]; then
@@ -309,7 +375,11 @@ Subject: autopkgtest $distro $desc: $summary
 
 END
 
-       printf >"$tmp"/_email "$email_package_header" "$pkg"
+       email_package_header="${email_package_header//@p/$pkg}"
+       email_package_header="${email_package_header//@s/$src}"
+       email_package_header="${email_package_header//@v/$pVersion}"
+       email_package_header="${email_package_header//@a/@}"
+       printf >"$tmp"/_email "%s" "$email_package_header"
 
        cat >>"$tmp"/_email <<END
  Test executed for:  $distro  $target  $pkg