from itertools import filterfalse
-
def unique_everseen(iterable, key=None):
"""List unique elements, preserving order. Remember all elements ever seen.
See https://docs.python.org/3/library/itertools.html#itertools-recipes
seen_add(k)
yield element
-
def die(msg):
"Exit the process with an error message."
sys.exit('ERROR: ' + msg)
-
def parse_build_file_dependencies(path):
"Extract the dependencies of a build.sh or *.subpackage.sh file."
pkg_dep_prefix = 'TERMUX_PKG_DEPENDS='
return set(dependencies)
-
class TermuxPackage(object):
"A main package definition represented by a directory with a build.sh file."
def __init__(self, dir_path):
result += [dependency_package]
return unique_everseen(result)
-
class TermuxSubPackage:
"A sub-package represented by a ${PACKAGE_NAME}.subpackage.sh file."
def __init__(self, subpackage_file_path, parent):
def __repr__(self):
return "<{} '{}' parent='{}'>".format(self.__class__.__name__, self.name, self.parent)
-
def read_packages_from_directories(directories):
"""Construct a map from package name to TermuxPackage.
For subpackages this maps from the subpackage name to the parent package."""
dep_pkg.needed_by.add(pkg)
return pkgs_map
-
def generate_full_buildorder(pkgs_map):
"Generate a build order for building all packages."
build_order = []
return build_order
-
def generate_target_buildorder(target_path, pkgs_map):
"Generate a build order for building the dependencies of the specified package."
if target_path.endswith('/'):