commit 1ee5890ac3dfe565decb53e9af5842fe67274e91 Author: Michal Srb msrb@redhat.com Date: Mon May 12 08:02:51 2014 +0200
[osgi] Do not fail if zipfile.is_zipfile() returns true for non-zip files
See rhbz#889131 for details
depgenerators/osgi.prov | 13 +++++++++---- depgenerators/osgi.req | 21 +++++++++++++-------- 2 files changed, 22 insertions(+), 12 deletions(-) --- diff --git a/depgenerators/osgi.prov b/depgenerators/osgi.prov index 4090329..53b2cb4 100755 --- a/depgenerators/osgi.prov +++ b/depgenerators/osgi.prov @@ -85,10 +85,15 @@ class TagBuilder: manifest = open(path) self.handle_manifest(manifest) if zipfile.is_zipfile(path): - jarfile = ZipFile(path) - if "META-INF/MANIFEST.MF" in jarfile.namelist(): - manifest = jarfile.open("META-INF/MANIFEST.MF") - self.handle_manifest(manifest) + # looks like "zipfile.is_zipfile()" is not reliable + # see rhbz#889131 for more details + try: + jarfile = ZipFile(path) + if "META-INF/MANIFEST.MF" in jarfile.namelist(): + manifest = jarfile.open("META-INF/MANIFEST.MF") + self.handle_manifest(manifest) + except IOError: + pass
if __name__ == "__main__": diff --git a/depgenerators/osgi.req b/depgenerators/osgi.req index be10cb1..037104f 100755 --- a/depgenerators/osgi.req +++ b/depgenerators/osgi.req @@ -87,14 +87,19 @@ class TagBuilder: def get_osgi_require (self, path): if not os.path.islink(path): if zipfile.is_zipfile(path): - jarfile = ZipFile(path) - if "META-INF/MANIFEST.MF" in jarfile.namelist(): - manifest = jarfile.open("META-INF/MANIFEST.MF") - headers = self.parse_manifest(manifest) - if headers.get("Require-Bundle"): - for bundle in self.split_bundle_name(headers.get("Require-Bundle")): - if bundle != "system.bundle": - print "osgi(%s)" %(bundle) + # looks like "zipfile.is_zipfile()" is not reliable + # see rhbz#889131 for more details + try: + jarfile = ZipFile(path) + if "META-INF/MANIFEST.MF" in jarfile.namelist(): + manifest = jarfile.open("META-INF/MANIFEST.MF") + headers = self.parse_manifest(manifest) + if headers.get("Require-Bundle"): + for bundle in self.split_bundle_name(headers.get("Require-Bundle")): + if bundle != "system.bundle": + print "osgi(%s)" %(bundle) + except IOError: + pass
if __name__ == "__main__": builder = TagBuilder ()