diff options
-rw-r--r-- | var/spack/repos/builtin/packages/cgm/package.py | 8 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/meshkit/package.py | 81 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/moab/package.py | 164 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/netgen/package.py | 83 |
4 files changed, 295 insertions, 41 deletions
diff --git a/var/spack/repos/builtin/packages/cgm/package.py b/var/spack/repos/builtin/packages/cgm/package.py index 46838a9057..336cea8867 100644 --- a/var/spack/repos/builtin/packages/cgm/package.py +++ b/var/spack/repos/builtin/packages/cgm/package.py @@ -39,6 +39,8 @@ class Cgm(AutotoolsPackage): variant("mpi", default=True, description='enable mpi support') variant("oce", default=False, description='enable oce geometry kernel') + variant("debug", default=False, description='enable debug symbols') + variant("shared", default=False, description='enable shared builds') depends_on('mpi', when='+mpi') depends_on('oce+X11', when='+oce') @@ -61,4 +63,10 @@ class Cgm(AutotoolsPackage): else: args.append("--without-occ") + if '+debug' in spec: + args.append("--enable-debug") + + if '+shared' in spec: + args.append("--enable-shared") + return args diff --git a/var/spack/repos/builtin/packages/meshkit/package.py b/var/spack/repos/builtin/packages/meshkit/package.py new file mode 100644 index 0000000000..8b6edc3647 --- /dev/null +++ b/var/spack/repos/builtin/packages/meshkit/package.py @@ -0,0 +1,81 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +# +from spack import * + + +class Meshkit(AutotoolsPackage): + """MeshKit is an open-source library of mesh generation functionality. + Its design philosophy is two-fold: it provides a collection of + meshing algorithms for use in real meshing problems, along with + other tools commonly needed to support mesh generation""" + + homepage = "http://sigma.mcs.anl.gov/meshkit-library" + url = "http://ftp.mcs.anl.gov/pub/fathom/meshkit-1.5.0.tar.gz" + + version('1.5.0', '90b52416598ef65525ce4457a50ffe68') + + variant("mpi", default=True, description='enable mpi support') + variant("netgen", default=False, description='enable netgen support') + variant("debug", default=False, description='enable debug symbols') + variant("shared", default=False, description='enable shared builds') + + depends_on('mpi', when='+mpi') + depends_on('netgen', when='+netgen') + depends_on('cgm') + depends_on('moab+irel+fbigeom') + + def configure_args(self): + spec = self.spec + args = [ + "--with-igeom={0}".format(spec['cgm'].prefix), + "--with-imesh={0}".format(spec['moab'].prefix) + ] + if '+mpi' in spec: + args.extend([ + "--with-mpi", + "CC={0}".format(spec['mpi'].mpicc), + "CXX={0}".format(spec['mpi'].mpicxx), + "FC={0}".format(spec['mpi'].mpifc) + ]) +# FIXME without-mpi is not working +# else: +# args.append("--without-mpi") + if '+netgen' in spec: + args.append("--with-netgen={0}".format(spec['netgen'].prefix)) + else: + args.append("--without-netgen") + + if '+debug' in spec: + args.append("--enable-debug") + else: + args.append("--disable-debug") + + if '+shared' in spec: + args.append("--enable-shared") + else: + args.append("--disable-shared") + + return args 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) diff --git a/var/spack/repos/builtin/packages/netgen/package.py b/var/spack/repos/builtin/packages/netgen/package.py new file mode 100644 index 0000000000..ee96fac04d --- /dev/null +++ b/var/spack/repos/builtin/packages/netgen/package.py @@ -0,0 +1,83 @@ +############################################################################## +# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://github.com/llnl/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License (as +# published by the Free Software Foundation) version 2.1, February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +from spack import * + + +class Netgen(AutotoolsPackage): + """NETGEN is an automatic 3d tetrahedral mesh generator. It accepts + input from constructive solid geometry (CSG) or boundary + representation (BRep) from STL file format. The connection to + a geometry kernel allows the handling of IGES and STEP files. + NETGEN contains modules for mesh optimization and hierarchical + mesh refinement. """ + + homepage = "https://ngsolve.org/" + url = "https://gigenet.dl.sourceforge.net/project/netgen-mesher/netgen-mesher/5.3/netgen-5.3.1.tar.gz" + + version('5.3.1', 'afd5a9b0b1296c242a9c554f06af6510') + + variant("mpi", default=True, description='enable mpi support') + variant("oce", default=False, description='enable oce geometry kernel') + variant("gui", default=False, description='enable gui') + variant("metis", default=False, description='use metis for partitioning') + + depends_on('mpi', when='+mpi') + depends_on('oce+X11', when='+oce') + depends_on('metis', when='+metis') + + def url_for_version(self, version): + url = "https://gigenet.dl.sourceforge.net/project/netgen-mesher/netgen-mesher/{0}/netgen-{1}.tar.gz" + return url.format(version.up_to(2), version) + + def configure_args(self): + spec = self.spec + args = [] + if '+mpi' in spec: + args.extend([ + "CC={0}".format(spec['mpi'].mpicc), + "CXX={0}".format(spec['mpi'].mpicxx) + ]) + else: + args.append("--without-mpi") + + if '+oce' in spec: + args.append("--with-occ={0}".format(spec['oce'].prefix)) + # FIXME + # due to a bug in netgen config, when --without-occ is specified + # or --with-occ=no, OCC flags is turned true, and build fails + # later; so do not specify anything like that + # else: + # args.append("--without-occ") + + if '~gui' in spec: + args.append("--disable-gui") + else: + args.append("--enable-gui") + if '+metis' in spec: + args.append('--with-metis=%s' % spec['metis'].prefix) + else: + args.append("--without-metis") + + return args |