Boost logo

Boost-Commit :

From: juergen.hunold_at_[hidden]
Date: 2008-07-23 05:57:42


Author: jhunold
Date: 2008-07-23 05:57:41 EDT (Wed, 23 Jul 2008)
New Revision: 47702
URL: http://svn.boost.org/trac/boost/changeset/47702

Log:
Fix: Loading of parent projects.
Ref: Add typechecks for glob-rules.
Fix: Working "glob-in-parents"
ToDo: Rework path.py

Text files modified:
   branches/build/python_port/python/boost/build/build/project.py | 33 ++++++++++++++++-----------------
   branches/build/python_port/python/boost/build/util/path.py | 23 ++++++++++++++++++++---
   2 files changed, 36 insertions(+), 20 deletions(-)

Modified: branches/build/python_port/python/boost/build/build/project.py
==============================================================================
--- branches/build/python_port/python/boost/build/build/project.py (original)
+++ branches/build/python_port/python/boost/build/build/project.py 2008-07-23 05:57:41 EDT (Wed, 23 Jul 2008)
@@ -172,7 +172,7 @@
             print "error: Did not find Jamfile or project-root.jam in any parent directory."
             sys.exit(1)
     
- return load(os.path.dirname(found[0]))
+ return self.load(os.path.dirname(found[0]))
 
     def act_as_jamfile(self, module, location):
         """Makes the specified 'module' act as if it were a regularly loaded Jamfile
@@ -212,7 +212,7 @@
         
             project_module = self.module_name(location)
             if not project_module in self.jamfile_modules and \
- boost.build.util.path.glob(location, self.JAMROOT + self.JAMFILE):
+ boost.build.util.path.glob([location], self.JAMROOT + self.JAMFILE):
                 project_module = self.load(location)
 
         return project_module
@@ -251,7 +251,7 @@
         else:
             jamfile = self.dir2jamfile.get(dir)
             if not jamfile:
- jamfile = boost.build.util.path.glob(dir, self.JAMFILE)
+ jamfile = boost.build.util.path.glob([dir], self.JAMFILE)
                 self.dir2jamfile[dir] = jamfile
             jamfile_glob = jamfile
 
@@ -286,8 +286,7 @@
         Effect of calling this rule twice with the same 'dir' is underfined."""
       
         # See if the Jamfile is where it should be.
-
- jamfile_to_load = boost.build.util.path.glob(dir, self.JAMROOT)
+ jamfile_to_load = boost.build.util.path.glob([dir], self.JAMROOT)
         if not jamfile_to_load:
             jamfile_to_load = self.find_jamfile(dir)
         else:
@@ -311,7 +310,7 @@
         # loaded the current Jamfile with use-project. Do a final check to make
         # sure it's not loaded already.
         if not jamfile_module in self.jamfile_modules:
- self.jamfile_modules[jamfile_module] = 1
+ self.jamfile_modules[jamfile_module] = True
 
             # FIXME:
             # mark-as-user $(jamfile-module) ;
@@ -395,16 +394,16 @@
         else:
             attributes.set("source-location", "", exact=1)
 
- attributes.set("requirements", property_set.empty(), exact=1)
- attributes.set("usage-requirements", property_set.empty(), exact=1)
- attributes.set("default-build", [], exact=1)
- attributes.set("projects-to-build", [], exact=1)
- attributes.set("project-root", None, exact=1)
- attributes.set("build-dir", None, exact=1)
+ attributes.set("requirements", property_set.empty(), exact=True)
+ attributes.set("usage-requirements", property_set.empty(), exact=True)
+ attributes.set("default-build", [], exact=True)
+ attributes.set("projects-to-build", [], exact=True)
+ attributes.set("project-root", None, exact=True)
+ attributes.set("build-dir", None, exact=True)
         
         self.project_rules_.init_project(module_name)
 
- jamroot = 0
+ jamroot = False
 
         parent_module = None;
         if module_name == "site-config":
@@ -422,7 +421,7 @@
             # If it's jamroot, inherit from user-config.
             if location:
                 parent_module = "user-config" ;
- jamroot = 1 ;
+ jamroot = True ;
                 
         if parent_module:
             self.inherit_attributes(module_name, parent_module)
@@ -461,9 +460,9 @@
         # [ path.make [ modules.binding $(parent-module) ] ] ] ;
         # }
         
- attributes.set("project-root", pattributes.get("project-root"), exact=1)
- attributes.set("default-build", pattributes.get("default-build"), exact=1)
- attributes.set("requirements", pattributes.get("requirements"), exact=1)
+ attributes.set("project-root", pattributes.get("project-root"), exact=True)
+ attributes.set("default-build", pattributes.get("default-build"), exact=True)
+ attributes.set("requirements", pattributes.get("requirements"), exact=True)
         attributes.set("usage-requirements",
                        pattributes.get("usage-requirements"), exact=1)
 

Modified: branches/build/python_port/python/boost/build/util/path.py
==============================================================================
--- branches/build/python_port/python/boost/build/util/path.py (original)
+++ branches/build/python_port/python/boost/build/util/path.py 2008-07-23 05:57:41 EDT (Wed, 23 Jul 2008)
@@ -835,8 +835,14 @@
         [ glob . : *.cpp ]
         [ glob . : */build/Jamfile ]
     """
+
+ assert(isinstance(patterns, list))
+ assert(isinstance(dirs, list))
+
     if not exclude_patterns:
         exclude_patterns = []
+ else:
+ assert(isinstance(exclude_patterns, list))
 
     real_patterns = [os.path.join(d, p) for p in patterns for d in dirs]
     real_exclude_patterns = [os.path.join(d, p) for p in exclude_patterns
@@ -867,14 +873,25 @@
     return result
 
 def glob_in_parents(dir, patterns, upper_limit=None):
+ """Recursive version of GLOB which globs upward.
+ FixMe: This is not an optimal solution"""
+
+ assert(isinstance(dir, str))
+ assert(isinstance(patterns, list))
+
     result = []
- absolute_dir = os.path.join(os.getcwd(), dir)
 
+ # first, go up one directory
+ absolute_dir = os.path.join(os.path.split(os.getcwd())[0], dir)
     while absolute_dir:
- result = glob(absolute_dir, patterns)
+ result = glob([absolute_dir], patterns)
         if result:
             break
- absolute_dir = os.path.dirname(absolute_dir)
+ new_dir = os.path.join(os.path.split(absolute_dir)[0], dir)
+ # If we can not get up, exit with empty result
+ if new_dir == absolute_dir:
+ break
+ absolute_dir = new_dir
 
     return result
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk