X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=infra%2Fdgit-ssh-dispatch;h=f29515f53e073c8b19e7345f950a278dad58e896;hp=ed1e6ef9924e4f421d353388d97b552fbcd0cff5;hb=a7300206ae2e77d77f722e616123ddfc6dc02298;hpb=772fdc0dc3733838b2efdf0c9af7252c2eafafd8 diff --git a/infra/dgit-ssh-dispatch b/infra/dgit-ssh-dispatch index ed1e6ef9..f29515f5 100755 --- a/infra/dgit-ssh-dispatch +++ b/infra/dgit-ssh-dispatch @@ -3,6 +3,8 @@ use strict; use POSIX; +use Debian::Dgit; + open DEBUG, '>/dev/null' or die $!; if (@ARGV && $ARGV[0] eq '-D') { shift @ARGV; @@ -16,22 +18,22 @@ $authrune //= join ':', '@/keyrings/debian-keyring.gpg,a', '@/keyrings/debian-maintainers.gpg,m@/dm.txt'; -our $lre = '[0-9a-z][-+.0-9a-z]*'; +our $lre = $package_re; our $qre = '["'."']?"; -# $dispatchdir should contain +# $dispatchdir/distro=DISTRO should contain # dgit-live a clone of dgit -# repos/ -# suites # diverts -# policy-hook +# repos/ } by virtue of +# suites } dgit-repos-server's defaults relating to +# policy-hook } dispatch-dir # plus files required by the authrune (by default, keyrings/ and dm.txt) # # diverts should be list of # [] # where is a package name pattern which may contain * or literals. -our ($distro,$pkg); +our ($distro,$pkg, $d); our ($dgitlive,$repos,$suites,$diverts,$policyhook,$repo); sub checkdivert ($) { @@ -71,7 +73,7 @@ sub selectpackage ($$;$) { my $divertfn; ($distro,$pkg, $divertfn) = @_; # $distro,$pkg must have sane syntax - my $d = "$dispatchdir/distro=$distro"; + $d = "$dispatchdir/distro=$distro"; if (!stat $d) { die $! unless $!==ENOENT; @@ -123,8 +125,7 @@ sub dispatch () { selectpackage $2,$3; if ($cmd eq 'receive-pack') { my $s = "$dgitlive/infra/dgit-repos-server"; - exec $s, $distro, $suites, $authrune, $repos, - $policyhook, qw(--ssh); + exec $s, $distro, $d, $authrune, qw(--ssh); die "exec $s: $!"; } elsif ($cmd eq 'upload-pack') { $repo='$repos/_empty' unless hasrepo;