From e82992ae32fcbc3310b4a24e1e2905b46c4babeb Mon Sep 17 00:00:00 2001
From: Todd Gamblin <tgamblin@llnl.gov>
Date: Mon, 31 Dec 2018 22:02:56 -0800
Subject: [PATCH] license: license command prints sorted, non-redundant results

- spack license command now ignores symlinks

- spack license list-files now prints sorted output, and checks for files
  we've already seen.
---
 lib/spack/spack/cmd/license.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/lib/spack/spack/cmd/license.py b/lib/spack/spack/cmd/license.py
index df208d8bbe..e3349c505d 100644
--- a/lib/spack/spack/cmd/license.py
+++ b/lib/spack/spack/cmd/license.py
@@ -67,10 +67,14 @@
 
 def _all_spack_files(root=spack.paths.prefix):
     """Generates root-relative paths of all files in the spack repository."""
+    visited = set()
     for cur_root, folders, files in os.walk(root):
         for filename in files:
-            path = os.path.join(cur_root, filename)
-            yield os.path.relpath(path, root)
+            path = os.path.realpath(os.path.join(cur_root, filename))
+
+            if path not in visited:
+                yield os.path.relpath(path, root)
+                visited.add(path)
 
 
 def _licensed_files(root=spack.paths.prefix):
@@ -81,7 +85,7 @@ def _licensed_files(root=spack.paths.prefix):
 
 def list_files(args):
     """list files in spack that should have license headers"""
-    for relpath in _licensed_files():
+    for relpath in sorted(_licensed_files()):
         print(os.path.join(spack.paths.spack_root, relpath))
 
 
-- 
GitLab