1 |
commit: debf30ee98b29894bd913b3ec691662143c0f30e |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri May 31 22:43:07 2013 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri May 31 22:43:07 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=debf30ee |
7 |
|
8 |
depgraph: buidpkgonly error earlier, bug #471910 |
9 |
|
10 |
--- |
11 |
pym/_emerge/actions.py | 27 +-------------------------- |
12 |
pym/_emerge/depgraph.py | 23 +++++++++++++++++++++++ |
13 |
2 files changed, 24 insertions(+), 26 deletions(-) |
14 |
|
15 |
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py |
16 |
index a46f565..7b2cf54 100644 |
17 |
--- a/pym/_emerge/actions.py |
18 |
+++ b/pym/_emerge/actions.py |
19 |
@@ -418,33 +418,8 @@ def action_build(settings, trees, mtimedb, |
20 |
mergelist_shown = True |
21 |
if retval != os.EX_OK: |
22 |
return retval |
23 |
- if "--buildpkgonly" in myopts: |
24 |
- graph_copy = mydepgraph._dynamic_config.digraph.copy() |
25 |
- removed_nodes = set() |
26 |
- for node in graph_copy: |
27 |
- if not isinstance(node, Package) or \ |
28 |
- node.operation == "nomerge": |
29 |
- removed_nodes.add(node) |
30 |
- graph_copy.difference_update(removed_nodes) |
31 |
- if not graph_copy.hasallzeros(ignore_priority = \ |
32 |
- DepPrioritySatisfiedRange.ignore_medium): |
33 |
- print("\n!!! --buildpkgonly requires all dependencies to be merged.") |
34 |
- print("!!! You have to merge the dependencies before you can build this package.\n") |
35 |
- return 1 |
36 |
+ |
37 |
else: |
38 |
- if "--buildpkgonly" in myopts: |
39 |
- graph_copy = mydepgraph._dynamic_config.digraph.copy() |
40 |
- removed_nodes = set() |
41 |
- for node in graph_copy: |
42 |
- if not isinstance(node, Package) or \ |
43 |
- node.operation == "nomerge": |
44 |
- removed_nodes.add(node) |
45 |
- graph_copy.difference_update(removed_nodes) |
46 |
- if not graph_copy.hasallzeros(ignore_priority = \ |
47 |
- DepPrioritySatisfiedRange.ignore_medium): |
48 |
- print("\n!!! --buildpkgonly requires all dependencies to be merged.") |
49 |
- print("!!! Cannot merge requested packages. Merge deps and try again.\n") |
50 |
- return 1 |
51 |
|
52 |
if not mergelist_shown: |
53 |
# If we haven't already shown the merge list above, at |
54 |
|
55 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
56 |
index 99b96bf..7929a78 100644 |
57 |
--- a/pym/_emerge/depgraph.py |
58 |
+++ b/pym/_emerge/depgraph.py |
59 |
@@ -424,6 +424,7 @@ class _dynamic_depgraph_config(object): |
60 |
self._skip_restart = False |
61 |
self._backtrack_infos = {} |
62 |
|
63 |
+ self._buildpkgonly_deps_unsatisfied = False |
64 |
self._autounmask = depgraph._frozen_config.myopts.get('--autounmask') != 'n' |
65 |
self._success_without_autounmask = False |
66 |
self._traverse_ignored_deps = False |
67 |
@@ -3175,6 +3176,21 @@ class depgraph(object): |
68 |
# want_restart_for_use_change triggers this |
69 |
return False, myfavorites |
70 |
|
71 |
+ if "--fetchonly" not in self._frozen_config.myopts and \ |
72 |
+ "--buildpkgonly" in self._frozen_config.myopts: |
73 |
+ graph_copy = self._dynamic_config.digraph.copy() |
74 |
+ removed_nodes = set() |
75 |
+ for node in graph_copy: |
76 |
+ if not isinstance(node, Package) or \ |
77 |
+ node.operation == "nomerge": |
78 |
+ removed_nodes.add(node) |
79 |
+ graph_copy.difference_update(removed_nodes) |
80 |
+ if not graph_copy.hasallzeros(ignore_priority = \ |
81 |
+ DepPrioritySatisfiedRange.ignore_medium): |
82 |
+ self._dynamic_config._buildpkgonly_deps_unsatisfied = True |
83 |
+ self._dynamic_config._skip_restart = True |
84 |
+ return False, myfavorites |
85 |
+ |
86 |
# Any failures except those due to autounmask *alone* should return |
87 |
# before this point, since the success_without_autounmask flag that's |
88 |
# set below is reserved for cases where there are *zero* other |
89 |
@@ -7239,6 +7255,13 @@ class depgraph(object): |
90 |
self._show_unsatisfied_dep(*pargs, |
91 |
**portage._native_kwargs(kwargs)) |
92 |
|
93 |
+ if self._dynamic_config._buildpkgonly_deps_unsatisfied: |
94 |
+ self._show_merge_list() |
95 |
+ writemsg("\n!!! --buildpkgonly requires all " |
96 |
+ "dependencies to be merged.\n", noiselevel=-1) |
97 |
+ writemsg("!!! Cannot merge requested packages. " |
98 |
+ "Merge deps and try again.\n\n", noiselevel=-1) |
99 |
+ |
100 |
def saveNomergeFavorites(self): |
101 |
"""Find atoms in favorites that are not in the mergelist and add them |
102 |
to the world file if necessary.""" |