From 22cbf6a96087c18eda32def38fd5461ad7a5d9ca Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Mon, 18 Jul 2016 13:44:37 +0200 Subject: [PATCH] [backend] clean up addrev_local's linkinfodb handling --- src/backend/BSRevision.pm | 10 ++++++++++ src/backend/bs_srcserver | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/BSRevision.pm b/src/backend/BSRevision.pm index e994ce3f5e7..24385f3da24 100644 --- a/src/backend/BSRevision.pm +++ b/src/backend/BSRevision.pm @@ -232,6 +232,7 @@ sub addrev_replace_common { my %rfilemd5; for my $todo (@todo) { my ($tmpfile, $file, $rfile) = @$todo; + die("addrev_local_replace must not replace _link files\n") if $suf eq 'rev' && $rfile eq '_link'; next unless defined($tmpfile); mkdir_p($uploaddir); unlink("$uploaddir/addrev_meta$$"); @@ -314,6 +315,7 @@ sub addrev_meta_replace { sub updatelinkinfodb { my ($projid, $packid, $rev, $files) = @_; + return if $packid eq '_project'; # no links allowed mkdir_p($sourcedb) unless -d $sourcedb; my $linkdb = BSDB::opendb($sourcedb, 'linkinfo'); my $linkinfo; @@ -367,6 +369,9 @@ sub addrev_local { # add missing data to complete the revision object $rev->{'project'} = $projid; $rev->{'package'} = $packid; + if (!$files && !$cgi->{'nolinkinfodb'}) { + eval { $files = BSSrcrep::lsrev($rev) }; + } # update linked package database updatelinkinfodb($projid, $packid, $rev, $files) if $files; # kill upload revision as we did a real commit @@ -376,6 +381,11 @@ sub addrev_local { return $rev; } +sub addrev_meta { + my ($cgi, $projid, $packid, $rev) = @_; + die("addrev_meta is not implemented (yet)\n"); +} + sub undelete_rev { my ($cgi, $projid, $packid, $revfilefrom, $revfileto) = @_; my @rev = BSFileDB::fdb_getall($revfilefrom, $srcrevlay); diff --git a/src/backend/bs_srcserver b/src/backend/bs_srcserver index e5382a08b87..52b67b1e350 100755 --- a/src/backend/bs_srcserver +++ b/src/backend/bs_srcserver @@ -800,7 +800,7 @@ sub expandproduct { next; } my $prev = {'srcmd5' => $srcmd5, 'time' => time(), 'user' => $user, 'comment' => 'autogenerated', 'version' => '1', 'vrev' => '1'}; - BSRevision::addrev_local({'vrev' => 1}, $projid, $pid, $prev); + BSRevision::addrev_local({'vrev' => 1, 'nolinkinfodb' => 1}, $projid, $pid, $prev); if (! -e "$projectsdir/$projid.pkg/$pid.xml") { my $pidpack = readxml("$pdir/_meta", $BSXML::pack, 1); if ($pidpack) {