From d4957b4ff624f352ab1855d4d023b7c7dd90abc7 Mon Sep 17 00:00:00 2001 From: Alec Warner Date: Tue, 16 Jan 2007 00:42:01 +0000 Subject: merge glep42 into trunk svn path=/main/trunk/; revision=5658 --- pym/portage.py | 57 ++++++++++++++++++++++++++++++++++++++++++++-------- pym/portage_const.py | 3 +++ 2 files changed, 52 insertions(+), 8 deletions(-) (limited to 'pym') diff --git a/pym/portage.py b/pym/portage.py index c867769c5..3cbe7114d 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -71,7 +71,7 @@ try: MOVE_BINARY, PRELINK_BINARY, WORLD_FILE, MAKE_CONF_FILE, MAKE_DEFAULTS_FILE, \ DEPRECATED_PROFILE_FILE, USER_VIRTUALS_FILE, EBUILD_SH_ENV_FILE, \ INVALID_ENV_FILE, CUSTOM_MIRRORS_FILE, CONFIG_MEMORY_FILE,\ - INCREMENTALS, EAPI, MISC_SH_BINARY + INCREMENTALS, EAPI, MISC_SH_BINARY, REPO_NAME_LOC, REPO_NAME_FILE from portage_data import ostype, lchown, userland, secpass, uid, wheelgid, \ portage_uid, portage_gid, userpriv_groups @@ -4527,19 +4527,34 @@ def getmaskingstatus(mycpv, settings=None, portdb=None): return rValue class portagetree: - def __init__(self, root="/", virtual=None, clone=None, settings=None): + def __init__(self, root="/", virtual=None, clone=None, settings=None, portroot=None): + """ + Constructor for a PortageTree + + Note: Portroot was added for GLEP 42 functionality and defaults to the $PORTDIR + env variable. + + @param root: ${ROOT}, defaults to '/', see make.conf(5) + @type root: String/Path + @param virtual: UNUSED + @type virtual: No Idea + @param clone: Set this if you want a copy of Clone + @type clone: Existing portagetree Instance + @param settings: Portage Configuration object (portage.settings) + @type settings: Instance of portage.config + """ if clone: - self.root=clone.root - self.portroot=clone.portroot - self.pkglines=clone.pkglines + self.root = clone.root + self.portroot = clone.portroot + self.pkglines = clone.pkglines else: - self.root=root + self.root = root if settings is None: settings = globals()["settings"] self.settings = settings - self.portroot=settings["PORTDIR"] - self.virtual=virtual + self.portroot = settings["PORTDIR"] + self.virtual = virtual self.dbapi = portdbapi( settings["PORTDIR"], mysettings=settings) @@ -5532,6 +5547,14 @@ class portdbapi(dbapi): self.porttrees = [self.porttree_root] + \ [os.path.realpath(t) for t in self.mysettings["PORTDIR_OVERLAY"].split()] + self.treemap = {} + for path in self.porttrees: + try: + repo_name = open( os.path.join( path , REPO_NAME_LOC ) ,'r').readline().rstrip() + self.treemap[repo_name] = path + except (OSError,IOError): + pass + self.auxdbmodule = self.mysettings.load_best_module("portdbapi.auxdbmodule") self.auxdb = {} self._init_cache_dirs() @@ -5603,6 +5626,24 @@ class portdbapi(dbapi): def findname(self,mycpv): return self.findname2(mycpv)[0] + def getRepositoryPath( self, repository_id ): + """ + This function is required for GLEP 42 compliance; given a valid repository ID + it must return a path to the repository + TreeMap = { id:path } + """ + if repository_id in self.treemap: + return self.treemap[repository_id] + return None + + def getRepositories( self ): + """ + This function is required for GLEP 42 compliance; it will return a list of + repository ID's + TreeMap = { id:path } + """ + return [k for k in self.treemap.keys() if k] + def findname2(self, mycpv, mytree=None): """ Returns the location of the CPV, and what overlay it was in. diff --git a/pym/portage_const.py b/pym/portage_const.py index a5c552f02..f5b392506 100644 --- a/pym/portage_const.py +++ b/pym/portage_const.py @@ -44,6 +44,9 @@ CUSTOM_MIRRORS_FILE = USER_CONFIG_PATH+"/mirrors" CONFIG_MEMORY_FILE = PRIVATE_PATH + "/config" COLOR_MAP_FILE = USER_CONFIG_PATH + "/color.map" +REPO_NAME_FILE = "repo_name" +REPO_NAME_LOC = "profiles" + "/" + REPO_NAME_FILE + INCREMENTALS=["USE","USE_EXPAND","USE_EXPAND_HIDDEN","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"] EBUILD_PHASES = ["setup", "unpack", "compile", "test", "install", "preinst", "postinst", "prerm", "postrm", "other"] -- cgit v1.2.3-1-g7c22