X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/af8dfb4559236e6ebf7489b37a83d7cc440404ac..07884eae943fa3c097c7e5b0d5886357e1239b5f:/scripts/buildorder.py diff --git a/scripts/buildorder.py b/scripts/buildorder.py index 7bebd414..fd7b2a64 100755 --- a/scripts/buildorder.py +++ b/scripts/buildorder.py @@ -40,7 +40,7 @@ class TermuxBuildFile(object): pkg_dep_prefix = 'TERMUX_PKG_DEPENDS=' subpkg_dep_prefix = 'TERMUX_SUBPKG_DEPENDS=' - with open(self.path) as f: + with open(self.path, encoding="utf-8") as f: prefix = None for line in f: if line.startswith(pkg_dep_prefix): @@ -50,12 +50,11 @@ class TermuxBuildFile(object): else: continue - comma_deps = line[len(prefix):].replace('"', '') + comma_deps = line[len(prefix):].replace('"', '').replace("'", '') return set([ # 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' not in dep + re.sub(r'\(.*?\)', '', dep).replace('-dev', '').strip() for dep in comma_deps.split(',') ]) # no deps found @@ -76,6 +75,9 @@ class TermuxPackage(object): 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 = [] @@ -165,9 +167,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() @@ -217,6 +218,8 @@ def generate_targets_buildorder(targetnames): buildorder = [] for pkgname in targetnames: + if not pkgname in pkgs_map: + die('Dependencies for ' + pkgname + ' could not be calculated (skip dependency check with -s)') buildorder += deps_then_me(pkgs_map[pkgname]) return unique_everseen(buildorder)