chiark / gitweb /
Improve an error message from dgit-repos-policy-debian.
[dgit.git] / infra / dgit-repos-policy-debian
index a770c55ec07d40e5858c2c782c41934a6ecab8f1..5b957d36ebc2db3700bf26221e38075120e967e3 100755 (executable)
@@ -86,7 +86,9 @@ our %deliberately;
 sub apiquery ($) {
     my ($subpath) = @_;
     local $/=undef;
-    my $cmd = "$dgitlive/dgit -d$distro \$DGIT_TEST_OPTS";
+    my $dgit = "$dgitlive/dgit";
+    $dgit = "dgit" if !stat_exists $dgit;
+    my $cmd = "$dgit -d$distro \$DGIT_TEST_OPTS";
     $cmd .= " -".("D" x $debuglevel) if $debuglevel;
     $cmd .= " archive-api-query $subpath";
     printdebug "apiquery $cmd\n";
@@ -104,7 +106,7 @@ sub specific_suite_has_vsn_in_our_history ($) {
     foreach my $entry (@$in_suite) {
        my $vsn = $entry->{version};
        die "$pkg ?" unless defined $vsn;
-       my $tagref = "refs/tags/".debiantag $vsn;
+       my $tagref = "refs/tags/".debiantag $vsn, $distro;
        printdebug " checking history suite=$suite vsn=$vsn tagref=$tagref\n";
        $?=0; my $r = system qw(git show-ref --verify --quiet), $tagref;
        return 1 if !$r;
@@ -279,10 +281,10 @@ sub action_push () {
     if (deliberately('include-questionable-history')) {
        return 0;
     }
-    die "Package is in NEW and has not been accepted or rejected yet;".
+    die "\nPackage is in NEW and has not been accepted or rejected yet;".
        " use a --deliberately option to specify whether you are".
        " keeping or discarding the previously pushed history. ".
-       " Please RTFM dgit(1).\n";
+       " Please RTFM dgit(1).\n\n";
 }
 
 sub action_push_confirm () {
@@ -344,7 +346,7 @@ END
        printdebug "|< ", $_ if $debuglevel>=2;
 
        next if m/^\w+ missing$/;
-       die unless m/^(\w+) (\w+) (\d+)\s/;
+       die "$_ ?" unless m/^(\w+) (\w+) (\d+)\s/;
        my ($objid,$objtype,$nbytes) = ($1,$2,$3);
 
        my $drop;
@@ -459,17 +461,18 @@ my @orgargv = @ARGV;
 for (;;) {
     @ARGV = @orgargv;
     eval {
-       poldb_setup(poldb_path($repos));
-       $stderr = '';
+       poldb_setup(poldb_path($repos), sub {
+           $poldbh->{HandleError} = sub {
+               return 0 unless $poldbh->err == 5; # SQLITE_BUSY, not in .pm :-(
+               die bless { }, $db_busy_exception;
+           };
 
-       eval ($ENV{'DGIT_DRS_RPD_TEST_DBLOOP_HOOK'}//'');
-       die $@ if length $@;
-       # used by tests/tests/debpolicy-dbretry
+           eval ($ENV{'DGIT_RPD_TEST_DBLOOP_HOOK'}//'');
+           die $@ if length $@;
+           # used by tests/tests/debpolicy-dbretry
+        });
 
-       $poldbh->{HandleError} = sub {
-           return 0 unless $poldbh->err == 5; # SQLITE_BUSY, not in .pm :-(
-           die bless { }, $db_busy_exception;
-       };
+       $stderr = '';
 
        $rcode = $fn->();
        die unless defined $rcode;