From c8f9e92d1da597fbc8c64dee026bcde55c5bfa1e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 25 May 2008 04:15:50 +0000 Subject: Bug #223417 - Make the vardbapi.cpv_all() use_cache parameter useful for forcing direct os.listdir() calls. This is more of an issue now that these listdir() calls are frequently triggered when merging packages (due to things like blocker and preserve-libs handling). (trunk r10390) svn path=/main/branches/2.1.2/; revision=10406 --- pym/portage.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'pym/portage.py') diff --git a/pym/portage.py b/pym/portage.py index 85b9bf670..cf38107df 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -6764,8 +6764,25 @@ class vardbapi(dbapi): return returnme def cpv_all(self, use_cache=1): + """ + Set use_cache=0 to bypass the portage.cachedir() cache in cases + when the accuracy of mtime staleness checks should not be trusted + (generally this is only necessary in critical sections that + involve merge or unmerge of packages). + """ returnme = [] basepath = os.path.join(self.root, VDB_PATH) + os.path.sep + + if use_cache: + from portage import listdir + else: + def listdir(p, **kwargs): + try: + return [x for x in os.listdir(p) \ + if os.path.isdir(os.path.join(p, x))] + except EnvironmentError: + return [] + for x in listdir(basepath, EmptyOnError=1, ignorecvs=1, dirsonly=1): if self._excluded_dirs.match(x) is not None: continue -- cgit v1.2.3-1-g7c22