blob: 68545928ca3892647c6dc2d6ad54d820ea58087b [file] [log] [blame]
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from _emerge.DepPriority import DepPriority
from _emerge.Package import Package
def _find_deep_system_runtime_deps(graph):
deep_system_deps = set()
node_stack = []
for node in graph:
if not isinstance(node, Package) or node.operation == "uninstall":
continue
if node.root_config.sets["system"].findAtomForPackage(node):
node_stack.append(node)
def ignore_priority(priority):
"""
Ignore non-runtime priorities.
"""
if isinstance(priority, DepPriority) and (
priority.runtime or priority.runtime_post
):
return False
return True
while node_stack:
node = node_stack.pop()
if node in deep_system_deps:
continue
deep_system_deps.add(node)
for child in graph.child_nodes(node, ignore_priority=ignore_priority):
if not isinstance(child, Package) or child.operation == "uninstall":
continue
node_stack.append(child)
return deep_system_deps