If file could not be downloaded, raise an error about it. And if it is cached delete it before
starting a new operation. It is not deleted after download because it may be checked to see what the problem is. BUG:FIXED:4113
This commit is contained in:
@@ -27,6 +27,7 @@ import pisi.files
|
|||||||
import pisi.uri
|
import pisi.uri
|
||||||
import pisi.ui
|
import pisi.ui
|
||||||
import pisi.version
|
import pisi.version
|
||||||
|
import pisi.operations.helper
|
||||||
import pisi.operations.delta
|
import pisi.operations.delta
|
||||||
import pisi.db
|
import pisi.db
|
||||||
|
|
||||||
@@ -83,8 +84,10 @@ class Install(AtomicOperation):
|
|||||||
# If delta exists than use the delta uri.
|
# If delta exists than use the delta uri.
|
||||||
if delta:
|
if delta:
|
||||||
pkg_uri = delta.packageURI
|
pkg_uri = delta.packageURI
|
||||||
|
pkg_hash = delta.packageHash
|
||||||
else:
|
else:
|
||||||
pkg_uri = pkg.packageURI
|
pkg_uri = pkg.packageURI
|
||||||
|
pkg_hash = pkg.packageHash
|
||||||
|
|
||||||
uri = pisi.uri.URI(pkg_uri)
|
uri = pisi.uri.URI(pkg_uri)
|
||||||
if uri.is_absolute_path():
|
if uri.is_absolute_path():
|
||||||
@@ -95,7 +98,19 @@ class Install(AtomicOperation):
|
|||||||
|
|
||||||
ctx.ui.info(_("Package URI: %s") % pkg_path, verbose=True)
|
ctx.ui.info(_("Package URI: %s") % pkg_path, verbose=True)
|
||||||
|
|
||||||
return Install(pkg_path, ignore_dep)
|
# Bug 4113
|
||||||
|
cached_file = pisi.package.Package.is_cached(pkg_path)
|
||||||
|
if cached_file and util.sha1_file(cached_file) != pkg_hash:
|
||||||
|
os.unlink(cached_file)
|
||||||
|
|
||||||
|
install_op = Install(pkg_path, ignore_dep)
|
||||||
|
|
||||||
|
# Bug 4113
|
||||||
|
downloaded_file = install_op.package.filepath
|
||||||
|
if pisi.util.sha1_file(downloaded_file) != pkg_hash:
|
||||||
|
raise pisi.Error(_("Download Error: Package does not match the repository package."))
|
||||||
|
|
||||||
|
return install_op
|
||||||
else:
|
else:
|
||||||
raise Error(_("Package %s not found in any active repository.") % name)
|
raise Error(_("Package %s not found in any active repository.") % name)
|
||||||
|
|
||||||
|
|||||||
@@ -142,3 +142,13 @@ class Package:
|
|||||||
|
|
||||||
def comar_dir(self):
|
def comar_dir(self):
|
||||||
return os.path.join(self.pkg_dir(), ctx.const.comar_dir)
|
return os.path.join(self.pkg_dir(), ctx.const.comar_dir)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_cached(packagefn):
|
||||||
|
url = pisi.uri.URI(packagefn)
|
||||||
|
filepath = packagefn
|
||||||
|
if url.is_remote_file():
|
||||||
|
filepath = os.path.join(ctx.config.cached_packages_dir(), url.filename())
|
||||||
|
return os.path.exists(filepath) and filepath
|
||||||
|
else:
|
||||||
|
return filepath
|
||||||
|
|||||||
Reference in New Issue
Block a user