Example #1
0
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))
Example #2
0
	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)
Example #3
0
	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))
Example #4
0
 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)
Example #5
0
    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)