utils/get-developers: make it callable from elsewhere than the toplevel directory
authorPeter Korsgaard <peter@korsgaard.com>
Sat, 20 Oct 2018 16:02:31 +0000 (18:02 +0200)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Sat, 20 Oct 2018 16:24:13 +0000 (17:24 +0100)
get-developers tries to open DEVELOPERS in the current directory, so it
breaks when calling it from elsewhere than the toplevel Buildroot directory.

Traceback (most recent call last):
  File "../utils/get-developers", line 107, in <module>
    __main__()
  File "../utils/get-developers", line 26, in __main__
    devs = getdeveloperlib.parse_developers(os.path.dirname()
  File "/home/peko/source/buildroot/utils/getdeveloperlib.py", line 161, in parse_developers
    with open(os.path.join(basepath, "DEVELOPERS"), "r") as f:
IOError: [Errno 2] No such file or directory: '/home/peko/source/buildroot/output-foo/DEVELOPERS'

Fix it by instead figuring out where the DEVELOPERS file is relative to the
location of get-developers (E.G. one level up).

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
[Arnout:
  - add realpath to support a symlinked get-developers script;
  - pass devs_dir argument to check_developers() to support -c in subdir;
  - convert basepath to absolute path to support -f option.
]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
utils/get-developers
utils/getdeveloperlib.py

index ce882e6699a72795b16309eba0d1a77c874a8b98..c8879388591d0137ab87866eeffcf6cdd37147b4 100755 (executable)
@@ -24,7 +24,9 @@ def parse_args():
 
 
 def __main__():
-    devs = getdeveloperlib.parse_developers()
+    # DEVELOPERS is one level up from here
+    devs_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')
+    devs = getdeveloperlib.parse_developers(devs_dir)
     if devs is None:
         sys.exit(1)
     args = parse_args()
@@ -50,7 +52,7 @@ def __main__():
 
     # Handle the check action
     if args.check:
-        files = getdeveloperlib.check_developers(devs)
+        files = getdeveloperlib.check_developers(devs, devs_dir)
         for f in files:
             print(f)
 
index 2c8d47758329440b006a485b4d67693c1211d5d2..84665520c62fbd16945f7abfe99e657400aa8d52 100644 (file)
@@ -158,6 +158,8 @@ def parse_developers(basepath=None):
     linen = 0
     if basepath is None:
         basepath = os.getcwd()
+    else:
+        basepath = os.path.abspath(basepath)
     with open(os.path.join(basepath, "DEVELOPERS"), "r") as f:
         files = []
         name = None