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:
|
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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue