summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2016-02-15 17:48:25 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-02-16 11:17:10 +0000
commit7a700f59d98ffe08714582532d3edb97abc2e33e (patch)
tree5a4bcc4afe511799e38ab386fd7c339c935f94f8
parent334e1b5e0ee52f201379aee2d3b4d39943ee19e4 (diff)
downloadpoky-7a700f59d98ffe08714582532d3edb97abc2e33e.tar.gz
lib/qa.py: raise ValueError if file isn't an ELF
Instead of raising a generic Exception that can't be handled specifically, raise a ValueError. Also update the callers so any unexpected exceptions are not ignored. Also, rename isBigEngian() to isBigEndian(). (From OE-Core rev: c136652f9c0b35aafa393e63567daf029ae03929) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/insane.bbclass4
-rw-r--r--meta/classes/uninative.bbclass2
-rw-r--r--meta/lib/oe/qa.py14
3 files changed, 11 insertions, 9 deletions
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 530e711ec4..aef08fe28e 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -792,7 +792,9 @@ def package_qa_walk(warnfuncs, errorfuncs, skip, package, d):
792 elf = oe.qa.ELFFile(path) 792 elf = oe.qa.ELFFile(path)
793 try: 793 try:
794 elf.open() 794 elf.open()
795 except: 795 except (IOError, ValueError):
796 # IOError can happen if the packaging control files disappear,
797 # ValueError means the file isn't an ELF.
796 elf = None 798 elf = None
797 for func in warnfuncs: 799 for func in warnfuncs:
798 func(path, package, d, elf, warnings) 800 func(path, package, d, elf, warnings)
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 0448cf6cdc..b14cec065e 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -80,7 +80,7 @@ python uninative_changeinterp () {
80 elf = oe.qa.ELFFile(f) 80 elf = oe.qa.ELFFile(f)
81 try: 81 try:
82 elf.open() 82 elf.open()
83 except: 83 except ValueError:
84 continue 84 continue
85 85
86 #bb.warn("patchelf-uninative --set-interpreter %s %s" % (d.getVar("UNINATIVE_LOADER", True), f)) 86 #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 21fb9977ce..2ad6c63bdc 100644
--- a/meta/lib/oe/qa.py
+++ b/meta/lib/oe/qa.py
@@ -23,7 +23,7 @@ class ELFFile:
23 def my_assert(self, expectation, result): 23 def my_assert(self, expectation, result):
24 if not expectation == result: 24 if not expectation == result:
25 #print "'%x','%x' %s" % (ord(expectation), ord(result), self.name) 25 #print "'%x','%x' %s" % (ord(expectation), ord(result), self.name)
26 raise Exception("This does not work as expected") 26 raise ValueError("%s is not an ELF" % self.name)
27 27
28 def __init__(self, name, bits = 0): 28 def __init__(self, name, bits = 0):
29 self.name = name 29 self.name = name
@@ -32,7 +32,7 @@ class ELFFile:
32 32
33 def open(self): 33 def open(self):
34 if not os.path.isfile(self.name): 34 if not os.path.isfile(self.name):
35 raise Exception("File is not a normal file") 35 raise ValueError("%s is not a normal file" % self.name)
36 36
37 self.file = file(self.name, "r") 37 self.file = file(self.name, "r")
38 self.data = self.file.read(ELFFile.EI_NIDENT+4) 38 self.data = self.file.read(ELFFile.EI_NIDENT+4)
@@ -49,24 +49,24 @@ class ELFFile:
49 self.bits = 64 49 self.bits = 64
50 else: 50 else:
51 # Not 32-bit or 64.. lets assert 51 # Not 32-bit or 64.. lets assert
52 raise Exception("ELF but not 32 or 64 bit.") 52 raise ValueError("ELF but not 32 or 64 bit.")
53 elif self.bits == 32: 53 elif self.bits == 32:
54 self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) 54 self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32))
55 elif self.bits == 64: 55 elif self.bits == 64:
56 self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64)) 56 self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64))
57 else: 57 else:
58 raise Exception("Must specify unknown, 32 or 64 bit size.") 58 raise ValueError("Must specify unknown, 32 or 64 bit size.")
59 self.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) ) 59 self.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) )
60 60
61 self.sex = self.data[ELFFile.EI_DATA] 61 self.sex = self.data[ELFFile.EI_DATA]
62 if self.sex == chr(ELFFile.ELFDATANONE): 62 if self.sex == chr(ELFFile.ELFDATANONE):
63 raise Exception("self.sex == ELFDATANONE") 63 raise ValueError("self.sex == ELFDATANONE")
64 elif self.sex == chr(ELFFile.ELFDATA2LSB): 64 elif self.sex == chr(ELFFile.ELFDATA2LSB):
65 self.sex = "<" 65 self.sex = "<"
66 elif self.sex == chr(ELFFile.ELFDATA2MSB): 66 elif self.sex == chr(ELFFile.ELFDATA2MSB):
67 self.sex = ">" 67 self.sex = ">"
68 else: 68 else:
69 raise Exception("Unknown self.sex") 69 raise ValueError("Unknown self.sex")
70 70
71 def osAbi(self): 71 def osAbi(self):
72 return ord(self.data[ELFFile.EI_OSABI]) 72 return ord(self.data[ELFFile.EI_OSABI])
@@ -80,7 +80,7 @@ class ELFFile:
80 def isLittleEndian(self): 80 def isLittleEndian(self):
81 return self.sex == "<" 81 return self.sex == "<"
82 82
83 def isBigEngian(self): 83 def isBigEndian(self):
84 return self.sex == ">" 84 return self.sex == ">"
85 85
86 def machine(self): 86 def machine(self):