summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/mpifileutils/package.py70
1 files changed, 65 insertions, 5 deletions
diff --git a/var/spack/repos/builtin/packages/mpifileutils/package.py b/var/spack/repos/builtin/packages/mpifileutils/package.py
index ad97e4e383..9365d6e7fa 100644
--- a/var/spack/repos/builtin/packages/mpifileutils/package.py
+++ b/var/spack/repos/builtin/packages/mpifileutils/package.py
@@ -6,7 +6,7 @@
from spack import *
-class Mpifileutils(AutotoolsPackage):
+class Mpifileutils(Package):
"""mpiFileUtils is a suite of MPI-based tools to manage large datasets,
which may vary from large directory trees to large files.
High-performance computing users often generate large datasets with
@@ -17,10 +17,11 @@ class Mpifileutils(AutotoolsPackage):
for such datasets, providing speedups of up to 20-30x."""
homepage = "https://github.com/hpc/mpifileutils"
- url = "https://github.com/hpc/mpifileutils/releases/download/v0.6/mpifileutils-0.6.tar.gz"
+ url = "https://github.com/hpc/mpifileutils/archive/v0.9.tar.gz"
git = "https://github.com/hpc/mpifileutils.git"
version('develop', branch='master')
+ version('0.9', sha256='1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb')
version('0.8.1', 'acbd5b5c15919a67392509614bb7871e')
version('0.8', '1082600e7ac4e6b2c13d91bbec40cffb')
version('0.7', 'c081f7f72c4521dddccdcf9e087c5a2b')
@@ -30,7 +31,6 @@ class Mpifileutils(AutotoolsPackage):
depends_on('mpi')
depends_on('libcircle')
- depends_on('lwgrp')
# need precise version of dtcmp, since DTCMP_Segmented_exscan added
# in v1.0.3 but renamed in v1.1.0 and later
@@ -39,6 +39,8 @@ class Mpifileutils(AutotoolsPackage):
depends_on('libarchive')
+ depends_on('cmake@3.1:', when='@0.9:', type='build')
+
variant('xattr', default=True,
description="Enable code for extended attributes")
@@ -47,12 +49,59 @@ class Mpifileutils(AutotoolsPackage):
variant('experimental', default=False,
description="Install experimental tools")
-
- # --enable-experimental fails with v0.6 and earlier
conflicts('+experimental', when='@:0.6')
+ variant('gpfs', default=False,
+ description="Enable optimizations and features for GPFS")
+ conflicts('+gpfs', when='@:0.8.1')
+
+ def cmake_args(self):
+ args = std_cmake_args
+ args.append('-DCMAKE_INSTALL_PREFIX=%s' % self.spec.prefix)
+ args.append("-DWITH_DTCMP_PREFIX=%s" % self.spec['dtcmp'].prefix)
+ args.append("-DWITH_LibCircle_PREFIX=%s" %
+ self.spec['libcircle'].prefix)
+
+ if '+xattr' in self.spec:
+ args.append("-DENABLE_XATTRS=ON")
+ else:
+ args.append("-DENABLE_XATTRS=OFF")
+
+ if '+lustre' in self.spec:
+ args.append("-DENABLE_LUSTRE=ON")
+ else:
+ args.append("-DENABLE_LUSTRE=OFF")
+
+ if '+gpfs' in self.spec:
+ args.append("-DENABLE_GPFS=ON")
+ else:
+ args.append("-DENABLE_GPFS=OFF")
+
+ if '+experimental' in self.spec:
+ args.append("-DENABLE_EXPERIMENTAL=ON")
+ else:
+ args.append("-DENABLE_EXPERIMENTAL=OFF")
+
+ return args
+
+ @when('@0.9:')
+ def install(self, spec, prefix):
+ args = self.cmake_args()
+
+ source_directory = self.stage.source_path
+ build_directory = join_path(source_directory, 'build')
+
+ with working_dir(build_directory, create=True):
+ cmake(source_directory, *args)
+ make()
+ make('install')
+
+ if self.run_tests:
+ make('test')
+
def configure_args(self):
args = []
+ args.append('--prefix=%s' % self.spec.prefix)
args.append("CPPFLAGS=-I%s/src/common" % pwd())
args.append("libarchive_CFLAGS=-I%s"
% self.spec['libarchive'].prefix.include)
@@ -80,3 +129,14 @@ class Mpifileutils(AutotoolsPackage):
else:
args.append('--disable-experimental')
return args
+
+ @when('@:0.8.1')
+ def install(self, spec, prefix):
+ args = self.configure_args()
+
+ configure(*args)
+ make()
+ make('install')
+
+ if self.run_tests:
+ make('test')