$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r67656 - in sandbox/numpy: boost/python/numpy site_scons
From: talljimbo_at_[hidden]
Date: 2011-01-04 14:19:24
Author: jbosch
Date: 2011-01-04 14:19:20 EST (Tue, 04 Jan 2011)
New Revision: 67656
URL: http://svn.boost.org/trac/boost/changeset/67656
Log:
numpy - updates to site_scons, header documentation
Text files modified: 
   sandbox/numpy/boost/python/numpy/invoke_matching.hpp |     4 +-                                      
   sandbox/numpy/site_scons/scons_tools.py              |    44 ++++++++++++++++++++++++++++----------- 
   2 files changed, 33 insertions(+), 15 deletions(-)
Modified: sandbox/numpy/boost/python/numpy/invoke_matching.hpp
==============================================================================
--- sandbox/numpy/boost/python/numpy/invoke_matching.hpp	(original)
+++ sandbox/numpy/boost/python/numpy/invoke_matching.hpp	2011-01-04 14:19:20 EST (Tue, 04 Jan 2011)
@@ -2,8 +2,8 @@
 #define BOOST_PYTHON_NUMPY_INVOKE_MATCHING_HPP_INCLUDED
 
 /**
- *  @file boost/python/numpy/ndarray.hpp
- *  @brief Object manager and various utilities for numpy.ndarray.
+ *  @file boost/python/numpy/invoke_matching.hpp
+ *  @brief Template invocation based on dtype matching.
  */
 
 #include <boost/python/numpy/dtype.hpp>
Modified: sandbox/numpy/site_scons/scons_tools.py
==============================================================================
--- sandbox/numpy/site_scons/scons_tools.py	(original)
+++ sandbox/numpy/site_scons/scons_tools.py	2011-01-04 14:19:20 EST (Tue, 04 Jan 2011)
@@ -1,5 +1,6 @@
 import SCons.Script as scons
 import re
+import sys
 import os
 
 database = {}
@@ -65,6 +66,12 @@
         for dependency in self.dependencies:
             database[dependency].apply(environment)
 
+    def require(self):        
+        if not all(database[pkg].check() for pkg in self.dependencies):
+            print "Missing dependencies for required package '%s'." % self.name
+            scons.Exit(1)
+
+
 class FlagConfiguration(Configuration):
 
     def _apply(self, environment):
@@ -82,7 +89,6 @@
 
     def _check(self):
         env = MakeEnvironment()
-        context = scons.Configure(env)
         try:
             from distutils.sysconfig import get_config_vars, get_python_inc
         except ImportError:
@@ -98,7 +104,9 @@
         self._flags = [f for f in self._flags if not f.startswith("-O")]
         self._flags.append("-I%s" % get_python_inc())
         self._apply(env)
+        context = scons.Configure(env)
         if not context.CheckHeader(["Python.h"]):
+            context.Finish()
             return False
         context.Finish()
         return True
@@ -112,16 +120,17 @@
 
     def _check(self):
         env = MakeEnvironment()
-        context = scons.Configure(env)
-        self._apply_dependencies(context.env)
+        self._apply_dependencies(env)
         try:
             import numpy.distutils.misc_util
             self._variables = {"CPPPATH": numpy.distutils.misc_util.get_numpy_include_dirs()}
         except ImportError:
-            context.Result(False)
+            print "numpy.distutils.misc_util not found"
             return False
-        self._apply(context.env)
+        self._apply(env)
+        context = scons.Configure(env)
         if not context.CheckHeader(["Python.h", "numpy/arrayobject.h"]):
+            context.Finish()
             return False
         context.Finish()
         return True
@@ -139,14 +148,16 @@
 
     def _check(self):
         env = MakeEnvironment()
+        self._apply_dependencies(env)
+        self._apply(env)
         context = scons.Configure(env)
-        self._apply_dependencies(context.env)
-        self._apply(context.env)
         if self._headers:
             if not context.CheckHeader(self._headers, language="C++"):
+                context.Finish()
                 return False
         if self._libraries:
             if not context.CheckLib(self._libraries, language="C++"):
+                context.Finish()
                 return False
             self._variables = {"LIBS": self._libraries}
         context.Finish()
@@ -195,9 +206,12 @@
         env.Execute(scons.Touch(target))
 
 def RunPythonUnitTest(target, source, env):
-    path, filename = os.path.split(source[0].abspath)
-    if not env.Execute("cd %s; python %s" % (path, filename)):
+    path, filename = os.path.split(target[0].abspath)
+    env["ENV"]["TESTPATH"] = path
+    env["ENV"]["PYTHONPATH"] = ":".join([path] + env["ENV"]["PYTHONPATH"].split(":"))
+    if not env.Execute('%s %s' % (sys.executable, source[0].abspath)):
         env.Execute(scons.Touch(target))
+    env["ENV"]["PYTHONPATH"] = ":".join(env["ENV"]["PYTHONPATH"].split(":")[1:])
 
 def BoostUnitTest(env, name, source):
     try:
@@ -205,12 +219,12 @@
     except KeyError:
         libs = "boost_unit_test_framework"
     bin = env.Program(name, source, LIBS=libs)
-    run = env.Command(".%s.succeeded" % name, name, RunProgramUnitTest)
+    run = env.Command(".%s.succeeded" % str(name), name, RunProgramUnitTest)
     env.Depends(run, bin)
     return run
 
 def PythonUnitTest(env, script, dependencies):
-    run = env.Command(".%s.succeeded" % script, script, RunPythonUnitTest)
+    run = env.Command(".%s.succeeded" % str(script), script, RunPythonUnitTest)
     env.Depends(run, dependencies)
     return run
 
@@ -219,7 +233,9 @@
         database[package].apply(env)
 
 def MakeEnvironment():
-    env = scons.Environment()
+    env = scons.Environment(tools = ["default", "doxygen"])
+    env.Append(CPPPATH="#include")
+    env.Append(LIBPATH="#lib")
     env.AddMethod(RecursiveInstall, "RecursiveInstall")
     env.AddMethod(SetupPackages, "SetupPackages")
     env.AddMethod(BoostUnitTest, "BoostUnitTest")
@@ -227,10 +243,12 @@
     for var in ("PATH", "LD_LIBRARY_PATH", "PYTHONPATH", "PKG_CONFIG_PATH"):
         if os.environ.has_key(var):
             env["ENV"][var] = os.environ[var]
+        else:
+            env["ENV"][var] = ""
     debug = scons.ARGUMENTS.get('debug', 0)
     if int(debug):
         env.Replace(CCFLAGS=["-Wall","-g","-O0"])
     else:
         env.Replace(CCFLAGS=["-Wall","-O2"])
-        env.Append(CPPDEFINES="NDEBUG")
+        env.Append(CPPDEFINES=["NDEBUG"])
     return env