summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/moab/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/moab/package.py')
-rw-r--r--var/spack/repos/builtin/packages/moab/package.py164
1 files changed, 123 insertions, 41 deletions
diff --git a/var/spack/repos/builtin/packages/moab/package.py b/var/spack/repos/builtin/packages/moab/package.py
index bd864e0980..f46aaabf0b 100644
--- a/var/spack/repos/builtin/packages/moab/package.py
+++ b/var/spack/repos/builtin/packages/moab/package.py
@@ -25,7 +25,7 @@
from spack import *
-class Moab(Package):
+class Moab(AutotoolsPackage):
"""MOAB is a component for representing and evaluating mesh
data. MOAB can store structured and unstructured mesh, consisting
of elements in the finite element 'zoo.' The functional interface
@@ -34,19 +34,43 @@ class Moab(Package):
optimized for efficiency in space and time, based on access to
mesh in chunks rather than through individual entities, while also
versatile enough to support individual entity access."""
+
homepage = "https://bitbucket.org/fathomteam/moab"
- url = "http://ftp.mcs.anl.gov/pub/fathom/moab-4.9.1.tar.gz"
+ url = "http://ftp.mcs.anl.gov/pub/fathom/moab-5.0.0.tar.gz"
+ version('5.0.0', '1840ca02366f4d3237d44af63e239e3b')
+ version('4.9.2', '540931a604c180bbd3c1bb3ee8c51dd0')
version('4.9.1', '19cc2189fa266181ad9109b18d0b2ab8')
version('4.9.0', '40695d0a159040683cfa05586ad4a7c2')
version('4.8.2', '1dddd10f162fce3cfffaedc48f6f467d')
+ variant('mpi', default=True, description='enable mpi support')
+ variant('hdf5', default=True,
+ description='Required to enable the hdf5 (default I/O) format')
+ variant('netcdf', default=False,
+ description='Required to enable the ExodusII reader/writer.')
+ variant('pnetcdf', default=False,
+ description='Enable pnetcdf (AKA parallel-netcdf) support')
variant('netcdf', default=False,
description='Required to enable the ExodusII reader/writer.')
- variant('shared', default=True,
+ variant('zoltan', default=False, description='Enable zoltan support')
+ variant('cgm', default=False, description='Enable common geometric module')
+ variant('metis', default=True, description='Enable metis link')
+ variant('parmetis', default=True, description='Enable parmetis link')
+ variant('irel', default=False, description='Enable irel interface')
+ variant('fbigeom', default=False, description='Enable fbigeom interface')
+ variant('coupler', default=True, description='Enable mbcoupler tool')
+
+ variant("debug", default=False, description='enable debug symbols')
+ variant('shared', default=False,
description='Enables the build of shared libraries')
variant('fortran', default=True, description='Enable Fortran support')
+ conflicts('+irel', when='~cgm')
+ conflicts('+pnetcdf', when='~mpi')
+ conflicts('+parmetis', when='~mpi')
+ conflicts('+coupler', when='~mpi')
+
# There are many possible variants for MOAB. Here are examples for
# two of them:
#
@@ -55,61 +79,119 @@ class Moab(Package):
# depends_on('cgns', when='+cgns')
# depends_on('vtk', when='+vtk')
- depends_on('mpi')
- depends_on('hdf5+mpi')
+ depends_on('mpi', when='+mpi')
+ depends_on('hdf5', when='+hdf5')
+ depends_on('hdf5+mpi', when='+hdf5+mpi')
depends_on('netcdf', when='+netcdf')
- depends_on('netcdf+mpi', when='+netcdf')
- depends_on('metis')
- depends_on('parmetis')
- depends_on('zoltan')
- depends_on('zoltan~fortran', when='~fortran')
+ depends_on('parallel-netcdf', when='+pnetcdf')
+ depends_on('cgm', when='+cgm')
+ depends_on('metis', when='+metis')
+ depends_on('parmetis', when='+parmetis')
+ # FIXME it seems that zoltan needs to be built without fortran
+ depends_on('zoltan~fortran', when='+zoltan')
- def install(self, spec, prefix):
+ def configure_args(self):
+ spec = self.spec
options = [
- '--prefix=%s' % prefix,
'--enable-optimize',
- '--disable-tools',
- '--disable-mbconvert',
- '--disable-hexmodops',
'--disable-vtkMOABReader',
- '--disable-mbsize',
- '--disable-mbskin',
'--disable-mbtagprop',
'--disable-mbmem',
'--disable-spheredecomp',
'--disable-mbsurfplot',
- '--disable-mbpart',
- '--disable-dagmc',
'--disable-gsets',
- '--disable-mbmerge',
- '--disable-mbdepth',
- '--disable-mbcoupler',
'--disable-mcnpmit',
'--disable-refiner',
'--disable-h5mtools',
'--disable-mbcslam',
- '--disable-mbquality',
- '--disable-ahf',
- '--disable-mbumr',
- '--disable-imesh',
'--with-pic',
- '--with-mpi=%s' % spec['mpi'].prefix,
- '--with-hdf5=%s' % spec['hdf5'].prefix,
- '--with-parmetis=%s' % spec['parmetis'].prefix,
- '--with-zoltan=%s' % spec['zoltan'].prefix,
- '--without-vtk',
- 'CXX=%s' % spec['mpi'].mpicxx,
- 'CC=%s' % spec['mpi'].mpicc,
- 'FC=%s' % spec['mpi'].mpifc]
+ '--without-vtk'
+ ]
+ if '+mpi' in spec:
+ options.extend([
+ '--with-mpi=%s' % spec['mpi'].prefix,
+ 'CXX=%s' % spec['mpi'].mpicxx,
+ 'CC=%s' % spec['mpi'].mpicc,
+ 'FC=%s' % spec['mpi'].mpifc
+ ])
+ if '+parmetis' in spec:
+ options.append('--with-parmetis=%s' % spec['parmetis'].prefix)
+ else:
+ options.append('--without-parmetis')
+# FIXME: --without-mpi does not configure right
+# else:
+# options.append('--without-mpi')
+
+ if '+hdf5' in spec:
+ options.append('--with-hdf5=%s' % spec['hdf5'].prefix)
+ else:
+ options.append('--without-hdf5')
- if '~fortran' in spec:
- options.append('--disable-fortran')
- if '+shared' in spec:
- options.append('--enable-shared')
if '+netcdf' in spec:
options.append('--with-netcdf=%s' % spec['netcdf'].prefix)
+ else:
+ options.append('--without-netcdf')
+
+ if '+pnetcdf' in spec:
+ options.append('--with-pnetcdf=%s'
+ % spec['parallel-netcdf'].prefix)
+ else:
+ options.append('--without-pnetcdf')
+
+ if '+cgm' in spec:
+ options.append('--with-cgm=%s' % spec['cgm'].prefix)
+ if '+irel' in spec:
+ options.append('--enable-irel')
+ else:
+ options.append('--disable-irel')
+ else:
+ options.append('--without-cgm')
+ if '+fbigeom' in spec:
+ options.append('--enable-fbigeom')
+ else:
+ options.append('--disable-fbigeom')
- configure(*options)
- make()
- make('install')
+ if '+coupler' in spec:
+ options.append('--enable-mbcoupler')
+ else:
+ options.append('--disable-mbcoupler')
+
+ if '+metis' in spec:
+ options.append('--with-metis=%s' % spec['metis'].prefix)
+ else:
+ options.append('--without-metis')
+
+ if '+parmetis' in spec:
+ options.append('--with-parmetis=%s' % spec['parmetis'].prefix)
+ else:
+ options.append('--without-parmetis')
+
+ if '+zoltan' in spec:
+ options.append('--with-zoltan=%s' % spec['zoltan'].prefix)
+ else:
+ options.append('--without-zoltan')
+
+ if '+debug' in spec:
+ options.append('--enable-debug')
+ else:
+ options.append('--disable-debug')
+
+ # FIXME it seems that with cgm and shared, we have a link
+ # issue in tools/geometry
+ if '+shared' in spec:
+ options.append('--enable-shared')
+ else:
+ options.append('--disable-shared')
+
+ if '~fortran' in spec:
+ options.append('--disable-fortran')
+ else:
+ options.append('--enable-fortran')
+
+ return options
+
+ # FIXME Run the install phase with -j 1. There seems to be a problem with
+ # parallel installations of examples
+ def install(self, spec, prefix):
+ make('install', parallel=False)