module: libtests_required and dummy_required helpers
authorDmitry Selyutin <ghostmansd@gmail.com>
Tue, 26 Sep 2017 19:40:34 +0000 (22:40 +0300)
committerDmitry Selyutin <ghostmansd@gmail.com>
Tue, 26 Sep 2017 19:40:34 +0000 (22:40 +0300)
pygnulib/module.py

index 1159ba30f49d395ec1a3b788a4a4944dc51fe3b4..dcb58fc3585968e3cb89018aaa623c289fff4af5 100644 (file)
@@ -507,3 +507,28 @@ def transitive_closure(lookup, modules, options):
     tests_main = set(module for module in main if module.applicability != "all")
     tests = (tests_final ^ tests_main)
     return (base, full, main, final, tests)
+
+
+
+def libtests_required(modules):
+    """Determine whether libtests.a is required."""
+    for module in modules:
+        for file in module.files:
+            if file.startswith("lib/"):
+                return True
+    return False
+
+
+
+_DUMMY_REQUIRED_PATTERN_ = _re_.compile(r"^lib_SOURCES\s*\+\=\s*(.*?)$", _re_.S | _re_.M)
+def dummy_required(modules):
+    """Determine whether dummy module is required."""
+    for module in modules:
+        snippet = module.automake_snippet
+        match = _DUMMY_REQUIRED_PATTERN_.findall(snippet)
+        for files in match:
+            files = (files.split("#", 1)[0].split(" "))
+            files = (file.strip() for file in files if file.strip())
+            if {file for file in files if not file.endswith(".h")}:
+                return True
+    return False