mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
distro/package: refactor class PackageInfo into class BinaryPackage(PackageInfo)
This commit is contained in:
parent
daa7b68738
commit
dbe3dc91a3
4 changed files with 14 additions and 11 deletions
|
@ -4,7 +4,7 @@ from constants import Arch, ARCHES, BASE_DISTROS, REPOSITORIES, KUPFER_HTTPS, CH
|
|||
from generator import generate_pacman_conf_body
|
||||
from config import config
|
||||
|
||||
from .package import PackageInfo
|
||||
from .package import BinaryPackage
|
||||
from .repo import RepoInfo, Repo
|
||||
|
||||
|
||||
|
@ -25,9 +25,9 @@ class Distro:
|
|||
scan=scan,
|
||||
)
|
||||
|
||||
def get_packages(self) -> dict[str, PackageInfo]:
|
||||
def get_packages(self) -> dict[str, BinaryPackage]:
|
||||
""" get packages from all repos, semantically overlaying them"""
|
||||
results = dict[str, PackageInfo]()
|
||||
results = dict[str, BinaryPackage]()
|
||||
for repo in list(self.repos.values())[::-1]:
|
||||
assert repo.packages is not None
|
||||
results.update(repo.packages)
|
||||
|
|
|
@ -4,6 +4,9 @@ from typing import Optional
|
|||
class PackageInfo:
|
||||
name: str
|
||||
version: str
|
||||
|
||||
|
||||
class BinaryPackage(PackageInfo):
|
||||
filename: str
|
||||
resolved_url: Optional[str]
|
||||
|
||||
|
@ -22,12 +25,12 @@ class PackageInfo:
|
|||
def __repr__(self):
|
||||
return f'{self.name}@{self.version}'
|
||||
|
||||
@staticmethod
|
||||
def parse_desc(desc_str: str, resolved_repo_url=None):
|
||||
@classmethod
|
||||
def parse_desc(clss, desc_str: str, resolved_repo_url=None):
|
||||
"""Parses a desc file, returning a PackageInfo"""
|
||||
|
||||
pruned_lines = ([line.strip() for line in desc_str.split('%') if line.strip()])
|
||||
desc = {}
|
||||
for key, value in zip(pruned_lines[0::2], pruned_lines[1::2]):
|
||||
desc[key.strip()] = value.strip()
|
||||
return PackageInfo(desc['NAME'], desc['VERSION'], desc['FILENAME'], resolved_url='/'.join([resolved_repo_url, desc['FILENAME']]))
|
||||
return clss(desc['NAME'], desc['VERSION'], desc['FILENAME'], resolved_url='/'.join([resolved_repo_url, desc['FILENAME']]))
|
||||
|
|
|
@ -5,7 +5,7 @@ import tarfile
|
|||
import tempfile
|
||||
import urllib.request
|
||||
|
||||
from .package import PackageInfo
|
||||
from .package import BinaryPackage
|
||||
|
||||
|
||||
def resolve_url(url_template, repo_name: str, arch: str):
|
||||
|
@ -28,7 +28,7 @@ class Repo(RepoInfo):
|
|||
name: str
|
||||
resolved_url: str
|
||||
arch: str
|
||||
packages: dict[str, PackageInfo]
|
||||
packages: dict[str, BinaryPackage]
|
||||
remote: bool
|
||||
scanned: bool = False
|
||||
|
||||
|
@ -53,7 +53,7 @@ class Repo(RepoInfo):
|
|||
for node in index.getmembers():
|
||||
if os.path.basename(node.name) == 'desc':
|
||||
logging.debug(f'Parsing desc file for {os.path.dirname(node.name)}')
|
||||
pkg = PackageInfo.parse_desc(index.extractfile(node).read().decode(), self.resolved_url)
|
||||
pkg = BinaryPackage.parse_desc(index.extractfile(node).read().decode(), self.resolved_url)
|
||||
self.packages[pkg.name] = pkg
|
||||
|
||||
self.scanned = True
|
||||
|
|
|
@ -16,7 +16,7 @@ from config import config
|
|||
from exec.cmd import run_cmd, run_root_cmd
|
||||
from exec.file import makedir, remove_file
|
||||
from chroot.build import get_build_chroot, BuildChroot
|
||||
from distro.distro import PackageInfo, get_kupfer_https, get_kupfer_local
|
||||
from distro.distro import BinaryPackage, get_kupfer_https, get_kupfer_local
|
||||
from wrapper import check_programs_wrap, wrap_if_foreign_arch
|
||||
|
||||
from .pkgbuild import discover_pkgbuilds, filter_pkgbuilds, Pkgbuild
|
||||
|
@ -275,7 +275,7 @@ def try_download_package(dest_file_path: str, package: Pkgbuild, arch: Arch) ->
|
|||
if pkgname not in repo.packages:
|
||||
logging.warning(f"Package {pkgname} not found in remote repos, building instead.")
|
||||
return False
|
||||
repo_pkg: PackageInfo = repo.packages[pkgname]
|
||||
repo_pkg: BinaryPackage = repo.packages[pkgname]
|
||||
if repo_pkg.version != package.version:
|
||||
logging.debug(f"Package {pkgname} versions differ: local: {package.version}, remote: {repo_pkg.version}. Building instead.")
|
||||
return False
|
||||
|
|
Loading…
Add table
Reference in a new issue