[cig-commits] commit: Updating.
Mercurial
hg at geodynamics.org
Mon Nov 24 11:22:51 PST 2008
changeset: 42:e1e00dd011f9
user: LukeHodkinson
date: Fri Mar 07 01:51:29 2008 +0000
files: config/SConfig/Package.py config/SConfig/SConscript config/SConfig/packages/BlasLapack.py config/SConfig/packages/PETSc.py config/SConfig/packages/PICellerator.py config/SConfig/packages/SVNRevision.py config/SConfig/packages/StGermain.py config/SConfig/packages/StgDomain.py config/SConfig/packages/StgFEM.py config/SConfig/packages/__init__.py config/packages/stgMagma.py
description:
Updating.
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/Package.py
--- a/config/SConfig/Package.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/Package.py Fri Mar 07 01:51:29 2008 +0000
@@ -3,7 +3,7 @@ import SConfig
import SConfig
class Package(object):
- def __init__(self, env, options=None, required=True):
+ def __init__(self, env, options=None, required=False):
# Construct this package's name.
self.name = self.__module__.split('.')[-1]
self.option_name = self.name.lower()
@@ -24,9 +24,6 @@ class Package(object):
self.setup_options()
if self.opts:
self.opts.Update(env)
-
- # Is this package essential?
- self.required = required
# Language options.
self.language = 'C' # 'C' | 'CXX' | 'F77'
@@ -76,6 +73,7 @@ class Package(object):
# Private stuff.
self.env = env
self.deps = []
+ self.required = required
self.setup_search_defaults()
@@ -146,22 +144,29 @@ class Package(object):
# If we have shared libraries enabled, we must ensure the dynamic loader
# package is included.
if self.require_shared:
- self.pkg_dl = self.require(SConfig.packages.dl)
+ self.pkg_dl = self.dependency(SConfig.packages.dl)
# Process dependencies first.
- self.process_dependencies()
+ result = self.process_dependencies()
+ if not result[0]:
+ self.ctx.Display(' ' + result[2])
+ self.result = result
+ return result
# Process options.
self.process_options()
# Perfrom actual configuration.
+ self.ctx.Message('Checking for package %s ... ' % self.name)
+ self.ctx.Display('\n')
for check in self.checks:
result = check()
- if not result[0]:
+ self.result = result
+ if not self.result[0]:
break
# Required?
- if self.required and not result[0]:
+ if self.required and not self.result[0]:
self.ctx.Display('\nThe required package ' + self.name + ' could not be found.\n')
self.ctx.Display('The printouts above should provide some information on what went wrong,\n')
self.ctx.Display('To see further details, please read the \'config.log\' file.\n')
@@ -174,23 +179,32 @@ class Package(object):
self.env.Exit()
# If we succeeded, store the resulting environment.
- if result[0]:
+ if self.result[0]:
if self.have_define:
self.cpp_defines += [self.have_define]
self.build_state()
self.push_state(self.state)
- return result
-
- def require(self, package_module):
+ # Display results.
+ if not self.result[0] and self.result[2]:
+ self.ctx.Display(' ' + self.result[2])
+ self.ctx.Display(' ')
+ self.ctx.Result(self.result[0])
+
+ return self.result
+
+ def dependency(self, package_module, required=True):
pkg = self.env.Package(package_module, self.opts)
- self.deps += [pkg]
+ self.deps += [(pkg, required)]
return pkg
def process_dependencies(self):
"""Ensure all dependencies have been configured before this package."""
- for pkg in self.deps:
+ for pkg, req in self.deps:
pkg.configure(self.ctx)
+ if req and not pkg.result[0]:
+ return [0, '', 'Missing dependency: ' + pkg.name]
+ return [1, '', '']
def process_options(self):
"""Do any initial option processing, including importing any values from
@@ -208,24 +222,16 @@ class Package(object):
def find_package(self):
# Search for package locations.
- self.ctx.Message('Checking for package %s ... ' % self.name)
- self.ctx.Display('\n Searching locations:\n')
+ self.ctx.Display(' Searching locations:\n')
for loc in self.generate_locations():
result = self.check_location(loc)
self.ctx.Display(' %s\n' % str(loc))
-
- # If we succeeded, back out here.
- if result[0]:
- break
-
- # Display an error message.
- if result[2]:
+ if result[0]: # If we succeeded, back out here.
+ break
+ if result[2]: # Display an error message.
self.ctx.Display(' %s\n' % result[2])
- # Display results.
- self.ctx.Display(' ')
- self.ctx.Result(result[0])
-
+ result = [result[0], '', '']
return result
def check_location(self, location):
@@ -531,7 +537,7 @@ int main(int argc, char* argv[]) {
if not self.result[0]:
return
headers += [h for h in self.hdrs if h not in headers]
- for d in self.deps:
+ for d, r in self.deps:
d.get_all_headers(headers)
def get_header_source(self, headers=None):
@@ -540,7 +546,7 @@ int main(int argc, char* argv[]) {
hdrs = list(self.hdrs)
else:
hdrs = list(headers)
- for d in self.deps:
+ for d, r in self.deps:
d.get_all_headers(hdrs)
for h in hdrs:
src += '#include<' + h + '>\n'
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/SConscript
--- a/config/SConfig/SConscript Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/SConscript Fri Mar 07 01:51:29 2008 +0000
@@ -47,8 +47,23 @@ def load_config(env, filename):
for k, v in d.iteritems():
env[k] = v
+def force_required(pkg):
+ for d in pkg.deps:
+ d.required = True
+ force_required(d)
+
def configure_packages(env, options=None, output='config.cfg'):
sconf = Configure(env, custom_tests={'CheckPackages': CheckPackages})
+
+ # Update dependencies and requirements.
+ pkgs_rem = list(env.package_list)
+ while len(pkgs_rem):
+ pkg = pkgs_rem.pop()
+ if pkg.required:
+ for d, r in pkg.deps:
+ if r and not d.required:
+ d.required = True
+ pkgs_rem += [d]
# Call the packages checker.
sconf.CheckPackages(env.package_list)
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/BlasLapack.py
--- a/config/SConfig/packages/BlasLapack.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/BlasLapack.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,7 +4,7 @@ class BlasLapack(SConfig.Package):
class BlasLapack(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.cmath = self.require(SConfig.packages.cmath)
+ self.cmath = self.dependency(SConfig.packages.cmath)
self.libraries = [['blas', 'lapack'],
['cblas', 'clapack'],
['mkl', 'mkl_lapack']]
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/PETSc.py
--- a/config/SConfig/packages/PETSc.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/PETSc.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,7 +4,7 @@ class PETSc(SConfig.Package):
class PETSc(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.require(SConfig.packages.MPI)
+ self.dependency(SConfig.packages.MPI)
self.base_patterns = ['petsc*', 'PETSC*', 'PETSc*']
self.header_sub_dir = 'petsc'
self.headers = [['petsc.h',
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/PICellerator.py
--- a/config/SConfig/packages/PICellerator.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/PICellerator.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,9 +4,9 @@ class PICellerator(SConfig.Package):
class PICellerator(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.require(SConfig.packages.StGermain)
- self.require(SConfig.packages.StgDomain)
- self.require(SConfig.packages.StgFEM)
+ self.dependency(SConfig.packages.StGermain)
+ self.dependency(SConfig.packages.StgDomain)
+ self.dependency(SConfig.packages.StgFEM)
self.base_patterns = ['PICellerator*']
self.headers = [[os.path.join('PICellerator', 'PICellerator.h')]]
self.libraries = [['PICellerator']]
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/SVNRevision.py
--- a/config/SConfig/packages/SVNRevision.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/SVNRevision.py Fri Mar 07 01:51:29 2008 +0000
@@ -8,12 +8,13 @@ class SVNRevision(SConfig.Package):
self.define_name = 'VERSION'
self.checkout_path = os.getcwd()
+ def setup_options(self):
+ pass
+
def extract_revision(self):
- print 'Extracting subversion revision number ... ',
svn_path = os.path.join(self.checkout_path, '.svn', 'entries')
if not os.path.exists(svn_path):
- print '\n Could not find .svn directory.'
- return [0, '', '']
+ return [0, '', 'Could not find .svn directory']
f = file(svn_path, 'r')
f.readline()
f.readline()
@@ -21,5 +22,4 @@ class SVNRevision(SConfig.Package):
ver = self.env['ESCAPE']('"' + str(int(f.readline())) + '"')
f.close()
self.cpp_defines += [(self.define_name, ver)]
- print 'okay'
return [1, '', '']
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/StGermain.py
--- a/config/SConfig/packages/StGermain.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/StGermain.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,9 +4,9 @@ class StGermain(SConfig.Package):
class StGermain(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.require(SConfig.packages.cmath)
- self.require(SConfig.packages.libXML2)
- self.require(SConfig.packages.MPI)
+ self.dependency(SConfig.packages.cmath)
+ self.dependency(SConfig.packages.libXML2)
+ self.dependency(SConfig.packages.MPI)
self.base_patterns = ['StGermain*']
self.headers = [[os.path.join('StGermain', 'StGermain.h')]]
self.libraries = [['StGermain']]
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/StgDomain.py
--- a/config/SConfig/packages/StgDomain.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/StgDomain.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,7 +4,7 @@ class StgDomain(SConfig.Package):
class StgDomain(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.require(SConfig.packages.StGermain)
+ self.dependency(SConfig.packages.StGermain)
self.base_patterns = ['StgDomain*']
self.headers = [[os.path.join('StgDomain', 'StgDomain.h')]]
self.libraries = [['StgDomain']]
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/StgFEM.py
--- a/config/SConfig/packages/StgFEM.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/StgFEM.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,8 +4,8 @@ class StgFEM(SConfig.Package):
class StgFEM(SConfig.Package):
def __init__(self, env, options):
SConfig.Package.__init__(self, env, options)
- self.require(SConfig.packages.StGermain)
- self.require(SConfig.packages.StgDomain)
+ self.dependency(SConfig.packages.StGermain)
+ self.dependency(SConfig.packages.StgDomain)
self.base_patterns = ['StgFEM*']
self.headers = [[os.path.join('StgFEM', 'StgFEM.h')]]
self.libraries = [['StgFEM']]
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/SConfig/packages/__init__.py
--- a/config/SConfig/packages/__init__.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/SConfig/packages/__init__.py Fri Mar 07 01:51:29 2008 +0000
@@ -1,6 +1,7 @@ from libXML2 import libXML2
from libXML2 import libXML2
from MPI import MPI
from PETSc import PETSc
+from PETScExt import PETScExt
from cmath import cmath
from SVNRevision import SVNRevision
from BlasLapack import BlasLapack
diff -r 7bf48ba7b8e2 -r e1e00dd011f9 config/packages/stgMagma.py
--- a/config/packages/stgMagma.py Fri Mar 07 00:31:52 2008 +0000
+++ b/config/packages/stgMagma.py Fri Mar 07 01:51:29 2008 +0000
@@ -4,33 +4,25 @@ import SCons.Script
class stgMagma(SConfig.Package):
def __init__(self, env, options):
- SConfig.Package.__init__(self, env, options)
+ SConfig.Package.__init__(self, env, options, True)
self.checks = [self.setup_environment]
- self.require(SConfig.packages.cmath)
- self.require(SConfig.packages.libXML2)
- self.require(SConfig.packages.MPI)
- self.require(SConfig.packages.SVNRevision)
- self.require(SConfig.packages.BlasLapack)
- self.require(SConfig.packages.PETSc)
- self.require(SConfig.packages.HDF5)
+ self.dependency(SConfig.packages.cmath)
+ self.dependency(SConfig.packages.libXML2)
+ self.dependency(SConfig.packages.MPI)
+ self.dependency(SConfig.packages.SVNRevision)
+ self.dependency(SConfig.packages.BlasLapack)
+ self.dependency(SConfig.packages.PETSc)
+ self.dependency(SConfig.packages.HDF5)
if self.env['with_glucifer']:
- self.require(SConfig.packages.OpenGL)
- mesa = self.require(SConfig.packages.OSMesa)
- mesa.required = False
- x11 = self.require(SConfig.packages.X11)
- x11.required = False
- sdl = self.require(SConfig.packages.SDL)
- sdl.required = False
- avc = self.require(SConfig.packages.libavcodec)
- avc.required = False
- fame = self.require(SConfig.packages.libFAME)
- fame.required = False
- png = self.require(SConfig.packages.libPNG)
- png.required = False
- jpg = self.require(SConfig.packages.libJPEG)
- jpg.required = False
- tiff = self.require(SConfig.packages.libTIFF)
- tiff.required = False
+ 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)
def setup_options(self):
SConfig.Package.setup_options(self)
More information about the CIG-COMMITS
mailing list