diff options
author | Ross Burton <ross.burton@intel.com> | 2016-02-24 13:31:40 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-02-28 11:32:35 +0000 |
commit | 4c1fe0cbcb98b0a69ad5b3a04432055d773ee4ba (patch) | |
tree | 03730b4965db04fc933ee6072d2c0f05bc4d32e1 | |
parent | 6e779962f3846cbe5a5cb205f66b9bd9404f6d57 (diff) | |
download | openembedded-core-4c1fe0cbcb98b0a69ad5b3a04432055d773ee4ba.tar.gz openembedded-core-4c1fe0cbcb98b0a69ad5b3a04432055d773ee4ba.tar.bz2 openembedded-core-4c1fe0cbcb98b0a69ad5b3a04432055d773ee4ba.zip |
lib/oe/qa: add explicit exception for 'file isn't an ELF'
Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r-- | meta/classes/insane.bbclass | 3 | ||||
-rw-r--r-- | meta/classes/uninative.bbclass | 2 | ||||
-rw-r--r-- | meta/lib/oe/qa.py | 15 |
3 files changed, 11 insertions, 9 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index 61936e1377..b9adea77c8 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -792,9 +792,8 @@ def package_qa_walk(warnfuncs, errorfuncs, skip, package, d): elf = oe.qa.ELFFile(path) try: elf.open() - except (IOError, ValueError): + except (IOError, oe.qa.NotELFFileError): # IOError can happen if the packaging control files disappear, - # ValueError means the file isn't an ELF. elf = None for func in warnfuncs: func(path, package, d, elf, warnings) diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass index b14cec065e..7e225e6f15 100644 --- a/meta/classes/uninative.bbclass +++ b/meta/classes/uninative.bbclass @@ -80,7 +80,7 @@ python uninative_changeinterp () { elf = oe.qa.ELFFile(f) try: elf.open() - except ValueError: + except oe.qa.NotELFFileError: continue #bb.warn("patchelf-uninative --set-interpreter %s %s" % (d.getVar("UNINATIVE_LOADER", True), f)) diff --git a/meta/lib/oe/qa.py b/meta/lib/oe/qa.py index 2ad6c63bdc..4efa21fd80 100644 --- a/meta/lib/oe/qa.py +++ b/meta/lib/oe/qa.py @@ -1,3 +1,6 @@ +class NotELFFileError(Exception): + pass + class ELFFile: EI_NIDENT = 16 @@ -23,7 +26,7 @@ class ELFFile: def my_assert(self, expectation, result): if not expectation == result: #print "'%x','%x' %s" % (ord(expectation), ord(result), self.name) - raise ValueError("%s is not an ELF" % self.name) + raise NotELFFileError("%s is not an ELF" % self.name) def __init__(self, name, bits = 0): self.name = name @@ -32,7 +35,7 @@ class ELFFile: def open(self): if not os.path.isfile(self.name): - raise ValueError("%s is not a normal file" % self.name) + raise NotELFFileError("%s is not a normal file" % self.name) self.file = file(self.name, "r") self.data = self.file.read(ELFFile.EI_NIDENT+4) @@ -49,24 +52,24 @@ class ELFFile: self.bits = 64 else: # Not 32-bit or 64.. lets assert - raise ValueError("ELF but not 32 or 64 bit.") + raise NotELFFileError("ELF but not 32 or 64 bit.") elif self.bits == 32: self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) elif self.bits == 64: self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64)) else: - raise ValueError("Must specify unknown, 32 or 64 bit size.") + raise NotELFFileError("Must specify unknown, 32 or 64 bit size.") self.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) ) self.sex = self.data[ELFFile.EI_DATA] if self.sex == chr(ELFFile.ELFDATANONE): - raise ValueError("self.sex == ELFDATANONE") + raise NotELFFileError("self.sex == ELFDATANONE") elif self.sex == chr(ELFFile.ELFDATA2LSB): self.sex = "<" elif self.sex == chr(ELFFile.ELFDATA2MSB): self.sex = ">" else: - raise ValueError("Unknown self.sex") + raise NotELFFileError("Unknown self.sex") def osAbi(self): return ord(self.data[ELFFile.EI_OSABI]) |