From 36e0e040510db972a92ee25a7eed67c2700407e1 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 Mar 2015 16:57:51 +0000 Subject: [PATCH] Bugfixes (now tests/tests/drs-clone-nogit works) --- Debian/Dgit.pm | 4 ++-- infra/dgit-repos-server | 44 ++++++++++++++++++++++------------------- tests/drs-git-ext | 4 +++- tests/lib | 1 + 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index e177a839..268439af 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -16,8 +16,8 @@ BEGIN { @EXPORT = qw(debiantag server_branch server_ref stat_exists git_for_each_ref $package_re $branchprefix); - %EXPORT_TAGS = ( policyflags => [qw()] ); - @EXPORT_OK = qw(); + %EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO)] ); + @EXPORT_OK = @{ $EXPORT_TAGS{policyflags} }; } our @EXPORT_OK; diff --git a/infra/dgit-repos-server b/infra/dgit-repos-server index acff1727..f391b087 100755 --- a/infra/dgit-repos-server +++ b/infra/dgit-repos-server @@ -148,6 +148,7 @@ open DEBUG, ">/dev/null" or die $!; our $func; our $dgitrepos; our $package; +our $distro; our $suitesfile; our $policyhook; our $realdestrepo; @@ -253,9 +254,9 @@ sub policyhook { my ($policyallowbits, @polargs) = @_; # => ($exitstatuspolicybitmap); die if $policyallowbits & ~0x3e; - my @cmd = ($policyhook,$distro,$repos,@polargs); - debugcmd @_; - my $r = system @_; + my @cmd = ($policyhook,$distro,$dgitrepos,@polargs); + debugcmd @cmd; + my $r = system @cmd; die "system: $!" if $r < 0; die "hook (@cmd) failed ($?)" if $r & ~($policyallowbits << 8); return $r >> 8; @@ -295,17 +296,6 @@ sub movetogarbage () { or die "$garbagerepo $!"; } -sub onwardpush () { - my @cmd = (qw(git send-pack), $destrepo); - push @cmd, qw(--force) if $policy & NOFFCHECK; - push @cmd, "$commit:refs/dgit/$suite", - "$tagval:refs/tags/$tagname"); - debugcmd @cmd; - $!=0; - my $r = system @cmd; - !$r or die "onward push to $destrepo failed: $r $!"; -} - #----- git-receive-pack ----- sub fixmissing__git_receive_pack () { @@ -463,12 +453,14 @@ sub parsetag () { $version = $2; die "$3 != $suite " unless $3 eq $suite; + my $copyl = $_; for (;;) { - print PT or die $!; + print PT $copyl or die $!; $!=0; $_=; defined or die "missing signature? $!"; + $copyl = $_; if (m/^\[dgit ([^"].*)\]$/) { # [dgit "something"] is for future $_ = $1." "; - for (;;) { + while (length) { if (s/^distro\=(\S+) //) { die "$1 != $distro" unless $1 eq $distro; } elsif (s/^(--deliberately-$package_re) //) { @@ -478,13 +470,14 @@ sub parsetag () { $supersedes{$1} = $2; } elsif (s/^[-+.=0-9a-z]\S* //) { } else { - die "unknown dgit info in tag"; + die "unknown dgit info in tag ($_)"; } } next; } last if m/^-----BEGIN PGP/; } + $_ = $copyl; for (;;) { print DS or die $!; $!=0; $_=; @@ -650,7 +643,7 @@ sub checktagnoreplay () { my @problems; - git_for_each_tag_referring($objreferring, sub { + git_for_each_tag_referring($onlyreferring, sub { my ($objid,$fullrefname,$tagname) = @_; debug "checktagnoreplay - overwriting $fullrefname=$objid"; my $supers = $supersedes{$fullrefname}; @@ -697,7 +690,7 @@ sub checks () { lockrealtree(); my @policy_args = ($package,$version,$suite,$tagname, - join(",",@delberatelies)); + join(",",@deliberatelies)); $policy = policyhook(NOFFCHECK|FRESHREPO, 'push', @policy_args); checktagnoreplay(); @@ -731,6 +724,17 @@ sub checks () { policyhook(0, 'push-confirm', @policy_args); } +sub onwardpush () { + my @cmd = (qw(git send-pack), $destrepo); + push @cmd, qw(--force) if $policy & NOFFCHECK; + push @cmd, "$commit:refs/dgit/$suite", + "$tagval:refs/tags/$tagname"; + debugcmd @cmd; + $!=0; + my $r = system @cmd; + !$r or die "onward push to $destrepo failed: $r $!"; +} + sub stunthook () { debug "stunthook"; chdir $workrepo or die "chdir $workrepo: $!"; @@ -805,7 +809,7 @@ sub parseargsdispatch () { exit 0; } - $ENV{'DGIT_DRS_DISTRO'} = argval(); + $ENV{'DGIT_DRS_DISTRO'} = $distro = argval(); $ENV{'DGIT_DRS_SUITES'} = argval(); $ENV{'DGIT_DRS_KEYRINGS'} = argval(); $dgitrepos = argval(); diff --git a/tests/drs-git-ext b/tests/drs-git-ext index 52e78177..73dcfa2e 100755 --- a/tests/drs-git-ext +++ b/tests/drs-git-ext @@ -2,12 +2,14 @@ set -e tmp=$DGIT_TEST_TMP +export DGIT_DRS_DEBUG=1 echo >&2 '((((((((((((((((((((((((((((((((((((((((' set -x export SSH_ORIGINAL_COMMAND="$*" -${DGIT_REPOS_SERVER_TEST-dgit-repos-server} \ +${DGIT_REPOS_SERVER_TEST-dgit-repos-server} test-dummy \ $tmp/suites \ $tmp/dd.gpg,a:$tmp/dm.gpg,m$tmp/dm.txt \ $tmp/git \ + $tmp/policy \ --ssh : '))))))))))))))))))))))))))))))))))))))))' diff --git a/tests/lib b/tests/lib index adbd79ff..6aab1522 100644 --- a/tests/lib +++ b/tests/lib @@ -261,6 +261,7 @@ t-drs () { t-git-config dgit-distro.test-dummy.git-create true cp $root/tests/gnupg/{dd.gpg,dm.gpg,dm.txt} $tmp/. cp $root/tests/suites $tmp/. + ln -s /bin/true $tmp/policy } t-dss () { -- 2.30.2