mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
packages cmd_build(): make --rebuild-dependants add dependants to the dependency chain
This commit is contained in:
parent
cec145232e
commit
1019e8d30c
1 changed files with 20 additions and 2 deletions
|
@ -527,6 +527,21 @@ def build_package(
|
||||||
raise Exception(f'Failed to compile package {package.path}')
|
raise Exception(f'Failed to compile package {package.path}')
|
||||||
|
|
||||||
|
|
||||||
|
def get_dependants(
|
||||||
|
repo: dict[str, Pkgbuild],
|
||||||
|
packages: Iterable[Pkgbuild],
|
||||||
|
recursive: bool = True,
|
||||||
|
) -> set[Pkgbuild]:
|
||||||
|
names = set([pkg.name for pkg in packages])
|
||||||
|
to_add = set[Pkgbuild]()
|
||||||
|
for pkg in repo.values():
|
||||||
|
if set.intersection(names, set(pkg.depends)):
|
||||||
|
to_add.add(pkg)
|
||||||
|
if recursive and to_add:
|
||||||
|
to_add.update(get_dependants(repo, to_add))
|
||||||
|
return to_add
|
||||||
|
|
||||||
|
|
||||||
def get_unbuilt_package_levels(
|
def get_unbuilt_package_levels(
|
||||||
repo: dict[str, Pkgbuild],
|
repo: dict[str, Pkgbuild],
|
||||||
packages: Iterable[Pkgbuild],
|
packages: Iterable[Pkgbuild],
|
||||||
|
@ -534,6 +549,10 @@ def get_unbuilt_package_levels(
|
||||||
force: bool = False,
|
force: bool = False,
|
||||||
rebuild_dependants: bool = False,
|
rebuild_dependants: bool = False,
|
||||||
) -> list[set[Pkgbuild]]:
|
) -> list[set[Pkgbuild]]:
|
||||||
|
dependants = set()
|
||||||
|
if rebuild_dependants:
|
||||||
|
dependants = get_dependants(repo, packages)
|
||||||
|
packages = dependants.union(set(packages))
|
||||||
package_levels = generate_dependency_chain(repo, packages)
|
package_levels = generate_dependency_chain(repo, packages)
|
||||||
build_names = set[str]()
|
build_names = set[str]()
|
||||||
build_levels = list[set[Pkgbuild]]()
|
build_levels = list[set[Pkgbuild]]()
|
||||||
|
@ -541,8 +560,7 @@ def get_unbuilt_package_levels(
|
||||||
for level_packages in package_levels:
|
for level_packages in package_levels:
|
||||||
level = set[Pkgbuild]()
|
level = set[Pkgbuild]()
|
||||||
for package in level_packages:
|
for package in level_packages:
|
||||||
if (not check_package_version_built(package, arch) or (force and package in packages) or
|
if (not check_package_version_built(package, arch) or (force and package in packages) or (rebuild_dependants and package in dependants)):
|
||||||
(rebuild_dependants and set.intersection(set(package.depends), set(build_names)))):
|
|
||||||
level.add(package)
|
level.add(package)
|
||||||
build_names.update(package.names())
|
build_names.update(package.names())
|
||||||
if level:
|
if level:
|
||||||
|
|
Loading…
Add table
Reference in a new issue