chiark / gitweb /
lint: Add check for missing and unused extlibs
authorDaniel Martí <mvdan@mvdan.cc>
Thu, 5 May 2016 12:35:17 +0000 (13:35 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Thu, 5 May 2016 12:42:07 +0000 (13:42 +0100)
fdroidserver/lint.py

index daa1f1a59a48d4cb4414ffe01baae5ea2dc091e4..426f7cd0bf57825a9f55e479823d52cc0d80f866 100644 (file)
@@ -339,6 +339,34 @@ def check_format(app):
         yield "Run rewritemeta to fix formatting"
 
 
+def check_extlib_dir(apps):
+    dir_path = os.path.join('build', 'extlib')
+    files = set()
+    for root, dirs, names in os.walk(dir_path):
+        for name in names:
+            files.add(os.path.join(root, name)[len(dir_path) + 1:])
+
+    used = set()
+    for app in apps:
+        for build in app.builds:
+            for path in build.extlibs:
+                if path not in files:
+                    yield "%s: Unknown extlib %s in build '%s'" % (app.id, path, build.version)
+                else:
+                    used.add(path)
+
+    for path in files.difference(used):
+        if any(path.endswith(s) for s in [
+                '.gitignore',
+                'source.txt', 'origin.txt', 'md5.txt',
+                'LICENSE', 'LICENSE.txt',
+                'COPYING', 'COPYING.txt',
+                'NOTICE', 'NOTICE.txt',
+                ]):
+            continue
+        yield "Unused extlib at %s" % os.path.join(dir_path, path)
+
+
 def main():
 
     global config, options
@@ -359,6 +387,14 @@ def main():
 
     anywarns = False
 
+    apps_check_funcs = [
+        check_extlib_dir,
+    ]
+    for check_func in apps_check_funcs:
+        for warn in check_func(apps.values()):
+            anywarns = True
+            print(warn)
+
     for appid, app in apps.items():
         if app.Disabled:
             continue