Use a recursive function to simplify the walking of the profile paths. The number...
authorZac Medico <zmedico@gentoo.org>
Thu, 3 Aug 2006 02:27:47 +0000 (02:27 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 3 Aug 2006 02:27:47 +0000 (02:27 -0000)
svn path=/main/trunk/; revision=4091

pym/portage.py

index 7aef151e0414d55d5beca30ffa2c604da89d0fe6..feb431dab659801f865fd8af47362b28976f7b40 100644 (file)
@@ -886,23 +886,26 @@ class config:
                        if self.profile_path is None:
                                self.profiles = []
                        else:
-                               self.profiles = [os.path.realpath(self.profile_path)]
-                               mypath = self.profiles[0]
-                               while os.path.exists(os.path.join(mypath, "parent")):
-                                       parents_file = os.path.join(mypath, "parent")
-                                       parents = grabfile(parents_file)
-                                       if len(parents) != 1:
-                                               raise portage_exception.ParseError(
-                                                       "Expected 1 parent and got %i: '%s'" % \
-                                                       (len(parents), parents_file))
-                                       mypath = normalize_path(os.path.join(
-                                               mypath, parents[0]))
-                                       if os.path.exists(mypath):
-                                               self.profiles.insert(0, mypath)
-                                       else:
-                                               raise portage_exception.ParseError(
-                                                       "Specified parent not found: '%s'" %  parents_file)
-
+                               self.profiles = []
+                               def addProfile(currentPath):
+                                       parentsFile = os.path.join(currentPath, "parent")
+                                       if os.path.exists(parentsFile):
+                                               parents = grabfile(parentsFile)
+                                               if len(parents) != 1:
+                                                       raise portage_exception.ParseError(
+                                                               "Expected 1 parent and got %i: '%s'" % \
+                                                               (len(parents), parents_file))
+                                               for parentPath in parents:
+                                                       parentPath = normalize_path(os.path.join(
+                                                               currentPath, parentPath))
+                                                       if os.path.exists(parentPath):
+                                                               addProfile(parentPath)
+                                                       else:
+                                                               raise portage_exception.ParseError(
+                                                                       "Parent '%s' not found: '%s'" %  \
+                                                                       (parentPath, parentsFile))
+                                       self.profiles.append(currentPath)
+                               addProfile(os.path.realpath(self.profile_path))
                        if os.environ.has_key("PORTAGE_CALLER") and os.environ["PORTAGE_CALLER"] == "repoman":
                                pass
                        else: