summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2015-06-20 19:13:07 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2015-06-20 19:15:13 +0100
commit68ace2786dc26749014ea70a6ebb2b896b1f25d1 (patch)
tree27fc4aacc039fb037d72939ee0ae9acf58c6a036
parente170fb0964308d97bf19f341ea79dab08f11935e (diff)
Infra: Support not running out of working tree
-rwxr-xr-xinfra/dgit-repos-policy-debian4
-rwxr-xr-xinfra/dgit-repos-server3
-rwxr-xr-xinfra/dgit-ssh-dispatch5
-rw-r--r--tests/lib10
4 files changed, 11 insertions, 11 deletions
diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian
index a770c55..339081e 100755
--- a/infra/dgit-repos-policy-debian
+++ b/infra/dgit-repos-policy-debian
@@ -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";
diff --git a/infra/dgit-repos-server b/infra/dgit-repos-server
index b43d574..50cba57 100755
--- a/infra/dgit-repos-server
+++ b/infra/dgit-repos-server
@@ -163,7 +163,8 @@ $SIG{__WARN__} = sub { die $_[0]; };
# appropriate lock.
#
# If policy hook wants to run dgit (or something else in the dgit
-# package), it should use DGIT-LIVE-DIR/dgit (etc.)
+# package), it should use DGIT-LIVE-DIR/dgit (etc.), or if that is
+# ENOENT, use the installed version.
use POSIX;
diff --git a/infra/dgit-ssh-dispatch b/infra/dgit-ssh-dispatch
index f525055..6d4efbf 100755
--- a/infra/dgit-ssh-dispatch
+++ b/infra/dgit-ssh-dispatch
@@ -22,7 +22,7 @@ our $lre = $package_re;
our $qre = '["'."']?";
# $dispatchdir/distro=DISTRO should contain
-# dgit-live a clone of dgit
+# dgit-live a clone of dgit (only if not using installed vsns)
# diverts
# repos/ } by virtue of
# suites } dgit-repos-server's defaults relating to
@@ -134,6 +134,7 @@ sub dispatch () {
$ENV{'PERLLIB'} =~ s#^(?=.)#:#;
$ENV{'PERLLIB'} =~ s#^# $ENV{DGIT_TEST_INTREE} // $dgitlive #e;
my $s = "$dgitlive/infra/dgit-repos-server";
+ $s = "dgit-repos-server" if !stat_exists $s;
exec $s, $distro, $d, $authrune, qw(--ssh);
die "exec $s: $!";
} elsif ($cmd eq 'upload-pack') {
@@ -146,6 +147,8 @@ sub dispatch () {
m#^${qre}git-upload-pack ${qre}/dgit/($lre)/(?:repos/)?_dgit-repos-server\.git${qre}$#
) {
my $distro= $1;
+ # if running installed packages, source code should come
+ # some other way
serve_up("$dispatchdir/distro=$1/dgit-live/.git");
} elsif (m#^${qre}git-upload-pack\s#) {
die "unknown repo to serve ($_). use dgit, or for server source ".
diff --git a/tests/lib b/tests/lib
index 70ad0b1..22ae0ff 100644
--- a/tests/lib
+++ b/tests/lib
@@ -481,16 +481,10 @@ t-drs () {
drs_dispatch=$tmp/distro=test-dummy
mkdir $drs_dispatch
- if [ "x$DGIT_TEST_INTREE" = x ]; then
- cat >&2 <<END
-dgit-repos-server is designed to run out of a git working tree
-cannot be tested in installed package (as DEP-8-intends)
-test skipped
-END
- exit 0
+ if [ "x$DGIT_TEST_INTREE" != x ]; then
+ ln -sf "$DGIT_TEST_INTREE" $drs_dispatch/dgit-live
fi
- ln -sf $root $drs_dispatch/dgit-live
ln -sf $tmp/git $drs_dispatch/repos
ln -sf $tmp/suites $tmp/dm.txt $drs_dispatch/
mkdir -p $drs_dispatch/keyrings