mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
packages/build: skip packages that were already built this run (e.g. split packages)
This commit is contained in:
parent
ebd541e039
commit
b2112026d2
2 changed files with 19 additions and 1 deletions
|
@ -18,7 +18,7 @@ from distro.distro import get_kupfer_https, get_kupfer_local
|
||||||
from distro.package import RemotePackage
|
from distro.package import RemotePackage
|
||||||
from wrapper import check_programs_wrap, is_wrapped
|
from wrapper import check_programs_wrap, is_wrapped
|
||||||
|
|
||||||
from .pkgbuild import discover_pkgbuilds, filter_pkgbuilds, Pkgbuild, SubPkgbuild
|
from .pkgbuild import discover_pkgbuilds, filter_pkgbuilds, Pkgbase, Pkgbuild, SubPkgbuild
|
||||||
|
|
||||||
pacman_cmd = [
|
pacman_cmd = [
|
||||||
'pacman',
|
'pacman',
|
||||||
|
@ -628,6 +628,11 @@ def build_packages(
|
||||||
for level, need_build in enumerate(build_levels):
|
for level, need_build in enumerate(build_levels):
|
||||||
logging.info(f"(Level {level}) Building {', '.join([x.name for x in need_build])}")
|
logging.info(f"(Level {level}) Building {', '.join([x.name for x in need_build])}")
|
||||||
for package in need_build:
|
for package in need_build:
|
||||||
|
base = package.pkgbase if isinstance(package, SubPkgbuild) else package
|
||||||
|
assert isinstance(base, Pkgbase)
|
||||||
|
if package.is_built():
|
||||||
|
logging.info(f"Skipping building {package.name} since it was already built this run as part of pkgbase {base.name}")
|
||||||
|
continue
|
||||||
build_package(
|
build_package(
|
||||||
package,
|
package,
|
||||||
arch=arch,
|
arch=arch,
|
||||||
|
@ -637,6 +642,7 @@ def build_packages(
|
||||||
clean_chroot=clean_chroot,
|
clean_chroot=clean_chroot,
|
||||||
)
|
)
|
||||||
files += add_package_to_repo(package, arch)
|
files += add_package_to_repo(package, arch)
|
||||||
|
base._is_built = True
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -184,11 +184,16 @@ class Pkgbuild(PackageInfo):
|
||||||
arch = 'any'
|
arch = 'any'
|
||||||
return f'{self.name}-{self.version}-{arch}.pkg.tar.zst'
|
return f'{self.name}-{self.version}-{arch}.pkg.tar.zst'
|
||||||
|
|
||||||
|
def is_built(self) -> bool:
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
class Pkgbase(Pkgbuild):
|
class Pkgbase(Pkgbuild):
|
||||||
subpackages: list[SubPkgbuild]
|
subpackages: list[SubPkgbuild]
|
||||||
|
_is_built: bool
|
||||||
|
|
||||||
def __init__(self, relative_path: str, subpackages: list[SubPkgbuild] = [], **args):
|
def __init__(self, relative_path: str, subpackages: list[SubPkgbuild] = [], **args):
|
||||||
|
self._is_built = False
|
||||||
self.subpackages = list(subpackages)
|
self.subpackages = list(subpackages)
|
||||||
super().__init__(relative_path, **args)
|
super().__init__(relative_path, **args)
|
||||||
|
|
||||||
|
@ -196,6 +201,7 @@ class Pkgbase(Pkgbuild):
|
||||||
if not isinstance(pkg, Pkgbase):
|
if not isinstance(pkg, Pkgbase):
|
||||||
raise Exception(f"Tried to update pkgbase {self.name} with non-base pkg {pkg}")
|
raise Exception(f"Tried to update pkgbase {self.name} with non-base pkg {pkg}")
|
||||||
Pkgbuild.update(self, pkg)
|
Pkgbuild.update(self, pkg)
|
||||||
|
self._is_built = pkg._is_built or self._is_built
|
||||||
sub_dict = {p.name: p for p in self.subpackages}
|
sub_dict = {p.name: p for p in self.subpackages}
|
||||||
self.subpackages.clear()
|
self.subpackages.clear()
|
||||||
for new_pkg in pkg.subpackages:
|
for new_pkg in pkg.subpackages:
|
||||||
|
@ -229,6 +235,9 @@ class Pkgbase(Pkgbuild):
|
||||||
names.update(pkg.names())
|
names.update(pkg.names())
|
||||||
return list(names)
|
return list(names)
|
||||||
|
|
||||||
|
def is_built(self) -> bool:
|
||||||
|
return self._is_built
|
||||||
|
|
||||||
|
|
||||||
class SubPkgbuild(Pkgbuild):
|
class SubPkgbuild(Pkgbuild):
|
||||||
pkgbase: Pkgbase
|
pkgbase: Pkgbase
|
||||||
|
@ -249,6 +258,9 @@ class SubPkgbuild(Pkgbuild):
|
||||||
assert self.pkgbase
|
assert self.pkgbase
|
||||||
self.pkgbase.refresh_sources(lazy=lazy)
|
self.pkgbase.refresh_sources(lazy=lazy)
|
||||||
|
|
||||||
|
def is_built(self) -> bool:
|
||||||
|
return self.pkgbase.is_built()
|
||||||
|
|
||||||
|
|
||||||
def parse_pkgbuild(
|
def parse_pkgbuild(
|
||||||
relative_pkg_dir: str,
|
relative_pkg_dir: str,
|
||||||
|
|
Loading…
Add table
Reference in a new issue