From: Ian Jackson Date: Sat, 21 Mar 2015 14:53:34 +0000 (+0000) Subject: WIP Debian policy X-Git-Tag: debian/0.30~249 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=fb568448c56dc58293d9b7a817f25ef1fa082efc WIP Debian policy Reorg taint tag a bit --- diff --git a/infra/dgit-repos-policy-debian b/infra/dgit-repos-policy-debian index 66bf8be6..0f9d70f5 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 $? $!";