diff --git a/support/scripts/graph-depends b/support/scripts/graph-depends index 29134c8237..7ed28440bb 100755 --- a/support/scripts/graph-depends +++ b/support/scripts/graph-depends @@ -216,13 +216,17 @@ def check_circular_deps(deps): # This functions trims down the dependency list of all packages. # It applies in sequence all the dependency-elimination methods. -def remove_extra_deps(deps, rootpkg, transitive): - for pkg in list(deps.keys()): - if not pkg == rootpkg: - for d in get_mandatory_deps(pkg, deps): - if d not in deps[rootpkg]: - deps[rootpkg].append(d) - deps[pkg] = remove_mandatory_deps(pkg, deps) +def remove_extra_deps(deps, rootpkg, transitive, arrow_dir): + # For the direct dependencies, find and eliminate mandatory + # deps, and add them to the root package. Don't do it for a + # reverse graph, because mandatory deps are only direct deps. + if arrow_dir == "forward": + for pkg in list(deps.keys()): + if not pkg == rootpkg: + for d in get_mandatory_deps(pkg, deps): + if d not in deps[rootpkg]: + deps[rootpkg].append(d) + deps[pkg] = remove_mandatory_deps(pkg, deps) for pkg in list(deps.keys()): if not transitive or pkg == rootpkg: deps[pkg] = remove_transitive_deps(pkg, deps) @@ -420,7 +424,7 @@ def main(): if check_only: sys.exit(0) - dict_deps = remove_extra_deps(dict_deps, rootpkg, args.transitive) + dict_deps = remove_extra_deps(dict_deps, rootpkg, args.transitive, arrow_dir) dict_version = brpkgutil.get_version([pkg for pkg in allpkgs if pkg != "all" and not pkg.startswith("root")])