distro/package: BinaryPackage.acquire(): return (path: str, changed: bool)

This commit is contained in:
InsanePrawn 2023-04-17 07:17:12 +02:00
parent d527769473
commit 0c56038ed6
3 changed files with 11 additions and 9 deletions

View file

@ -80,7 +80,7 @@ class Device(DictScheme):
if self.package.name not in pkgs:
raise Exception(f"device package {self.package.name} somehow not in repos, this is a kupferbootstrap bug")
pkg = pkgs[self.package.name]
file_path = pkg.acquire()
file_path, _ = pkg.acquire()
assert file_path
assert os.path.exists(file_path)
deviceinfo_path = 'etc/kupfer/deviceinfo'

View file

@ -61,26 +61,28 @@ class BinaryPackage(PackageInfo):
p._desc = desc
return p
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> str:
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> tuple[str, bool]:
raise NotImplementedError()
class LocalPackage(BinaryPackage):
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> str:
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> tuple[str, bool]:
changed = False
assert self.resolved_url and self.filename and self.filename in self.resolved_url
path = f'{self.resolved_url.split("file://")[1]}'
if dest_dir:
target = os.path.join(dest_dir, filename or self.filename)
if os.path.getsize(path) != os.path.getsize(target) or sha256sum(path) != sha256sum(target):
copy_file(path, target, follow_symlinks=True)
return target
return path
changed = True
path = target
return path, changed
class RemotePackage(BinaryPackage):
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> str:
def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> tuple[str, bool]:
assert self.resolved_url and '.pkg.tar.' in self.resolved_url
url = f"{self.resolved_url}"
assert url
@ -90,6 +92,6 @@ class RemotePackage(BinaryPackage):
dest_file_path = os.path.join(dest_dir, filename or self.filename)
logging.info(f"Trying to download package {url}")
download_file(dest_file_path, url)
changed = download_file(dest_file_path, url)
logging.info(f"{self.filename} downloaded from repos")
return dest_file_path
return dest_file_path, changed

View file

@ -316,7 +316,7 @@ def try_download_package(dest_file_path: str, package: Pkgbuild, arch: Arch) ->
url = repo_pkg.resolved_url
assert url
try:
path = repo_pkg.acquire()
path, _ = repo_pkg.acquire()
assert os.path.exists(path)
return path
except HTTPError as e: