pkgbuild: add Pkgbase class for split-package parents, fix type annotations

This commit is contained in:
InsanePrawn 2022-02-17 19:34:58 +01:00
parent b6b89344d4
commit 795be0bf2a

View file

@ -9,11 +9,10 @@ from .package import PackageInfo
class Pkgbuild(PackageInfo):
depends: list[str] = None
provides: list[str] = None
replaces: list[str] = None
local_depends: list[PackageInfo] = None
subpackages: list[PackageInfo] = None
depends: list[str]
provides: list[str]
replaces: list[str]
local_depends: list[str]
repo = ''
mode = ''
path = ''
@ -26,14 +25,12 @@ class Pkgbuild(PackageInfo):
depends: list[str] = [],
provides: list[str] = [],
replaces: list[str] = [],
subpackages: list[PackageInfo] = [],
) -> None:
self.version = None
self.version = ''
self.path = relative_path
self.depends = deepcopy(depends)
self.provides = deepcopy(provides)
self.replaces = deepcopy(replaces)
self.subpackages = deepcopy(subpackages)
def __repr__(self):
return f'Package({self.name},{repr(self.path)},{self.version},{self.mode})'
@ -42,6 +39,14 @@ class Pkgbuild(PackageInfo):
return list(set([self.name] + self.provides + self.replaces))
class Pkgbase(Pkgbuild):
subpackages: list[Pkgbuild]
def __init__(self, relative_path: str, subpackages: list[Pkgbuild] = [], **args):
self.subpackages = deepcopy(subpackages)
super().__init__(relative_path, **args)
def parse_pkgbuild(relative_pkg_dir: str, native_chroot: Chroot) -> list[Pkgbuild]:
mode = None
with open(os.path.join(native_chroot.get_path(CHROOT_PATHS['pkgbuilds']), relative_pkg_dir, 'PKGBUILD'), 'r') as file:
@ -53,7 +58,7 @@ def parse_pkgbuild(relative_pkg_dir: str, native_chroot: Chroot) -> list[Pkgbuil
raise Exception((f'{relative_pkg_dir}/PKGBUILD has {"no" if mode is None else "an invalid"} mode configured') +
(f': "{mode}"' if mode is not None else ''))
base_package = Pkgbuild(relative_pkg_dir)
base_package = Pkgbase(relative_pkg_dir)
base_package.mode = mode
base_package.repo = relative_pkg_dir.split('/')[0]
srcinfo = native_chroot.run_cmd(