distro/package: BinaryPackage.acquire(): return (path: str, changed: bool)
This commit is contained in:
parent
d527769473
commit
0c56038ed6
3 changed files with 11 additions and 9 deletions
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue