X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/658bba67c018a0b51df08723cd4c3a57c2668d2e..f9f3e16d9557330da0b17d786badc6c94358459e:/scripts/buildorder.py diff --git a/scripts/buildorder.py b/scripts/buildorder.py index fa02f7a9..ac20e198 100755 --- a/scripts/buildorder.py +++ b/scripts/buildorder.py @@ -2,6 +2,7 @@ # buildorder.py - script to generate a build order respecting package dependencies import os +import re import sys from itertools import filterfalse @@ -52,8 +53,9 @@ class TermuxBuildFile(object): comma_deps = line[len(prefix):].replace('"', '') return set([ - dep.strip() for dep in comma_deps.split(',') - if 'libandroid-support' not in dep + # Replace parenthesis to handle version qualifiers, as in "gcc (>= 5.0)": + re.sub(r'\(.*?\)', '', dep).strip() for dep in comma_deps.split(',') + if 'libandroid-support-dev' not in dep ]) # no deps found @@ -70,10 +72,13 @@ class TermuxPackage(object): # search package build.sh build_sh_path = os.path.join(self.dir, 'build.sh') if not os.path.isfile(build_sh_path): - raise Exception("build.sh not found") + raise Exception("build.sh not found for package '" + name + "'") self.buildfile = TermuxBuildFile(build_sh_path) self.deps = self.buildfile._get_dependencies() + if 'libandroid-support' not in self.deps and self.name != 'libandroid-support': + # Every package may depend on libandroid-support without declaring it: + self.deps.add('libandroid-support') # search subpackages self.subpkgs = [] @@ -163,9 +168,8 @@ def generate_full_buildorder(): if not leaf_pkgs: die('No package without dependencies - where to start?') - # Sort alphabetically, but with libandroid-support first (since dependency on libandroid-support - # does not need to be declared explicitly, so anything might in theory depend on it to build): - pkg_queue = sorted(leaf_pkgs, key=lambda p: '' if p.name == 'libandroid-support' else p.name) + # Sort alphabetically: + pkg_queue = sorted(leaf_pkgs, key=lambda p: p.name) # Topological sorting visited = set()