From fb568448c56dc58293d9b7a817f25ef1fa082efc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 21 Mar 2015 14:53:34 +0000 Subject: WIP Debian policy Reorg taint tag a bit --- infra/dgit-repos-policy-debian | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian index 66bf8be..0f9d70f 100755 --- a/infra/dgit-repos-policy-debian +++ b/infra/dgit-repos-policy-debian @@ -168,11 +168,11 @@ sub getpackage () { $pkg_secret = !!(~(stat _)[2] & 05); } -sub add_taint ($$) { - my ($gitobjid, $gitobjtype, $reason) = @_; +sub add_taint_by_tag ($$$) { + my ($tagname, $refobjid, $refobjtype) = @_; my $tf = new File::Temp or die $!; - print $tf "$gitobjid\n" or die $!; + print $tf "$refobjid^0\n" or die $!; my $gcfpid = open GCF, "-|"; defined $gcfpid or die $!; @@ -185,14 +185,22 @@ sub add_taint ($$) { close $tf or die $!; $_ = ; m/^(\w+) (\w+) (\d+)\n/ or die "$objline ?"; - $1 eq $gitobjid or die "$! $gitobjid ?"; - $2 eq $gitobjtype or die "$! $gitobjtype ?"; + my $gitobjid = $1; + my $gitobjtype = $2; my $bytes = $3; my $gitobjdata; - $!=0; read GCF, $gitobjdata, $bytes == $bytes or die "$gitobjid $bytes $!"; + if ($gitobjtype eq 'commit' or $gitobjtype eq 'tag') { + $!=0; read GCF, $gitobjdata, $bytes == $bytes + or die "$gitobjid $bytes $!"; + } close GCF; + my $reason = + "tag $tagname referred to this object in git tree but all". + " previously pushed versions were found to have been". + " removed from NEW (ie, rejected) (or never arrived)"; + $poldbh->do("INSERT INTO taints". " (package, gitobjid, gitobjtype, gitobjdata, time, comment)", " VALUES (?,?,?,?,?,?)", {}, @@ -223,10 +231,7 @@ sub action__check_package () { git_for_each_ref('refs/tags', sub { my ($objid,$objtype,$fullrefname,$tagname) = @_; - add_taint($objid,$objtype, - "tag $tagname referred to this object in git tree but all". - " previously pushed versions were found to have been". - " removed from NEW (ie, rejected) (or never arrived)"); + add_taint_by_tag($tagname,$objid,$objtype); }); $?=0; $!=0; close TAGL or die "git for-each-ref $? $!"; -- cgit v1.2.3