]> git.ipfire.org Git - pakfire.git/commitdiff
Fix "download" for local packages.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2011 17:24:59 +0000 (19:24 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Jul 2011 17:24:59 +0000 (19:24 +0200)
pakfire/packages/solv.py
pakfire/repository/local.py
pakfire/repository/remote.py

index d78b8051fdb085cd928f0d3e2d7f63d5b3ed461a..5993362df5247c95982419e4e9c7e4edab55f966 100644 (file)
@@ -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()
index c9303a346885ac753319c71e99c0d1cf2922f4ce..2ff6dea939cd2af2fba67445ca55547686bbc27a 100644 (file)
@@ -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
index af2bba99f7822270cc65f8e849df7fe1f9ffbd76..2410f002d58eb899726f87b803f3f365bbfff1e8 100644 (file)
@@ -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