aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2016-04-30 20:31:04 -0700
committerZac Medico <zmedico@gentoo.org>2016-04-30 20:32:07 -0700
commitd715028a686513979e6fb2b270df5f825d30cb65 (patch)
tree19288899880dd7173be06c789fc307e726b33a49
parentrepoman/modules/.../live.py: Fix space error in qa message (diff)
downloadportage-d715028a686513979e6fb2b270df5f825d30cb65.tar.gz
portage-d715028a686513979e6fb2b270df5f825d30cb65.tar.bz2
portage-d715028a686513979e6fb2b270df5f825d30cb65.zip
repoman: handle removed packages in vcs_files_to_cps (bug 546010)
X-Gentoo-Bug: 546010 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=546010
-rw-r--r--pym/repoman/actions.py1
-rw-r--r--pym/repoman/modules/vcs/cvs/changes.py1
-rw-r--r--pym/repoman/modules/vcs/vcs.py7
-rw-r--r--pym/repoman/scanner.py1
4 files changed, 8 insertions, 2 deletions
diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py
index 643e24cb2..4144b4570 100644
--- a/pym/repoman/actions.py
+++ b/pym/repoman/actions.py
@@ -370,6 +370,7 @@ class Actions(object):
committer_name = utilities.get_committer_name(env=self.repoman_settings)
for x in sorted(vcs_files_to_cps(
chain(myupdates, mymanifests, myremoved),
+ self.repo_settings.repodir,
self.scanner.repolevel, self.scanner.reposplit, self.scanner.categories)):
catdir, pkgdir = x.split("/")
checkdir = self.repo_settings.repodir + "/" + x
diff --git a/pym/repoman/modules/vcs/cvs/changes.py b/pym/repoman/modules/vcs/cvs/changes.py
index 3e2f97a84..c3d880bdb 100644
--- a/pym/repoman/modules/vcs/cvs/changes.py
+++ b/pym/repoman/modules/vcs/cvs/changes.py
@@ -112,6 +112,7 @@ class Changes(ChangesBase):
if updates or removed:
for x in sorted(vcs_files_to_cps(
chain(updates, removed, manifests),
+ self.repo_settings.repodir,
scanner.repolevel, scanner.reposplit, scanner.categories)):
self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x)
digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb)
diff --git a/pym/repoman/modules/vcs/vcs.py b/pym/repoman/modules/vcs/vcs.py
index c8cb55de1..e9d45d4c8 100644
--- a/pym/repoman/modules/vcs/vcs.py
+++ b/pym/repoman/modules/vcs/vcs.py
@@ -96,7 +96,7 @@ def FindVCS(cwd=None):
return outvcs
-def vcs_files_to_cps(vcs_file_iter, repolevel, reposplit, categories):
+def vcs_files_to_cps(vcs_file_iter, repodir, repolevel, reposplit, categories):
"""
Iterate over the given modified file paths returned from the vcs,
and return a frozenset containing category/pn strings for each
@@ -127,7 +127,10 @@ def vcs_files_to_cps(vcs_file_iter, repolevel, reposplit, categories):
if len(f_split) > 3 and f_split[1] in categories:
modified_cps.append("/".join(f_split[1:3]))
- return frozenset(modified_cps)
+ # Exclude packages that have been removed, since calling
+ # code assumes that the packages exist.
+ return frozenset(x for x in frozenset(modified_cps)
+ if os.path.exists(os.path.join(repodir, x)))
def vcs_new_changed(relative_path, mychanged, mynew):
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index e383c8d03..fd0720948 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -177,6 +177,7 @@ class Scanner(object):
if self.options.if_modified == "y":
self.effective_scanlist = sorted(vcs_files_to_cps(
chain(self.changed.changed, self.changed.new, self.changed.removed),
+ self.repo_settings.repodir,
self.repolevel, self.reposplit, self.categories))
# Create our kwargs dict here to initialize the plugins with