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: if self.package.name not in pkgs:
raise Exception(f"device package {self.package.name} somehow not in repos, this is a kupferbootstrap bug") raise Exception(f"device package {self.package.name} somehow not in repos, this is a kupferbootstrap bug")
pkg = pkgs[self.package.name] pkg = pkgs[self.package.name]
file_path = pkg.acquire() file_path, _ = pkg.acquire()
assert file_path assert file_path
assert os.path.exists(file_path) assert os.path.exists(file_path)
deviceinfo_path = 'etc/kupfer/deviceinfo' deviceinfo_path = 'etc/kupfer/deviceinfo'

View file

@ -61,26 +61,28 @@ class BinaryPackage(PackageInfo):
p._desc = desc p._desc = desc
return p 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() raise NotImplementedError()
class LocalPackage(BinaryPackage): 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 assert self.resolved_url and self.filename and self.filename in self.resolved_url
path = f'{self.resolved_url.split("file://")[1]}' path = f'{self.resolved_url.split("file://")[1]}'
if dest_dir: if dest_dir:
target = os.path.join(dest_dir, filename or self.filename) target = os.path.join(dest_dir, filename or self.filename)
if os.path.getsize(path) != os.path.getsize(target) or sha256sum(path) != sha256sum(target): if os.path.getsize(path) != os.path.getsize(target) or sha256sum(path) != sha256sum(target):
copy_file(path, target, follow_symlinks=True) copy_file(path, target, follow_symlinks=True)
return target changed = True
return path path = target
return path, changed
class RemotePackage(BinaryPackage): 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 assert self.resolved_url and '.pkg.tar.' in self.resolved_url
url = f"{self.resolved_url}" url = f"{self.resolved_url}"
assert url assert url
@ -90,6 +92,6 @@ class RemotePackage(BinaryPackage):
dest_file_path = os.path.join(dest_dir, filename or self.filename) dest_file_path = os.path.join(dest_dir, filename or self.filename)
logging.info(f"Trying to download package {url}") 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") 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 url = repo_pkg.resolved_url
assert url assert url
try: try:
path = repo_pkg.acquire() path, _ = repo_pkg.acquire()
assert os.path.exists(path) assert os.path.exists(path)
return path return path
except HTTPError as e: except HTTPError as e: