Lines 725-731
Link Here
|
725 |
return 0 |
725 |
return 0 |
726 |
return 1 |
726 |
return 1 |
727 |
|
727 |
|
728 |
def _add_dep(self, dep, allow_unsatisfied=False): |
728 |
def _add_dep(self, dep, allow_unsatisfied=False, inducing_use = ""): |
729 |
debug = "--debug" in self._frozen_config.myopts |
729 |
debug = "--debug" in self._frozen_config.myopts |
730 |
buildpkgonly = "--buildpkgonly" in self._frozen_config.myopts |
730 |
buildpkgonly = "--buildpkgonly" in self._frozen_config.myopts |
731 |
nodeps = "--nodeps" in self._frozen_config.myopts |
731 |
nodeps = "--nodeps" in self._frozen_config.myopts |
Lines 834-844
Link Here
|
834 |
self._dynamic_config._ignored_deps.append(dep) |
834 |
self._dynamic_config._ignored_deps.append(dep) |
835 |
return 1 |
835 |
return 1 |
836 |
|
836 |
|
837 |
if not self._add_pkg(dep_pkg, dep): |
837 |
if not self._add_pkg(dep_pkg, dep, inducing_use): |
838 |
return 0 |
838 |
return 0 |
839 |
return 1 |
839 |
return 1 |
840 |
|
840 |
|
841 |
def _add_pkg(self, pkg, dep): |
841 |
def _add_pkg(self, pkg, dep, inducing_use = ""): |
842 |
myparent = None |
842 |
myparent = None |
843 |
priority = None |
843 |
priority = None |
844 |
depth = 0 |
844 |
depth = 0 |
Lines 912-918
Link Here
|
912 |
for parent_atom in arg_atoms: |
912 |
for parent_atom in arg_atoms: |
913 |
parent, atom = parent_atom |
913 |
parent, atom = parent_atom |
914 |
self._dynamic_config.digraph.add(existing_node, parent, |
914 |
self._dynamic_config.digraph.add(existing_node, parent, |
915 |
priority=priority) |
915 |
priority=priority, metadata=inducing_use) |
916 |
self._add_parent_atom(existing_node, parent_atom) |
916 |
self._add_parent_atom(existing_node, parent_atom) |
917 |
# If a direct circular dependency is not an unsatisfied |
917 |
# If a direct circular dependency is not an unsatisfied |
918 |
# buildtime dependency then drop it here since otherwise |
918 |
# buildtime dependency then drop it here since otherwise |
Lines 921-927
Link Here
|
921 |
if existing_node != myparent or \ |
921 |
if existing_node != myparent or \ |
922 |
(priority.buildtime and not priority.satisfied): |
922 |
(priority.buildtime and not priority.satisfied): |
923 |
self._dynamic_config.digraph.addnode(existing_node, myparent, |
923 |
self._dynamic_config.digraph.addnode(existing_node, myparent, |
924 |
priority=priority) |
924 |
priority=priority, metadata=inducing_use) |
925 |
if dep.atom is not None and dep.parent is not None: |
925 |
if dep.atom is not None and dep.parent is not None: |
926 |
self._add_parent_atom(existing_node, |
926 |
self._add_parent_atom(existing_node, |
927 |
(dep.parent, dep.atom)) |
927 |
(dep.parent, dep.atom)) |
Lines 1028-1034
Link Here
|
1028 |
# Do this even when addme is False (--onlydeps) so that the |
1028 |
# Do this even when addme is False (--onlydeps) so that the |
1029 |
# parent/child relationship is always known in case |
1029 |
# parent/child relationship is always known in case |
1030 |
# self._show_slot_collision_notice() needs to be called later. |
1030 |
# self._show_slot_collision_notice() needs to be called later. |
1031 |
self._dynamic_config.digraph.add(pkg, myparent, priority=priority) |
1031 |
self._dynamic_config.digraph.add(pkg, myparent, priority=priority, metadata=inducing_use) |
1032 |
if dep.atom is not None and dep.parent is not None: |
1032 |
if dep.atom is not None and dep.parent is not None: |
1033 |
self._add_parent_atom(pkg, (dep.parent, dep.atom)) |
1033 |
self._add_parent_atom(pkg, (dep.parent, dep.atom)) |
1034 |
|
1034 |
|
Lines 1173-1183
Link Here
|
1173 |
noiselevel=-1, level=logging.DEBUG) |
1173 |
noiselevel=-1, level=logging.DEBUG) |
1174 |
|
1174 |
|
1175 |
try: |
1175 |
try: |
1176 |
|
1176 |
metadata_store = {} |
1177 |
dep_string = portage.dep.paren_normalize( |
1177 |
dep_string = portage.dep.paren_normalize( |
1178 |
portage.dep.use_reduce( |
1178 |
portage.dep.use_reduce( |
1179 |
portage.dep.paren_reduce(dep_string), |
1179 |
portage.dep.paren_reduce(dep_string), |
1180 |
uselist=pkg.use.enabled)) |
1180 |
uselist=pkg.use.enabled, metadata_store=metadata_store)) |
1181 |
|
1181 |
|
1182 |
dep_string = list(self._queue_disjunctive_deps( |
1182 |
dep_string = list(self._queue_disjunctive_deps( |
1183 |
pkg, dep_root, dep_priority, dep_string)) |
1183 |
pkg, dep_root, dep_priority, dep_string)) |
Lines 1196-1202
Link Here
|
1196 |
|
1196 |
|
1197 |
if not self._add_pkg_dep_string( |
1197 |
if not self._add_pkg_dep_string( |
1198 |
pkg, dep_root, dep_priority, dep_string, |
1198 |
pkg, dep_root, dep_priority, dep_string, |
1199 |
allow_unsatisfied, ignore_blockers=ignore_blockers): |
1199 |
allow_unsatisfied, ignore_blockers=ignore_blockers, metadata_store=metadata_store): |
1200 |
return 0 |
1200 |
return 0 |
1201 |
|
1201 |
|
1202 |
except portage.exception.AmbiguousPackageName as e: |
1202 |
except portage.exception.AmbiguousPackageName as e: |
Lines 1224-1230
Link Here
|
1224 |
return 1 |
1224 |
return 1 |
1225 |
|
1225 |
|
1226 |
def _add_pkg_dep_string(self, pkg, dep_root, dep_priority, dep_string, |
1226 |
def _add_pkg_dep_string(self, pkg, dep_root, dep_priority, dep_string, |
1227 |
allow_unsatisfied, ignore_blockers=False): |
1227 |
allow_unsatisfied, ignore_blockers=False, metadata_store=None): |
1228 |
depth = pkg.depth + 1 |
1228 |
depth = pkg.depth + 1 |
1229 |
debug = "--debug" in self._frozen_config.myopts |
1229 |
debug = "--debug" in self._frozen_config.myopts |
1230 |
strict = pkg.type_name != "installed" |
1230 |
strict = pkg.type_name != "installed" |
Lines 1268-1278
Link Here
|
1268 |
if not atom.blocker and vardb.match(atom): |
1268 |
if not atom.blocker and vardb.match(atom): |
1269 |
mypriority.satisfied = True |
1269 |
mypriority.satisfied = True |
1270 |
|
1270 |
|
1271 |
if not self._add_dep(Dependency(atom=atom, |
1271 |
if metadata_store is not None and atom in metadata_store: |
1272 |
blocker=atom.blocker, child=child, depth=depth, parent=pkg, |
1272 |
if not self._add_dep(Dependency(atom=atom, |
1273 |
priority=mypriority, root=dep_root), |
1273 |
blocker=atom.blocker, child=child, depth=depth, parent=pkg, |
1274 |
allow_unsatisfied=allow_unsatisfied): |
1274 |
priority=mypriority, root=dep_root), |
1275 |
return 0 |
1275 |
allow_unsatisfied=allow_unsatisfied, inducing_use=metadata_store[atom]): |
|
|
1276 |
return 0 |
1277 |
else: |
1278 |
if not self._add_dep(Dependency(atom=atom, |
1279 |
blocker=atom.blocker, child=child, depth=depth, parent=pkg, |
1280 |
priority=mypriority, root=dep_root), |
1281 |
allow_unsatisfied=allow_unsatisfied): |
1282 |
return 0 |
1276 |
|
1283 |
|
1277 |
selected_atoms.pop(pkg) |
1284 |
selected_atoms.pop(pkg) |
1278 |
|
1285 |
|