def __init__(self, path, basedir='', buffer=''): Magic.__init__(self, path, basedir) fullpath = basedir + path self.contents['stripped'] = elf.stripped(fullpath) if self.__class__ is ELF: # ar doesn't deal with hasDebug or RPATH try: self.contents['hasDebug'] = elf.hasDebug(fullpath) except elf.error: pass try: self.contents['RPATH'] = elf.getRPATH(fullpath) except elf.error: pass try: self.contents['Type'] = elf.getType(fullpath) except elf.error: pass try: requires, provides = elf.inspect(fullpath) # Filter None abi flags requires = [ x for x in requires if x[0] != 'abi' or x[2][0] is not None ] self.contents['requires'] = requires self.contents['provides'] = provides for req in requires: if req[0] == 'abi': self.contents['abi'] = req[1:] self.contents['isnset'] = req[2][1] for prov in provides: if prov[0] == 'soname': self.contents['soname'] = prov[1] except elf.error: pass
def __init__(self, path, basedir='', buffer=''): Magic.__init__(self, path, basedir) fullpath = basedir+path self.contents['stripped'] = elf.stripped(fullpath) if self.__class__ is ELF: # ar doesn't deal with hasDebug or RPATH try: self.contents['hasDebug'] = elf.hasDebug(fullpath) except elf.error: pass try: self.contents['RPATH'] = elf.getRPATH(fullpath) except elf.error: pass try: self.contents['Type'] = elf.getType(fullpath) except elf.error: pass try: requires, provides = elf.inspect(fullpath) # Filter None abi flags requires = [ x for x in requires if x[0] != 'abi' or x[2][0] is not None ] self.contents['requires'] = requires self.contents['provides'] = provides for req in requires: if req[0] == 'abi': self.contents['abi'] = req[1:] self.contents['isnset'] = req[2][1] for prov in provides: if prov[0] == 'soname': self.contents['soname'] = prov[1] except elf.error: pass
def rpmExpandMacro(val): if getattr(rpm, '_rpm', ''): rawRpmModulePath = rpm._rpm.__file__ else: rawRpmModulePath = rpm.__file__ sonames = [ x[1] for x in elf.inspect(rawRpmModulePath)[0] if x[0] == 'soname'] rpmLibs = [ x for x in sonames if re.match('librpm[-\.].*so', x) ] assert(len(rpmLibs) == 1) librpm = ctypes.CDLL(rpmLibs[0]) librpm.expandMacros.argtypes = (c_void_p, c_void_p, c_void_p, c_long) librpm.expandMacros.restype = c_int buf = ctypes.create_string_buffer(val, len(val) * 100) rc = librpm.expandMacros(None, None, buf, len(buf)) if rc != 0: raise RuntimeError("failed to expand RPM macro %r" % (val,)) return buf.value
def rpmExpandMacro(val): if getattr(rpm, '_rpm', ''): rawRpmModulePath = rpm._rpm.__file__ else: rawRpmModulePath = rpm.__file__ sonames = [ x[1] for x in elf.inspect(rawRpmModulePath)[0] if x[0] == 'soname' ] rpmLibs = [x for x in sonames if re.match('librpm[-\.].*so', x)] assert (len(rpmLibs) == 1) librpm = ctypes.CDLL(rpmLibs[0]) librpm.expandMacros.argtypes = (c_void_p, c_void_p, c_void_p, c_long) librpm.expandMacros.restype = c_int buf = ctypes.create_string_buffer(val, len(val) * 100) rc = librpm.expandMacros(None, None, buf, len(buf)) if rc != 0: raise RuntimeError("failed to expand RPM macro %r" % (val, )) return buf.value