binman: Use pkg_resources to find resources
authorSimon Glass <sjg@chromium.org>
Sat, 29 Aug 2020 17:36:14 +0000 (11:36 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 22 Sep 2020 18:50:43 +0000 (12:50 -0600)
At present we look for resources based on the path of the Python module
that wants them. Instead we should use Python's pkg_resources feature
which is designed for this purpose.

Update binman to use this.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/control.py

index 60e89d3776b25f236134e0d9ecb9273268513cd2..3b52326641707b70e430108908303f005d052433 100644 (file)
@@ -8,6 +8,8 @@
 from collections import OrderedDict
 import glob
 import os
+import pkg_resources
+
 import sys
 from patman import tools
 
@@ -58,8 +60,8 @@ def GetEntryModules(include_testing=True):
     Returns:
         Set of paths to entry class filenames
     """
-    our_path = os.path.dirname(os.path.realpath(__file__))
-    glob_list = glob.glob(os.path.join(our_path, 'etype/*.py'))
+    glob_list = pkg_resources.resource_listdir(__name__, 'etype')
+    glob_list = [fname for fname in glob_list if fname.endswith('.py')]
     return set([os.path.splitext(os.path.basename(item))[0]
                 for item in glob_list
                 if include_testing or '_testing' not in item])