From a5ec6050507baeed398179bff165a1fe012a7e5b Mon Sep 17 00:00:00 2001 From: necoro <> Date: Fri, 29 Sep 2006 18:33:00 +0000 Subject: Renamed helper.py to portage_helper.py --- geneticone/__init__.py | 3 +- geneticone/helper.py | 173 ------------------------------------------- geneticone/portage_helper.py | 173 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 175 insertions(+), 174 deletions(-) delete mode 100644 geneticone/helper.py create mode 100644 geneticone/portage_helper.py diff --git a/geneticone/__init__.py b/geneticone/__init__.py index 14c3c22..f07bc68 100644 --- a/geneticone/__init__.py +++ b/geneticone/__init__.py @@ -26,5 +26,6 @@ porttree = gentoolkit.porttree vartree = gentoolkit.vartree # import our packages -from helper import * +from debug import * +from portage_helper import * from package import * diff --git a/geneticone/helper.py b/geneticone/helper.py deleted file mode 100644 index 0130160..0000000 --- a/geneticone/helper.py +++ /dev/null @@ -1,173 +0,0 @@ -# -# File: geneticone/helper.py -# This file is part of the Genetic/One-Project, a graphical portage-frontend. -# -# Copyright (C) 2006 Necoro d.M. -# This is free software. You may redistribute copies of it under the terms of -# the GNU General Public License version 2. -# There is NO WARRANTY, to the extent permitted by law. -# -# Written by Necoro d.M. et.al. - -from geneticone import * -import geneticone - -import re -import os - -import gentoolkit -import portage -from portage_util import unique_array - -class BlockedException (Exception): - """An exception marking, that some package is blocking another one.""" - pass - -class PackageNotFoundException (Exception): - """An exception marking that a package could not be found.""" - pass - -class DependencyCalcError (Exception): - """An error occured during dependency calculation.""" - pass - -def find_lambda (name): - """Returns the function needed by all the find_all_*-functions. Returns None if no name is given. - @param name: name to build the function of - @type name: string - @returns: - 1. None if no name is given - 2. a lambda function - @rtype: function""" - if name != None: - return lambda x: re.match(".*"+name+".*",x) - else: - return lambda x: True - -def geneticize_list (list_of_packages): - """Convertes a list of gentoolkit.Packages into L{geneticone.Packages}. - @param list_of_packages: the list of packages - @type list_of_packages: list of gentoolkit.Packages - @returns: converted list - @rtype: list of geneticone.Packages""" - return [geneticone.Package(x) for x in list_of_packages] - -def find_best_match (search_key, only_installed = False): - """Finds the best match in the portage tree.""" - t = None - if not only_installed: - t = porttree.dep_bestmatch(search_key) - else: - t = vartree.dep_bestmatch(search_key) - if t: - return geneticone.Package(t) - return None - -def find_packages (search_key, masked=False): - """This returns a list of packages which have to fit exactly. Additionally ranges like '<,>,=,~,!' et. al. are possible.""" - return geneticize_list(gentoolkit.find_packages(search_key, masked)) - -def find_installed_packages (search_key, masked=False): - """This returns a list of installed packages which have to fit exactly. Additionally ranges like '<,>,=,~,!' et. al. are possible.""" - return geneticize_list(gentoolkit.find_installed_packages(search_key, masked)) - -def find_system_packages (name=None): - """Returns a list-tuple (resolved_packages, unresolved_packages) for all system packages.""" - list = gentoolkit.find_system_packages() - return (geneticize_list(list[0]), geneticize_list(list[1])) - -def find_world_packages (): - """Returns a list-tuple (resolved_packages, unresolved_packages) for all packages in the world-file.""" - list = gentoolkit.find_world_packages() - return geneticize_list(list[0]),geneticize_list(list[1]) - -def find_all_installed_packages (name=None): - """Returns a list of all installed packages matching ".*name.*". - Returns ALL installed packages if name is None.""" - return geneticize_list(gentoolkit.find_all_installed_packages(find_lambda(name))) - -def find_all_uninstalled_packages (name=None): - """Returns a list of all uninstalled packages matching ".*name.*". - Returns ALL uninstalled packages if name is None.""" - return geneticize_list(gentoolkit.find_all_uninstalled_packages(find_lambda(name))) - -def find_all_packages (name=None): - """Returns a list of all packages matching ".*name.*". - Returns ALL packages if name is None.""" - return geneticize_list(gentoolkit.find_all_packages(find_lambda(name))) - -def find_all_world_files (name=None): - """Returns a list of all world packages matching ".*name.*". - Returns ALL world packages if name is None.""" - world = filter(find_lambda(name), [x.get_cpv() for x in find_world_packages()[0]]) - world = unique_array(world) - return [geneticone.Package(x) for x in world] - -def find_all_system_files (name=None): - """Returns a list of all system packages matching ".*name.*". - Returns ALL system packages if name is None.""" - sys = filter(find_lambda(name), [x.get_cpv() for x in find_system_packages()[0]]) - sys = unique_array(sys) - return [geneticone.Package(x) for x in sys] - -def list_categories (name=None): - """Returns a list of categories matching ".*name.*" or all categories.""" - categories = gentoolkit.settings.categories - return filter(find_lambda(name), categories) - -def split_package_name (name): - """Returns a list in the form [category, name, version, revision]. Revision will - be 'r0' if none can be inferred. Category and version will be empty, if none can - be inferred.""" - return gentoolkit.split_package_name(name) - -def sort_package_list(pkglist): - """Sorts a package list in the same manner portage does.""" - return gentoolkit.sort_package_list(pkglist) - -def am_i_root (): - """Returns True if the current user is root, False otherwise.""" - if os.getuid() == 0: - return True - else: - return False - -use_descs = {} -local_use_descs = {} -def get_use_desc (flag, package = None): - """Returns the description of a specific useflag or None if no desc was found. - If a package is given (in the / format) the local use descriptions are searched too. - In the first run the dictionaries 'use_descs' and 'local_use_descs' are filled.""" - # fill cache if needed - if use_descs == {} or local_use_descs == {}: - # read use.desc - fd = open(gentoolkit.settings["PORTDIR"]+"/profiles/use.desc") - for line in fd.readlines(): - line = line.strip() - if line != "" and line[0] != '#': - fields = [x.strip() for x in line.split(" - ",1)] - if len(fields) == 2: - use_descs[fields[0]] = fields[1] - - # read use.local.desc - fd = open(gentoolkit.settings["PORTDIR"]+"/profiles/use.local.desc") - for line in fd.readlines(): - line = line.strip() - if line != "" and line[0] != '#': - fields = [x.strip() for x in line.split(":",1)] - if len(fields) == 2: - if not fields[0] in local_use_descs: # create - local_use_descs[fields[0]] = {} - subfields = [x.strip() for x in fields[1].split(" - ",1)] - if len(subfields) == 2: - local_use_descs[fields[0]][subfields[0]] = subfields[1] - - # start - desc = None - if flag in use_descs: - desc = use_descs[flag] - if package != None: - if package in local_use_descs: - if flag in local_use_descs[package]: - desc = local_use_descs[package][flag] - return desc diff --git a/geneticone/portage_helper.py b/geneticone/portage_helper.py new file mode 100644 index 0000000..2d62dcf --- /dev/null +++ b/geneticone/portage_helper.py @@ -0,0 +1,173 @@ +# +# File: geneticone/portage_helper.py +# This file is part of the Genetic/One-Project, a graphical portage-frontend. +# +# Copyright (C) 2006 Necoro d.M. +# This is free software. You may redistribute copies of it under the terms of +# the GNU General Public License version 2. +# There is NO WARRANTY, to the extent permitted by law. +# +# Written by Necoro d.M. et.al. + +from geneticone import * +import geneticone + +import re +import os + +import gentoolkit +import portage +from portage_util import unique_array + +class BlockedException (Exception): + """An exception marking, that some package is blocking another one.""" + pass + +class PackageNotFoundException (Exception): + """An exception marking that a package could not be found.""" + pass + +class DependencyCalcError (Exception): + """An error occured during dependency calculation.""" + pass + +def find_lambda (name): + """Returns the function needed by all the find_all_*-functions. Returns None if no name is given. + @param name: name to build the function of + @type name: string + @returns: + 1. None if no name is given + 2. a lambda function + @rtype: function""" + if name != None: + return lambda x: re.match(".*"+name+".*",x) + else: + return lambda x: True + +def geneticize_list (list_of_packages): + """Convertes a list of gentoolkit.Packages into L{geneticone.Packages}. + @param list_of_packages: the list of packages + @type list_of_packages: list of gentoolkit.Packages + @returns: converted list + @rtype: list of geneticone.Packages""" + return [geneticone.Package(x) for x in list_of_packages] + +def find_best_match (search_key, only_installed = False): + """Finds the best match in the portage tree.""" + t = None + if not only_installed: + t = porttree.dep_bestmatch(search_key) + else: + t = vartree.dep_bestmatch(search_key) + if t: + return geneticone.Package(t) + return None + +def find_packages (search_key, masked=False): + """This returns a list of packages which have to fit exactly. Additionally ranges like '<,>,=,~,!' et. al. are possible.""" + return geneticize_list(gentoolkit.find_packages(search_key, masked)) + +def find_installed_packages (search_key, masked=False): + """This returns a list of installed packages which have to fit exactly. Additionally ranges like '<,>,=,~,!' et. al. are possible.""" + return geneticize_list(gentoolkit.find_installed_packages(search_key, masked)) + +def find_system_packages (name=None): + """Returns a list-tuple (resolved_packages, unresolved_packages) for all system packages.""" + list = gentoolkit.find_system_packages() + return (geneticize_list(list[0]), geneticize_list(list[1])) + +def find_world_packages (): + """Returns a list-tuple (resolved_packages, unresolved_packages) for all packages in the world-file.""" + list = gentoolkit.find_world_packages() + return geneticize_list(list[0]),geneticize_list(list[1]) + +def find_all_installed_packages (name=None): + """Returns a list of all installed packages matching ".*name.*". + Returns ALL installed packages if name is None.""" + return geneticize_list(gentoolkit.find_all_installed_packages(find_lambda(name))) + +def find_all_uninstalled_packages (name=None): + """Returns a list of all uninstalled packages matching ".*name.*". + Returns ALL uninstalled packages if name is None.""" + return geneticize_list(gentoolkit.find_all_uninstalled_packages(find_lambda(name))) + +def find_all_packages (name=None): + """Returns a list of all packages matching ".*name.*". + Returns ALL packages if name is None.""" + return geneticize_list(gentoolkit.find_all_packages(find_lambda(name))) + +def find_all_world_files (name=None): + """Returns a list of all world packages matching ".*name.*". + Returns ALL world packages if name is None.""" + world = filter(find_lambda(name), [x.get_cpv() for x in find_world_packages()[0]]) + world = unique_array(world) + return [geneticone.Package(x) for x in world] + +def find_all_system_files (name=None): + """Returns a list of all system packages matching ".*name.*". + Returns ALL system packages if name is None.""" + sys = filter(find_lambda(name), [x.get_cpv() for x in find_system_packages()[0]]) + sys = unique_array(sys) + return [geneticone.Package(x) for x in sys] + +def list_categories (name=None): + """Returns a list of categories matching ".*name.*" or all categories.""" + categories = gentoolkit.settings.categories + return filter(find_lambda(name), categories) + +def split_package_name (name): + """Returns a list in the form [category, name, version, revision]. Revision will + be 'r0' if none can be inferred. Category and version will be empty, if none can + be inferred.""" + return gentoolkit.split_package_name(name) + +def sort_package_list(pkglist): + """Sorts a package list in the same manner portage does.""" + return gentoolkit.sort_package_list(pkglist) + +def am_i_root (): + """Returns True if the current user is root, False otherwise.""" + if os.getuid() == 0: + return True + else: + return False + +use_descs = {} +local_use_descs = {} +def get_use_desc (flag, package = None): + """Returns the description of a specific useflag or None if no desc was found. + If a package is given (in the / format) the local use descriptions are searched too. + In the first run the dictionaries 'use_descs' and 'local_use_descs' are filled.""" + # fill cache if needed + if use_descs == {} or local_use_descs == {}: + # read use.desc + fd = open(gentoolkit.settings["PORTDIR"]+"/profiles/use.desc") + for line in fd.readlines(): + line = line.strip() + if line != "" and line[0] != '#': + fields = [x.strip() for x in line.split(" - ",1)] + if len(fields) == 2: + use_descs[fields[0]] = fields[1] + + # read use.local.desc + fd = open(gentoolkit.settings["PORTDIR"]+"/profiles/use.local.desc") + for line in fd.readlines(): + line = line.strip() + if line != "" and line[0] != '#': + fields = [x.strip() for x in line.split(":",1)] + if len(fields) == 2: + if not fields[0] in local_use_descs: # create + local_use_descs[fields[0]] = {} + subfields = [x.strip() for x in fields[1].split(" - ",1)] + if len(subfields) == 2: + local_use_descs[fields[0]][subfields[0]] = subfields[1] + + # start + desc = None + if flag in use_descs: + desc = use_descs[flag] + if package != None: + if package in local_use_descs: + if flag in local_use_descs[package]: + desc = local_use_descs[package][flag] + return desc -- cgit v1.2.3-70-g09d2