diff mbox series

[1/2] support/scripts/graph-depends cleanup done_deps global

Message ID 20230123203214.3745265-1-me@stevenhay.com
State New
Headers show
Series [1/2] support/scripts/graph-depends cleanup done_deps global | expand

Commit Message

ʎɐH ǝʌǝʇS Jan. 23, 2023, 8:32 p.m. UTC
This commit is cleanup to remove the global done_deps to allow multiple function calls to the DFS search.

Signed-off-by: Steve Hay <me@stevenhay.com>

---
Changes v1 -> v2:
  - Revised author to be full name. (Suggested by Yann)
  - Added a more detailed description of the patch. (Suggested by Yann)
  - Resolution of Yann's comment is that specificying [] (mutable) as default will create a static
    list associated with the function instead of creating a new empty list at each function
    invocation. The existing implementation of specifying None (immutable) and handling default
    case (None) in the function body is idiomatically correct for Python.
---
 support/scripts/graph-depends | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/support/scripts/graph-depends b/support/scripts/graph-depends
index a66fb28f41..3e3373950f 100755
--- a/support/scripts/graph-depends
+++ b/support/scripts/graph-depends
@@ -197,12 +197,11 @@  def print_attrs(outfile, pkg, pkg_type, pkg_version, depth, colors):
     outfile.write("%s [color=%s,style=filled]\n" % (name, color))
 
 
-done_deps = []
-
-
 # Print the dependency graph of a package
 def print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list,
-                   arrow_dir, draw_graph, depth, max_depth, pkg, colors):
+                   arrow_dir, draw_graph, depth, max_depth, pkg, colors, done_deps=None):
+    if done_deps is None:
+        done_deps = []
     if pkg in done_deps:
         return
     done_deps.append(pkg)
@@ -234,7 +233,7 @@  def print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exc
                 if draw_graph:
                     outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir))
                 print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list,
-                               arrow_dir, draw_graph, depth + 1, max_depth, d, colors)
+                               arrow_dir, draw_graph, depth + 1, max_depth, d, colors, done_deps)
 
 
 def parse_args():