buildorder.py: only omit target's subpackage for fast build

This commit is contained in:
Tom Yan 2019-03-21 00:54:44 +08:00 committed by Leonid Pliushch
parent befdca1749
commit ca475bf2be

View File

@ -54,7 +54,7 @@ def parse_build_file_dependencies(path):
class TermuxPackage(object):
"A main package definition represented by a directory with a build.sh file."
def __init__(self, dir_path):
def __init__(self, dir_path, fast_build_mode):
self.dir = dir_path
self.name = os.path.basename(self.dir)
@ -83,6 +83,7 @@ class TermuxPackage(object):
# Do not depend on itself
self.deps.discard(self.name)
# Do not depend on any sub package
if not fast_build_mode:
self.deps.difference_update([subpkg.name for subpkg in self.subpkgs])
self.needed_by = set() # Populated outside constructor, reverse of deps.
@ -120,6 +121,8 @@ class TermuxSubPackage:
Only relevant when building in fast-build mode"""
result = []
for dependency_name in sorted(self.deps):
if dependency_name == self.parent.name:
self.parent.deps.discard(self.name)
dependency_package = pkgs_map[dependency_name]
result += dependency_package.recursive_dependencies(pkgs_map)
result += [dependency_package]
@ -135,7 +138,7 @@ def read_packages_from_directories(directories, fast_build_mode):
for pkgdir_name in sorted(os.listdir(package_dir)):
dir_path = package_dir + '/' + pkgdir_name
if os.path.isfile(dir_path + '/build.sh'):
new_package = TermuxPackage(package_dir + '/' + pkgdir_name)
new_package = TermuxPackage(package_dir + '/' + pkgdir_name, fast_build_mode)
if new_package.name in pkgs_map:
die('Duplicated package: ' + new_package.name)
@ -221,6 +224,9 @@ def generate_target_buildorder(target_path, pkgs_map, fast_build_mode):
package_name = os.path.basename(target_path)
package = pkgs_map[package_name]
# Do not depend on any sub package
if fast_build_mode:
package.deps.difference_update([subpkg.name for subpkg in package.subpkgs])
return package.recursive_dependencies(pkgs_map)
def main():