From: Michael Tremer Date: Sun, 17 Jul 2011 17:24:59 +0000 (+0200) Subject: Fix "download" for local packages. X-Git-Tag: 0.9.3~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=811d22ad5c9345587d66c6851d2d8c618c416892;p=pakfire.git Fix "download" for local packages. --- diff --git a/pakfire/packages/solv.py b/pakfire/packages/solv.py index d78b8051f..5993362df 100644 --- a/pakfire/packages/solv.py +++ b/pakfire/packages/solv.py @@ -1,5 +1,6 @@ #!/usr/bin/python +import os import re import base @@ -131,15 +132,29 @@ class SolvPackage(base.Package): @property def is_in_cache(self): + # Local files are always kinda cached. + if self.repo.local: + return True + return self.repo.cache.exists("package/%s" % self.filename) def get_from_cache(self): - filename = "packages/%s" % self.filename + path = None + + if self.repo.local: + path = os.path.join(self.repo.path, self.arch, self.filename) + return binary.BinaryPackage(self.pakfire, self.repo, path) + else: + filename = "packages/%s" % self.filename + + if self.repo.cache.exists(filename): + path = self.repo.cache.abspath(filename) - if self.repo.cache.exists(filename): - return binary.BinaryPackage(self.pakfire, self.repo, self.repo.cache.abspath(filename)) + if path: + return binary.BinaryPackage(self.pakfire, self.repo, path) def download(self, text=""): - self.repo.download(self.filename, text=text, hash1=self.hash1) + if not self.repo.local: + self.repo.download(self, text=text) return self.get_from_cache() diff --git a/pakfire/repository/local.py b/pakfire/repository/local.py index c9303a346..2ff6dea93 100644 --- a/pakfire/repository/local.py +++ b/pakfire/repository/local.py @@ -136,6 +136,13 @@ class RepositoryBuild(RepositoryDir): RepositoryDir.__init__(self, pakfire, "build", "Locally built packages", path) + @property + def local(self): + """ + Yes, this is local. + """ + return True + @property def priority(self): return 20000 diff --git a/pakfire/repository/remote.py b/pakfire/repository/remote.py index af2bba99f..2410f002d 100644 --- a/pakfire/repository/remote.py +++ b/pakfire/repository/remote.py @@ -47,10 +47,12 @@ class RepositorySolv(base.RepositoryFactory): return priority - def download(self, filename, hash1=None, text=""): + def download(self, pkg, text=""): """ Downloads 'filename' from repository and returns the local filename. """ + filename, hash1 = pkg.filename, pkg.hash1 + # Marker, if we need to download the package. download = True