diff --git a/devices/device.py b/devices/device.py index c386053..c4fd067 100644 --- a/devices/device.py +++ b/devices/device.py @@ -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' diff --git a/distro/package.py b/distro/package.py index 3298247..a6c06a9 100644 --- a/distro/package.py +++ b/distro/package.py @@ -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 diff --git a/packages/build.py b/packages/build.py index b388221..d7f56d4 100644 --- a/packages/build.py +++ b/packages/build.py @@ -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: