[cig-commits] commit: Wasn't configuring for parallel HDF5, so I've
Mercurial
hg at geodynamics.org
Mon Nov 24 11:22:58 PST 2008
changeset: 63:9a5fcf16bce3
user: LukeHodkinson
date: Fri Mar 28 01:21:04 2008 +0000
files: config/SConfig/Package.py config/SConfig/packages/HDF5.py config/packages/stgMagma.py
description:
Wasn't configuring for parallel HDF5, so I've
added some symbol checks for this. Also, I've
added a mechanism for including extra libraries
required by certain packages.
diff -r 1483f61ab37e -r 9a5fcf16bce3 config/SConfig/Package.py
--- a/config/SConfig/Package.py Thu Mar 27 23:48:58 2008 +0000
+++ b/config/SConfig/Package.py Fri Mar 28 01:21:04 2008 +0000
@@ -22,6 +22,7 @@ class Package(SConfig.Node):
# Library options.
self.libraries = [] #[['']]
+ self.extra_libraries = [] #['']
self.shared_libraries = [] # Only libraries listed here will be considered
# when checking for shared libraries.
self.require_shared = False
@@ -371,9 +372,9 @@ int main(int argc, char* argv[]) {
def generate_libraries(self, location):
if location[3]: # Try any frameworks by themselves first.
- yield []
+ yield self.extra_libraries
for libs in self.libraries:
- yield libs
+ yield libs + self.extra_libraries
def enable_location_state(self, location):
"""Modify our environment to include search paths for the current location."""
diff -r 1483f61ab37e -r 9a5fcf16bce3 config/SConfig/packages/HDF5.py
--- a/config/SConfig/packages/HDF5.py Thu Mar 27 23:48:58 2008 +0000
+++ b/config/SConfig/packages/HDF5.py Fri Mar 28 01:21:04 2008 +0000
@@ -4,5 +4,45 @@ class HDF5(SConfig.Package):
class HDF5(SConfig.Package):
def __init__(self, scons_env, scons_opts, required=False):
SConfig.Package.__init__(self, scons_env, scons_opts, required)
- self.headers = [['hdf5.h']]
- self.libraries = [['hdf5']]
+ self.require_parallel = False
+ self.headers = [["hdf5.h"]]
+ self.libraries = [["hdf5"]]
+
+ def setup(self):
+ if self.require_parallel:
+ self.dependency(SConfig.packages.MPI)
+ self.symbols = [(["H5Pset_dxpl_mpio", "H5Pset_fapl_mpio"], "")]
+ self.symbol_calls = ["%s( dxpl_props, H5FD_MPIO_COLLECTIVE );",
+ "%s( fapl_props, MPI_COMM_WORLD, MPI_INFO_NULL );"]
+ self.symbol_setup = """hid_t dxpl_props, fapl_props;
+MPI_Init( &argc, &argv );
+dxpl_props = H5Pcreate( H5P_DATASET_XFER );
+fapl_props = H5Pcreate( H5P_FILE_ACCESS );
+"""
+ self.symbol_teardown = """H5Pclose( dxpl_props );
+H5Pclose( fapl_props );
+MPI_Finalize();
+"""
+
+ def generate_locations(self):
+ for loc in SConfig.Package.generate_locations(self):
+ extra_libs = []
+ for lib_dir in loc[2]:
+ set_file = os.path.join(loc[0], lib_dir, "libhdf5.settings")
+ if os.path.exists(set_file):
+ f = open(set_file, "r")
+ for line in f.readlines():
+ 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
+ self.extra_libraries = old_libs
+
+ def get_check_symbols_fail_reason(self, fail_logs):
+ for log in fail_logs:
+ if log.find("_mpio'"):
+ return "Not a parallel HDF5 implementation."
+ return ''
diff -r 1483f61ab37e -r 9a5fcf16bce3 config/packages/stgMagma.py
--- a/config/packages/stgMagma.py Thu Mar 27 23:48:58 2008 +0000
+++ b/config/packages/stgMagma.py Fri Mar 28 01:21:04 2008 +0000
@@ -12,7 +12,7 @@ class stgMagma(SConfig.Node):
self.dependency(SConfig.packages.BlasLapack)
self.dependency(SConfig.packages.PETSc)
self.dependency(SConfig.packages.PETScExt)
- self.dependency(SConfig.packages.HDF5)
+ self.dependency(SConfig.packages.HDF5).require_parallel = True
if self.env['with_glucifer']:
self.dependency(SConfig.packages.OpenGL)
self.dependency(SConfig.packages.OSMesa, False)
More information about the CIG-COMMITS
mailing list