commit: d715028a686513979e6fb2b270df5f825d30cb65 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Sun May 1 03:31:04 2016 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Sun May 1 03:32:07 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=d715028a
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 pym/repoman/actions.py | 1 + pym/repoman/modules/vcs/cvs/changes.py | 1 + pym/repoman/modules/vcs/vcs.py | 7 +++++-- pym/repoman/scanner.py | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py index 643e24c..4144b45 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 3e2f97a..c3d880b 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 c8cb55d..e9d45d4 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 e383c8d..fd07209 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