diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index c66b84aa..06e82bee 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -17,6 +17,7 @@ _ = __trans.ugettext import os import shutil +import zipfile import pisi import pisi.context as ctx @@ -123,8 +124,11 @@ class Install(AtomicOperation): ignore_file_conflicts = ctx.get_option('ignore_file_conflicts') self.ignore_file_conflicts = ignore_file_conflicts self.package_fname = package_fname - self.package = pisi.package.Package(package_fname) - self.package.read() + try: + self.package = pisi.package.Package(package_fname) + self.package.read() + except zipfile.BadZipfile: + raise zipfile.BadZipfile(self.package_fname) self.metadata = self.package.metadata self.files = self.package.files self.pkginfo = self.metadata.package diff --git a/pisi/operations/install.py b/pisi/operations/install.py index 70aecb24..de2c6b19 100644 --- a/pisi/operations/install.py +++ b/pisi/operations/install.py @@ -12,6 +12,7 @@ import os import sys +import zipfile import gettext __trans = gettext.translation('pisi', fallback=True) @@ -145,8 +146,8 @@ def install_pkg_files(package_URIs, reinstall = False): d_t = {} dfn = {} for x in package_URIs: - package = pisi.package.Package(x) try: + package = pisi.package.Package(x) package.read() except zipfile.BadZipfile: # YALI needed to get which file is broken