From 55825a83df8486c69676eceb9b89d810793970c8 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 24 Sep 2007 15:54:26 +0100 Subject: [PATCH] * 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. -- --- debian/changelog | 13 +++++ hosts/cadmium/manual-test-one-binary | 7 +++ hosts/cadmium/onepackage-config | 14 ++++- runner/adt-testreport-onepackage | 86 +++++++++++++++++++++++++--- 4 files changed, 109 insertions(+), 11 deletions(-) create mode 100755 hosts/cadmium/manual-test-one-binary diff --git a/debian/changelog b/debian/changelog index 1883ca3..b295641 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 index 0000000..7caecd7 --- /dev/null +++ b/hosts/cadmium/manual-test-one-binary @@ -0,0 +1,7 @@ +#!/bin/sh +# usage: .../manual-test-one-source +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 diff --git a/hosts/cadmium/onepackage-config b/hosts/cadmium/onepackage-config index aa747db..700a50f 100644 --- a/hosts/cadmium/onepackage-config +++ b/hosts/cadmium/onepackage-config @@ -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 " 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 diff --git a/runner/adt-testreport-onepackage b/runner/adt-testreport-onepackage index 0d7a6e6..0839e5a 100755 --- a/runner/adt-testreport-onepackage +++ b/runner/adt-testreport-onepackage @@ -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 () { + next if m/^\#/ or !m/\S/; + die unless m/^($pre)\s*$/; +#print STDERR "SUPPRESS GOT $1\n"; + $suppress{$1}= 1; + } + f2(); + } + f1(); while () { 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 () { 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 <