예제 #1
0
파일: main.py 프로젝트: ssato/rpmkit
def list_updates_from_errata(errata):
    """
    :param errata: A list of errata dict
    """
    us = sorted(U.uconcat(e.get("updates", []) for e in errata),
                key=itemgetter("name"))
    return [sorted(g, cmp=rpmkit.rpmutils.pcmp, reverse=True)[0]
            for g in sgroupby(us, itemgetter("name"))]
예제 #2
0
def make_excl_packages_list(ppaths, gpaths, profkey="system_profile"):
    """
    :param ppaths: A list of profile data dirs
    :param gpaths: A list of package group data dirs
    """
    (ppaths, gpaths) = init_ppaths_and_gpaths(ppaths, gpaths)

    prof_data = _DATA_0
    for ppath in ppaths:
        prof_data = load_profiles(ppath, prof_data)

    pgrps = list(load_package_groups_data_g(gpaths, {profkey: prof_data}))

    excludes = RU.uconcat(g["install_pkgs"] for g in pgrps)
    removes = RU.uconcat(g["remove_pkgs"] for g in pgrps)

    logging.info("Excldues: %d, Removes: %d" % (len(excludes), len(removes)))

    return (excludes, removes)
예제 #3
0
파일: optimizer.py 프로젝트: ssato/rpmkit
def make_excl_packages_list(ppaths, gpaths, profkey="system_profile"):
    """
    :param ppaths: A list of profile data dirs
    :param gpaths: A list of package group data dirs
    """
    (ppaths, gpaths) = init_ppaths_and_gpaths(ppaths, gpaths)

    prof_data = _DATA_0
    for ppath in ppaths:
        prof_data = load_profiles(ppath, prof_data)

    pgrps = list(load_package_groups_data_g(gpaths, {profkey: prof_data}))

    excludes = RU.uconcat(g["install_pkgs"] for g in pgrps)
    removes = RU.uconcat(g["remove_pkgs"] for g in pgrps)

    logging.info("Excldues: %d, Removes: %d" % (len(excludes), len(removes)))

    return (excludes, removes)
예제 #4
0
파일: main.py 프로젝트: pombredanne/rpmkit
def list_updates_from_errata(errata):
    """
    :param errata: A list of errata dict
    """
    us = sorted(U.uconcat(e.get("updates", []) for e in errata),
                key=itemgetter("name"))
    return [
        sorted(g, cmp=rpmkit.rpmutils.pcmp, reverse=True)[0]
        for g in sgroupby(us, itemgetter("name"))
    ]
예제 #5
0
파일: main.py 프로젝트: ssato/rpmkit
def list_num_of_es_for_updates(es):
    """
    List number of specific type of errata for each package names.

    :param es: List of reference errata of specific type (and severity)
    :return: [(package_name :: str, num_of_relevant_errata :: Int)]
    """
    unes = U.uconcat([(u["name"], e) for u in e["updates"]] for e in es)
    uess = [(k, [ue[1]["advisory"] for ue in g]) for k, g in
            itertools.groupby(unes, itemgetter(0))]

    return sorted(((un, len(es)) for un, es in uess), key=itemgetter(1),
                  reverse=True)
예제 #6
0
파일: main.py 프로젝트: pombredanne/rpmkit
def list_num_of_es_for_updates(es):
    """
    List number of specific type of errata for each package names.

    :param es: List of reference errata of specific type (and severity)
    :return: [(package_name :: str, num_of_relevant_errata :: Int)]
    """
    unes = U.uconcat([(u["name"], e) for u in e["updates"]] for e in es)
    uess = [(k, [ue[1]["advisory"] for ue in g])
            for k, g in itertools.groupby(unes, itemgetter(0))]

    return sorted(((un, len(es)) for un, es in uess),
                  key=itemgetter(1),
                  reverse=True)