Esempio n. 1
0
def do_normal(pkg, verbose):
    data = []
    if not pkg[4]:
        installed = "[ Not Installed ]"
    else:
        installed = pkg[4]

    if pkg[2]:
        masked = red(" [ Masked ]")
    else:
        masked = ""

    data.append("%s  %s%s\n      %s %s\n      %s %s" % \
            (green("*"), bold(pkg[1]), masked,
            darkgreen("Latest version available:"), pkg[3],
            darkgreen("Latest version installed:"), installed))

    if verbose:
        mpv = best(portdb.xmatch("match-all", pkg[1]))
        iuse_split, final_use = get_flags(mpv, final_setting=True)
        iuse = ""
        use_list = []
        for ebuild_iuse in iuse_split:
            use = ebuild_iuse.lstrip('+-')
            if use in final_use:
                use_list.append(red("+" + use) + " ")
            else:
                use_list.append(blue("-" + use) + " ")
        use_list.sort()
        iuse = ' '.join(use_list)
        if iuse == "":
            iuse = "-"

        data.append("      %s         %s\n      %s       %s" % \
                (darkgreen("Unstable version:"), pkg_version(mpv),
                 darkgreen("Use Flags (stable):"), iuse))

    data.append("      %s %s\n      %s    %s\n      %s %s\n      %s     %s\n" % \
            (darkgreen("Size of downloaded files:"), pkg[5],
             darkgreen("Homepage:"), pkg[6],
             darkgreen("Description:"), pkg[7],
             darkgreen("License:"), pkg[8]))
    return data
Esempio n. 2
0
def do_normal(pkg, verbose):
    data = []
    if not pkg[4]:
        installed = "[ Not Installed ]"
    else:
        installed = pkg[4]

    if pkg[2]:
        masked = red(" [ Masked ]")
    else:
        masked = ""

    data.append("%s  %s%s\n      %s %s\n      %s %s" % \
            (green("*"), bold(pkg[1]), masked,
            darkgreen("Latest version available:"), pkg[3],
            darkgreen("Latest version installed:"), installed))

    if verbose:
        mpv = best(portdb.xmatch("match-all", pkg[1]))
        iuse_split, final_use = get_flags(mpv, final_setting=True)
        iuse = ""
        use_list = []
        for ebuild_iuse in iuse_split:
            use = ebuild_iuse.lstrip('+-')
            if use in final_use:
                use_list.append(red("+" + use) + " ")
            else:
                use_list.append(blue("-" + use) + " ")
        use_list.sort()
        iuse = ' '.join(use_list)
        if iuse == "":
            iuse = "-"

        data.append("      %s         %s\n      %s       %s" % \
                (darkgreen("Unstable version:"), pkg_version(mpv),
                 darkgreen("Use Flags (stable):"), iuse))

    data.append("      %s %s\n      %s    %s\n      %s %s\n      %s     %s\n" % \
            (darkgreen("Size of downloaded files:"), pkg[5],
             darkgreen("Homepage:"), pkg[6],
             darkgreen("Description:"), pkg[7],
             darkgreen("License:"), pkg[8]))
    return data, False
Esempio n. 3
0
def updatedb(config=None):

    if not os.access(config['esearchdbdir'], os.W_OK):
        print(
            yellow("Warning:"),
            "You do not have sufficient permissions to save the index file in:",
            green(config['esearchdbdir']),
            file=config['stderr'])
        return False

    if config['verbose'] != -1 and "ACCEPT_KEYWORDS" in environ:
        print(yellow("Warning:"),
              "You have set ACCEPT_KEYWORDS in environment, this will result",
              file=config['stdout'])
        print("         in a modified index file", file=config['stdout'])

    ebuilds = portage.portdb.cp_all()
    numebuilds = len(ebuilds)

    if exists(config['tmpfile']):
        error("there is probably another eupdatedb running already.\n" +
              "         If you're sure there is no other process, remove",
              config['tmpfile'],
              fatal=False)
        return False
    try:
        dbfd = open(config['tmpfile'], O_CREAT | O_EXCL | O_WRONLY, 0o600)
    except OSError:
        error("Failed to open temporary file.", fatal=False)
        return False
    dbfile = fdopen(dbfd, "w")
    dbfile.write("dbversion = " + str(config['needdbversion']) + "\n")
    dbfile.write("db = (\n")

    if not config['verbose']:
        config['stdout'].write(green(" * ") + "indexing: ")
        config['stdout'].flush()
        nr = 0
        nrchars = 0
    elif config['verbose'] == 1:
        lastcat = False

    cattime = time()
    try:
        for pkg in ebuilds:
            masked = False

            if not config['verbose']:
                nr += 1
                s = str(numebuilds - nr) + " ebuilds to go"
                config['stdout'].write((nrchars * "\b \b") + s)
                config['stdout'].flush()
                nrchars = len(s)

            pkgv = portage.portdb.xmatch("bestmatch-visible", pkg)
            if not pkgv:
                pkgv = portage.best(portage.portdb.xmatch("match-all", pkg))
                if not pkgv:
                    continue
                masked = True

            if len(pkgv) > 1:
                try:
                    homepage, description, _license = portage.portdb.aux_get(
                        pkgv, ["HOMEPAGE", "DESCRIPTION", "LICENSE"])
                except KeyError:
                    homepage, description, _license = "", "", ""
                    pass

            if len(pkgv) > 1:
                filesize = getfetchsize(pkgv)
            else:
                filesize = '0'

            (curcat, pkgname) = pkg.split("/")

            if config['verbose'] == 1 and curcat != lastcat:
                if lastcat != False:
                    print(duration(cattime), file=config['stdout'])
                print(bold(" * " + curcat) + ":",
                      end=' ',
                      file=config['stdout'])
                cattime = time()
                lastcat = curcat

            installed = pkg_version(VARTREE.dep_bestmatch(pkg))
            if installed:
                installed = str(installed)

            dbfile.write(
                repr((str(pkgname), str(pkg), masked, str(pkg_version(pkgv)),
                      installed, str(filesize), str(homepage),
                      str(description), str(_license))) + str(",\n"))
    except KeyboardInterrupt:
        dbfile.close()
        unlink(config['tmpfile'])
        print("", file=config['stdout'])
        return False

    print("", file=config['stdout'])

    dbfile.write(")")
    dbfile.close()

    copyfile(config['tmpfile'],
             os.path.join(config['esearchdbdir'], config['esearchdbfile']))
    unlink(config['tmpfile'])

    sys.path.insert(0, config['esearchdbdir'])
    import esearchdb  # import the file, to generate pyc

    if exists(
            os.path.join(config['esearchdbdir'], config['esearchdbfile']) +
            "c"):
        config['esearchdbfile'] += "c"

    print(green(" *"),
          "esearch-index generated in",
          duration(start),
          file=config['stdout'])
    print(green(" *"),
          "indexed",
          bold(str(numebuilds)),
          "ebuilds",
          file=config['stdout'])
    print(green(" *"),
          "size of esearch-index:",
          bold(
              str(
                  int(
                      stat(
                          os.path.join(config['esearchdbdir'],
                                       config['esearchdbfile']))[6] / 1024)) +
              " kB"),
          file=config['stdout'])
    return True
Esempio n. 4
0
def updatedb(config=None):

    if not os.access(config['esearchdbdir'], os.W_OK):
        print(yellow("Warning:"),
            "You do not have sufficient permissions to save the index file in:",
            green(config['esearchdbdir']), file=config['stderr'])
        return False

    if config['verbose'] != -1 and "ACCEPT_KEYWORDS" in environ:
        print(yellow("Warning:"),
            "You have set ACCEPT_KEYWORDS in environment, this will result",
            file=config['stdout'])
        print("         in a modified index file", file=config['stdout'])

    ebuilds = portage.portdb.cp_all()
    numebuilds = len(ebuilds)

    if exists(config['tmpfile']):
        error("there is probably another eupdatedb running already.\n" +
            "         If you're sure there is no other process, remove",
            config['tmpfile'], fatal=False)
        return False
    try:
        dbfd = open(config['tmpfile'], O_CREAT | O_EXCL | O_WRONLY, 0o600)
    except OSError:
        error("Failed to open temporary file.", fatal=False)
        return False
    dbfile = fdopen(dbfd, "w")
    dbfile.write("dbversion = " + str(config['needdbversion']) + "\n")
    dbfile.write("db = (\n")

    if not config['verbose']:
        config['stdout'].write(green(" * ") + "indexing: ")
        config['stdout'].flush()
        nr = 0
        nrchars = 0
    elif config['verbose'] == 1:
        lastcat = False

    cattime = time()
    try:
        for pkg in ebuilds:
            masked = False

            if not config['verbose']:
                nr += 1
                s = str(numebuilds - nr) + " ebuilds to go"
                config['stdout'].write((nrchars * "\b \b") + s)
                config['stdout'].flush()
                nrchars = len(s)

            pkgv = portage.portdb.xmatch("bestmatch-visible", pkg)
            if not pkgv:
                pkgv = portage.best(portage.portdb.xmatch("match-all", pkg))
                if not pkgv:
                    continue
                masked = True

            if len(pkgv) > 1:
                try:
                    homepage, description, _license = portage.portdb.aux_get(
                        pkgv, ["HOMEPAGE", "DESCRIPTION", "LICENSE"])
                except KeyError:
                    homepage, description, _license = "", "", ""
                    pass

            if len(pkgv) > 1:
                filesize = getfetchsize(pkgv)
            else:
                filesize = '0'

            (curcat, pkgname) = pkg.split("/")

            if config['verbose'] == 1 and curcat != lastcat:
                if lastcat != False:
                    print(duration(cattime), file=config['stdout'])
                print(bold(" * " + curcat) + ":", end=' ', file=config['stdout'])
                cattime = time()
                lastcat = curcat

            installed = pkg_version(VARTREE.dep_bestmatch(pkg))
            if installed:
                installed = str(installed)

            dbfile.write(repr((str(pkgname),
                            str(pkg),
                            masked,
                            str(pkg_version(pkgv)),
                            installed,
                            str(filesize),
                            str(homepage),
                            str(description),
                            str(_license))) + str(",\n"))
    except KeyboardInterrupt:
        dbfile.close()
        unlink(config['tmpfile'])
        print("", file=config['stdout'])
        return False

    print("", file=config['stdout'])

    dbfile.write(")")
    dbfile.close()

    copyfile(config['tmpfile'],
        os.path.join(config['esearchdbdir'], config['esearchdbfile']))
    unlink(config['tmpfile'])

    sys.path.insert(0, config['esearchdbdir'])
    import esearchdb # import the file, to generate pyc

    if exists(
        os.path.join(config['esearchdbdir'], config['esearchdbfile']) + "c"):
        config['esearchdbfile'] += "c"

    print(green(" *"), "esearch-index generated in", duration(start),
        file=config['stdout'])
    print(green(" *"), "indexed", bold(str(numebuilds)), "ebuilds",
        file=config['stdout'])
    print(green(" *"), "size of esearch-index:",
        bold(str(int(stat(
            os.path.join(config['esearchdbdir'], config['esearchdbfile'])
            )[6]/1024)) + " kB"), file=config['stdout'])
    return True