buildorder.py: handle the case when more than one dependency type is set (#1555)
authorVladimir Oltean <olteanv@gmail.com>
Sat, 23 Sep 2017 00:55:06 +0000 (03:55 +0300)
committerFredrik Fornwall <fredrik@fornwall.net>
Sat, 23 Sep 2017 00:55:06 +0000 (02:55 +0200)
scripts/buildorder.py

index 1890a0d..10cdb31 100755 (executable)
@@ -31,6 +31,10 @@ def unique_everseen(iterable, key=None):
 def die(msg):
     sys.exit('ERROR: ' + msg)
 
+def rchop(thestring, ending):
+    if thestring.endswith(ending):
+        return thestring[:-len(ending)]
+    return thestring
 
 class TermuxBuildFile(object):
     def __init__(self, path):
@@ -40,6 +44,7 @@ class TermuxBuildFile(object):
         pkg_dep_prefix = 'TERMUX_PKG_DEPENDS='
         pkg_build_dep_prefix = 'TERMUX_PKG_BUILD_DEPENDS='
         subpkg_dep_prefix = 'TERMUX_SUBPKG_DEPENDS='
+        comma_deps = ''
 
         with open(self.path, encoding="utf-8") as f:
             prefix = None
@@ -53,15 +58,18 @@ class TermuxBuildFile(object):
                 else:
                     continue
 
-                comma_deps = line[len(prefix):].replace('"', '').replace("'", '')
+                comma_deps += line[len(prefix):].replace('"', '').replace("'", '').replace("\n", ",")
 
-                return set([
-                    # Replace parenthesis to handle version qualifiers, as in "gcc (>= 5.0)":
-                    re.sub(r'\(.*?\)', '', dep).replace('-dev', '').strip() for dep in comma_deps.split(',')
-                ])
+        # Remove trailing ',' that is otherwise replacing the final newline
+        comma_deps = comma_deps[:-1]
+        if not comma_deps:
+            # no deps found
+            return set()
 
-        # no deps found
-        return set()
+        return set([
+            # Replace parenthesis to handle version qualifiers, as in "gcc (>= 5.0)":
+            rchop(re.sub(r'\(.*?\)', '', dep).strip(), '-dev') for dep in comma_deps.split(',')
+        ])
 
 
 class TermuxPackage(object):