chiark / gitweb /
Break out ensuredir and make mkrepotmp use it
[dgit.git] / infra / dgit-repos-server
index 9387ee3b8e9d2e06a86b5e50e821f56e0dfb3140..e794de25d152d4f421dc9064f1b58ce3670b3f68 100755 (executable)
@@ -234,12 +234,9 @@ sub lockrealtree () {
     locksometree(realdestrepo);
 }
 
-sub mkrepotmp () {
-    my $tmpdir = "$dgitrepos/_tmp";
-    return if mkdir $tmpdir;
-    return if $! == EEXIST;
-    die $!;
-}
+sub mkrepotmp () { ensuredir "$dgitrepos/_tmp" };
+
+sub removedtagsfile () { "$dgitrepos/_removed-tags/$package"; }
 
 sub recorderror ($) {
     my ($why) = @_;
@@ -275,7 +272,7 @@ sub policyhook {
     debugcmd '+',@cmd;
     my $r = system @cmd;
     die "system: $!" if $r < 0;
-    die "hook (".(shellquote @cmd).") failed ($?)"
+    die "dgit-repos-server: policy hook failed (or rejected) ($?)\n"
        if $r & ~($policyallowbits << 8);
     printdebug sprintf "hook => %#x\n", $r;
     return $r >> 8;
@@ -499,7 +496,7 @@ sub parsetag () {
            while (length) {
                if (s/^distro\=(\S+) //) {
                    die "$1 != $distro" unless $1 eq $distro;
-               } elsif (s/^(--deliberately-$package_re) //) {
+               } elsif (s/^(--deliberately-$deliberately_re) //) {
                    push @deliberatelies, $1;
                } elsif (s/^supersede:(\S+)=(\w+) //) {
                    die "supersede $1 twice" if defined $supersedes{$1};
@@ -680,7 +677,7 @@ sub checktagnoreplay () {
     my @problems;
 
     git_for_each_tag_referring($onlyreferring, sub {
-       my ($objid,$fullrefname,$tagname) = @_;
+       my ($objid,$refobjid,$fullrefname,$tagname) = @_;
        printdebug "checktagnoreplay - overwriting $fullrefname=$objid\n";
        my $supers = $supersedes{$fullrefname};
        if (!defined $supers) {
@@ -920,9 +917,9 @@ sub parseargsdispatch () {
        exit 0;
     }
 
-    $distro = $ENV{'DGIT_DRS_DISTRO'}     = argval();
-    $distrodir                            = argval();
-    $keyrings = $ENV{'DGIT_DRS_KEYRINGS'} = argval();
+    $distro    = argval();
+    $distrodir = argval();
+    $keyrings  = argval();
 
     foreach my $dk (keys %indistrodir) {
        ${ $indistrodir{$dk} } = "$distrodir/$dk";