1 |
commit: d715028a686513979e6fb2b270df5f825d30cb65 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun May 1 03:31:04 2016 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun May 1 03:32:07 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=d715028a |
7 |
|
8 |
repoman: handle removed packages in vcs_files_to_cps (bug 546010) |
9 |
|
10 |
X-Gentoo-Bug: 546010 |
11 |
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=546010 |
12 |
|
13 |
pym/repoman/actions.py | 1 + |
14 |
pym/repoman/modules/vcs/cvs/changes.py | 1 + |
15 |
pym/repoman/modules/vcs/vcs.py | 7 +++++-- |
16 |
pym/repoman/scanner.py | 1 + |
17 |
4 files changed, 8 insertions(+), 2 deletions(-) |
18 |
|
19 |
diff --git a/pym/repoman/actions.py b/pym/repoman/actions.py |
20 |
index 643e24c..4144b45 100644 |
21 |
--- a/pym/repoman/actions.py |
22 |
+++ b/pym/repoman/actions.py |
23 |
@@ -370,6 +370,7 @@ class Actions(object): |
24 |
committer_name = utilities.get_committer_name(env=self.repoman_settings) |
25 |
for x in sorted(vcs_files_to_cps( |
26 |
chain(myupdates, mymanifests, myremoved), |
27 |
+ self.repo_settings.repodir, |
28 |
self.scanner.repolevel, self.scanner.reposplit, self.scanner.categories)): |
29 |
catdir, pkgdir = x.split("/") |
30 |
checkdir = self.repo_settings.repodir + "/" + x |
31 |
|
32 |
diff --git a/pym/repoman/modules/vcs/cvs/changes.py b/pym/repoman/modules/vcs/cvs/changes.py |
33 |
index 3e2f97a..c3d880b 100644 |
34 |
--- a/pym/repoman/modules/vcs/cvs/changes.py |
35 |
+++ b/pym/repoman/modules/vcs/cvs/changes.py |
36 |
@@ -112,6 +112,7 @@ class Changes(ChangesBase): |
37 |
if updates or removed: |
38 |
for x in sorted(vcs_files_to_cps( |
39 |
chain(updates, removed, manifests), |
40 |
+ self.repo_settings.repodir, |
41 |
scanner.repolevel, scanner.reposplit, scanner.categories)): |
42 |
self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, x) |
43 |
digestgen(mysettings=self.repoman_settings, myportdb=self.repo_settings.portdb) |
44 |
|
45 |
diff --git a/pym/repoman/modules/vcs/vcs.py b/pym/repoman/modules/vcs/vcs.py |
46 |
index c8cb55d..e9d45d4 100644 |
47 |
--- a/pym/repoman/modules/vcs/vcs.py |
48 |
+++ b/pym/repoman/modules/vcs/vcs.py |
49 |
@@ -96,7 +96,7 @@ def FindVCS(cwd=None): |
50 |
return outvcs |
51 |
|
52 |
|
53 |
-def vcs_files_to_cps(vcs_file_iter, repolevel, reposplit, categories): |
54 |
+def vcs_files_to_cps(vcs_file_iter, repodir, repolevel, reposplit, categories): |
55 |
""" |
56 |
Iterate over the given modified file paths returned from the vcs, |
57 |
and return a frozenset containing category/pn strings for each |
58 |
@@ -127,7 +127,10 @@ def vcs_files_to_cps(vcs_file_iter, repolevel, reposplit, categories): |
59 |
if len(f_split) > 3 and f_split[1] in categories: |
60 |
modified_cps.append("/".join(f_split[1:3])) |
61 |
|
62 |
- return frozenset(modified_cps) |
63 |
+ # Exclude packages that have been removed, since calling |
64 |
+ # code assumes that the packages exist. |
65 |
+ return frozenset(x for x in frozenset(modified_cps) |
66 |
+ if os.path.exists(os.path.join(repodir, x))) |
67 |
|
68 |
|
69 |
def vcs_new_changed(relative_path, mychanged, mynew): |
70 |
|
71 |
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py |
72 |
index e383c8d..fd07209 100644 |
73 |
--- a/pym/repoman/scanner.py |
74 |
+++ b/pym/repoman/scanner.py |
75 |
@@ -177,6 +177,7 @@ class Scanner(object): |
76 |
if self.options.if_modified == "y": |
77 |
self.effective_scanlist = sorted(vcs_files_to_cps( |
78 |
chain(self.changed.changed, self.changed.new, self.changed.removed), |
79 |
+ self.repo_settings.repodir, |
80 |
self.repolevel, self.reposplit, self.categories)) |
81 |
|
82 |
# Create our kwargs dict here to initialize the plugins with |