def decompose(self): ni_obj = NativeImports() if not ni_obj.retrieve(): self.err = ni_obj.getError() return False native = ni_obj.getImports() for gimport in self.imports: prefix = gimport.split('/')[0] if prefix in native: key = "Native" else: ip_obj = ImportPath(gimport) if not ip_obj.parse(): self.warn.append(ip_obj.getError()) key = "Unknown" else: key = ip_obj.getPrefix() if key not in self.classes: self.classes[key] = [gimport] else: self.classes[key].append(gimport) return True
def readNativeImports(self): ni_obj = NativeImports() if not ni_obj.retrieve(): self.err = ni_obj.getError() return False self.native_imports = ni_obj.getImports() return True
def load(self): """ For each subpackage return all imported and provided import paths """ # one package can have more *.xml files self.ip_provides = {} self.ip_imports = {} self.pkg_devel_main_pkg = {} ni_obj = NativeImports() if not ni_obj.retrieve(): self.err = ni_obj.getError() return False native_imports = ni_obj.getImports() golang_pkg_path = Config().getGolangPkgdb() symbol_files = [] for dirName, subdirList, fileList in os.walk(golang_pkg_path): for fname in fileList: if not fname.endswith(".xml"): continue symbol_files.append("%s/%s" % (dirName, fname)) ipdb_cache = ImportPathDBCache() if self.cache: if not ipdb_cache.load(): self.err = ipdb_cache.getError() return False devel_names = ipdb_cache.getDevelNames() for name in devel_names: self.ip_provides[name] = ipdb_cache.getProvides(name) self.ip_imports[name] = ipdb_cache.getImports(name) # what package does this build comes from self.devel_main_pkg[name] = ipdb_cache.getMainPkg(name) return True for path in symbol_files: spp_obj = SymbolPackageParser(path, read_native_imports=False) spp_obj.setNativeImports(native_imports) if not spp_obj.parse(): self.warn.append(spp_obj.getError()) continue devel_name = spp_obj.getDevelName() self.ip_provides[devel_name] = spp_obj.getProvides() self.ip_imports[devel_name] = spp_obj.getImports() # what package does this build comes from self.devel_main_pkg[devel_name] = spp_obj.getPkgName() ipdb_cache.addBuild(devel_name, self.ip_provides[devel_name], self.ip_imports[devel_name], spp_obj.getPkgName()) ipdb_cache.flush() return True
def load(self): """ For each subpackage return all imported and provided import paths """ # one package can have more *.xml files self.ip_provides = {} self.ip_imports = {} self.pkg_devel_main_pkg = {} ni_obj = NativeImports() if not ni_obj.retrieve(): self.err = ni_obj.getError() return False native_imports = ni_obj.getImports() golang_pkg_path = Config().getGolangPkgdb() symbol_files = [] for dirName, subdirList, fileList in os.walk(golang_pkg_path): for fname in fileList: if not fname.endswith(".xml"): continue symbol_files.append("%s/%s" % (dirName,fname)) ipdb_cache = ImportPathDBCache() if self.cache: if not ipdb_cache.load(): self.err = ipdb_cache.getError() return False devel_names = ipdb_cache.getDevelNames() for name in devel_names: self.ip_provides[name] = ipdb_cache.getProvides(name) self.ip_imports[name] = ipdb_cache.getImports(name) # what package does this build comes from self.devel_main_pkg[name] = ipdb_cache.getMainPkg(name) return True for path in symbol_files: spp_obj = SymbolPackageParser(path, read_native_imports=False) spp_obj.setNativeImports(native_imports) if not spp_obj.parse(): self.warn.append(spp_obj.getError()) continue devel_name = spp_obj.getDevelName() self.ip_provides[devel_name] = spp_obj.getProvides() self.ip_imports[devel_name] = spp_obj.getImports() # what package does this build comes from self.devel_main_pkg[devel_name] = spp_obj.getPkgName() ipdb_cache.addBuild(devel_name, self.ip_provides[devel_name], self.ip_imports[devel_name], spp_obj.getPkgName()) ipdb_cache.flush() return True