def get_size(mycpv): """ Returns size of package to fetch. """ #This code to calculate size of downloaded files was taken from /usr/bin/emerge - BB # new code chunks from emerge since the files/digest is no longer, info now in Manifest. #debug.dprint( "PORTAGELIB: get_size; mycpv = " + mycpv) mysum = [0,''] myebuild = settings.portdb.findname(mycpv) pkgdir = os.path.dirname(myebuild) mf = manifest.Manifest(pkgdir, settings.settings["DISTDIR"]) #debug.dprint( "PORTAGELIB: get_size; Attempting to get fetchlist") try: if portage.VERSION >= '2.1.6':# newer portage fetchlist = settings.portdb.getFetchMap(mycpv) else: debug.dprint( "PORTAGELIB: get_size; Trying old fetchlist call") fetchlist = settings.portdb.getfetchlist(mycpv, mysettings=settings.settings, all=True)[1] #debug.dprint( "PORTAGELIB: get_size; mf.getDistfilesSize()") mysum[0] = mf.getDistfilesSize(fetchlist) mystr = str(mysum[0]/1024) #debug.dprint( "PORTAGELIB: get_size; mystr = " + mystr) mycount=len(mystr) while (mycount > 3): mycount-=3 mystr=mystr[:mycount]+","+mystr[mycount:] mysum[1]=mystr+" kB" except KeyError, e: mysum[1] = "Unknown (missing digest)" debug.dprint( "PORTAGELIB: get_size; Exception: " + str(e) ) debug.dprint( "PORTAGELIB: get_size; ebuild: " + str(mycpv)) debug.dprint( "PORTAGELIB: get_size; fetchlist = " + str(fetchlist))
def load_manifest(self, *args, **kwds): kwds['thin'] = self.thin_manifest kwds['allow_missing'] = self.allow_missing_manifest kwds['allow_create'] = self.create_manifest kwds['hashes'] = self.manifest_hashes if self.disable_manifest: kwds['from_scratch'] = True return manifest.Manifest(*args, **kwds)
def load_manifest(self, *args, **kwds): kwds['thin'] = self.thin_manifest kwds['allow_missing'] = self.allow_missing_manifest kwds['allow_create'] = self.create_manifest kwds['hashes'] = self.manifest_hashes if self.disable_manifest: kwds['from_scratch'] = True kwds['find_invalid_path_char'] = self.find_invalid_path_char return manifest.Manifest(*args, **portage._native_kwargs(kwds))
def load_manifest(self, *args, **kwds): kwds['thin'] = self.thin_manifest kwds['allow_missing'] = self.allow_missing_manifest kwds['allow_create'] = self.create_manifest kwds['hashes'] = self.manifest_hashes kwds['strict_misc_digests'] = self.strict_misc_digests if self.disable_manifest: kwds['from_scratch'] = True kwds['find_invalid_path_char'] = self.find_invalid_path_char return manifest.Manifest(*args, **kwds)
def output(self): """Outputs the results of the search.""" msg = [] msg.append("\b\b \n[ Results for search key : " + \ bold(self.searchkey) + " ]\n") msg.append("[ Applications found : " + \ bold(str(self.mlen)) + " ]\n\n") vardb = self.vartree.dbapi for mtype in self.matches: for match, masked in self.matches[mtype]: full_package = None if mtype == "pkg": catpack = match full_package = self.portdb.xmatch("bestmatch-visible", match) if not full_package: #no match found; we don't want to query description masked = 1 full_package = portage.best( self.portdb.xmatch("match-all", match)) elif mtype == "desc": full_package = match match = portage.cpv_getkey(match) elif mtype == "set": msg.append(green("*") + " " + bold(match) + "\n") if self.verbose: msg.append(" " + darkgreen("Description:") + \ " " + \ self.sdict[match].getMetadata("DESCRIPTION") \ + "\n\n") writemsg_stdout(''.join(msg), noiselevel=-1) if full_package: try: desc, homepage, license = self.portdb.aux_get( full_package, ["DESCRIPTION", "HOMEPAGE", "LICENSE"]) except KeyError: msg.append( "emerge: search: aux_get() failed, skipping\n") continue if masked: msg.append(green("*") + " " + \ white(match) + " " + red("[ Masked ]") + "\n") else: msg.append(green("*") + " " + bold(match) + "\n") myversion = self.getVersion(full_package, search.VERSION_RELEASE) mysum = [0, 0] file_size_str = None mycat = match.split("/")[0] mypkg = match.split("/")[1] mycpv = match + "-" + myversion myebuild = self.portdb.findname(mycpv) if myebuild: pkgdir = os.path.dirname(myebuild) from portage import manifest mf = manifest.Manifest(pkgdir, self.settings["DISTDIR"]) try: uri_map = self.portdb.getFetchMap(mycpv) except portage.exception.InvalidDependString as e: file_size_str = "Unknown (%s)" % (e, ) del e else: try: mysum[0] = mf.getDistfilesSize(uri_map) except KeyError as e: file_size_str = "Unknown (missing " + \ "digest for %s)" % (e,) del e available = False for db in self._dbs: if db is not vardb and \ db.cpv_exists(mycpv): available = True if not myebuild and hasattr(db, "bintree"): myebuild = db.bintree.getname(mycpv) try: mysum[0] = os.stat(myebuild).st_size except OSError: myebuild = None break if myebuild and file_size_str is None: mystr = str(mysum[0] // 1024) mycount = len(mystr) while (mycount > 3): mycount -= 3 mystr = mystr[:mycount] + "," + mystr[mycount:] file_size_str = mystr + " kB" if self.verbose: if available: msg.append(" %s %s\n" % \ (darkgreen("Latest version available:"), myversion)) msg.append(" %s\n" % \ self.getInstallationStatus(mycat+'/'+mypkg)) if myebuild: msg.append(" %s %s\n" % \ (darkgreen("Size of files:"), file_size_str)) msg.append(" " + darkgreen("Homepage:") + \ " " + homepage + "\n") msg.append(" " + darkgreen("Description:") \ + " " + desc + "\n") msg.append(" " + darkgreen("License:") + \ " " + license + "\n\n") writemsg_stdout(''.join(msg), noiselevel=-1)