[cig-commits] commit: Some updates to how HDF5 configures.

Mercurial hg at geodynamics.org
Mon Nov 24 11:22:58 PST 2008


changeset:   64:676d90f8b0e8
user:        LukeHodkinson
date:        Fri Mar 28 02:52:23 2008 +0000
files:       StgSCons config/SConfig/Node.py config/SConfig/Package.py config/SConfig/SConscript config/SConfig/packages/HDF5.py config/packages/stgMagma.py
description:
Some updates to how HDF5 configures.


diff -r 9a5fcf16bce3 -r 676d90f8b0e8 StgSCons
--- a/StgSCons	Fri Mar 28 01:21:04 2008 +0000
+++ b/StgSCons	Fri Mar 28 02:52:23 2008 +0000
@@ -274,9 +274,9 @@ int main( int argc, char* argv[] ) {
 """ % (hdrs, suites)
     src_filename = os.path.join(env["buildPath"], env.project_name, 
                                 "test" + env.project_name + ".c")
-    if not os.path.exists(os.path.dirname(File(src_filename).path)):
-        os.makedirs(os.path.dirname(File(src_filename).path))
-    f = open(File(src_filename).path, "w")
+    if not os.path.exists(os.path.dirname(File(src_filename).abspath)):
+        os.makedirs(os.path.dirname(File(src_filename).abspath))
+    f = open(File(src_filename).abspath, "w")
     f.write(src)
     f.close()
     bin_filename = os.path.join(env["buildPath"], "bin", "test" + env.project_name)
diff -r 9a5fcf16bce3 -r 676d90f8b0e8 config/SConfig/Node.py
--- a/config/SConfig/Node.py	Fri Mar 28 01:21:04 2008 +0000
+++ b/config/SConfig/Node.py	Fri Mar 28 02:52:23 2008 +0000
@@ -31,14 +31,14 @@ class Node(object):
         """Setup all the options for this package."""
         pass
 
-    def dependency(self, package_module, required=True):
+    def dependency(self, package_module, required=True, **kw):
         """Add another package as a dependency of this package. If required is False, the
         dependent package is not required, and thus will not cause this package to fail if
         it cannot be found."""
         if self.configured:
             print 'Error: Cannot add a dependency during configuration.'
             self.env.Exit()
-        pkg = self.env.Package(package_module, self.opts)
+        pkg = self.env.Package(package_module, self.opts, **kw)
         if pkg not in [d[0] for d in self.deps]:
             self.deps += [(pkg, required)]
         return pkg
diff -r 9a5fcf16bce3 -r 676d90f8b0e8 config/SConfig/Package.py
--- a/config/SConfig/Package.py	Fri Mar 28 01:21:04 2008 +0000
+++ b/config/SConfig/Package.py	Fri Mar 28 02:52:23 2008 +0000
@@ -248,6 +248,8 @@ int main(int argc, char* argv[]) {
         for l in libraries:
             if self.shared_libraries and l not in self.shared_libraries:
                 continue
+            if l in self.extra_libraries:
+                continue
             offs = ''
             for p in self.generate_library_paths(location, l):
                 offs += '  '
diff -r 9a5fcf16bce3 -r 676d90f8b0e8 config/SConfig/SConscript
--- a/config/SConfig/SConscript	Fri Mar 28 01:21:04 2008 +0000
+++ b/config/SConfig/SConscript	Fri Mar 28 02:52:23 2008 +0000
@@ -1,4 +1,4 @@ import os
-import os
+import os, sys
 import SConfig
 from SCons.Script.SConscript import SConsEnvironment
 
@@ -6,14 +6,20 @@ from SCons.Script.SConscript import SCon
 # Setup the Package system.
 #
 
-def Package(env, pkg_module, options, required=False):
+def Package(env, pkg_module, options, required=False, **kw):
     """Create a new package to be configured."""
     if not hasattr(env, 'packages'):
         env.packages = {}
         env.package_list = []
     if not pkg_module in env.packages:
-        env.packages[pkg_module] = pkg_module(env, options, required)
-        env.package_list += [env.packages[pkg_module]]
+        pkg = pkg_module(env, options, required)
+        for attr, val in kw.iteritems():
+            if not hasattr(pkg, attr):
+                print 'Package does not have attribute!'
+                sys.exit()
+            setattr(pkg, attr, val)
+        env.packages[pkg_module] = pkg
+        env.package_list += [pkg]
     return env.packages[pkg_module]
 
 def CheckPackages(ctx, pkg_list):
diff -r 9a5fcf16bce3 -r 676d90f8b0e8 config/SConfig/packages/HDF5.py
--- a/config/SConfig/packages/HDF5.py	Fri Mar 28 01:21:04 2008 +0000
+++ b/config/SConfig/packages/HDF5.py	Fri Mar 28 02:52:23 2008 +0000
@@ -35,7 +35,6 @@ MPI_Finalize();
                         if line.find("Extra libraries") != -1:
                             dict = self.env.ParseFlags(line.split(":")[1])
                             extra_libs = dict.get('LIBS', [])
-                            break
             old_libs = self.extra_libraries
             self.extra_libraries += extra_libs
             yield loc
diff -r 9a5fcf16bce3 -r 676d90f8b0e8 config/packages/stgMagma.py
--- a/config/packages/stgMagma.py	Fri Mar 28 01:21:04 2008 +0000
+++ b/config/packages/stgMagma.py	Fri Mar 28 02:52:23 2008 +0000
@@ -5,24 +5,25 @@ class stgMagma(SConfig.Node):
 class stgMagma(SConfig.Node):
     def __init__(self, scons_env, scons_opts, required=False):
         SConfig.Node.__init__(self, scons_env, scons_opts, required)
-        self.dependency(SConfig.packages.cmath)
-        self.dependency(SConfig.packages.libXML2)
-        self.dependency(SConfig.packages.MPI)
+        shared = self.env['shared_libraries']
+        self.dependency(SConfig.packages.cmath, require_shared=shared)
+        self.dependency(SConfig.packages.libXML2, require_shared=shared)
+        self.dependency(SConfig.packages.MPI, require_shared=shared)
         self.svnrevision = self.dependency(SConfig.packages.SVNRevision)
-        self.dependency(SConfig.packages.BlasLapack)
-        self.dependency(SConfig.packages.PETSc)
-        self.dependency(SConfig.packages.PETScExt)
-        self.dependency(SConfig.packages.HDF5).require_parallel = True
+        self.dependency(SConfig.packages.BlasLapack, require_shared=shared)
+        self.dependency(SConfig.packages.PETSc, require_shared=shared)
+        self.dependency(SConfig.packages.PETScExt, require_shared=shared)
+        self.dependency(SConfig.packages.HDF5, require_shared=shared, require_parallel=True)
         if self.env['with_glucifer']:
-            self.dependency(SConfig.packages.OpenGL)
-            self.dependency(SConfig.packages.OSMesa, False)
-            self.dependency(SConfig.packages.X11, False)
-            self.dependency(SConfig.packages.SDL, False)
-            self.dependency(SConfig.packages.libavcodec, False)
-            self.dependency(SConfig.packages.libFAME, False)
-            self.dependency(SConfig.packages.libPNG, False)
-            self.dependency(SConfig.packages.libJPEG, False)
-            self.dependency(SConfig.packages.libTIFF, False)
+            self.dependency(SConfig.packages.OpenGL, require_shared=shared)
+            self.dependency(SConfig.packages.OSMesa, False, require_shared=shared)
+            self.dependency(SConfig.packages.X11, False, require_shared=shared)
+            self.dependency(SConfig.packages.SDL, False, require_shared=shared)
+            self.dependency(SConfig.packages.libavcodec, False, require_shared=shared)
+            self.dependency(SConfig.packages.libFAME, False, require_shared=shared)
+            self.dependency(SConfig.packages.libPNG, False, require_shared=shared)
+            self.dependency(SConfig.packages.libJPEG, False, require_shared=shared)
+            self.dependency(SConfig.packages.libTIFF, False, require_shared=shared)
 
     def setup_options(self):
         SConfig.Node.setup_options(self)



More information about the CIG-COMMITS mailing list