mpifileutils: cmakepackage (#44863)
This commit is contained in:
parent
867a813328
commit
380030c59a
@ -6,7 +6,7 @@
|
|||||||
from spack.package import *
|
from spack.package import *
|
||||||
|
|
||||||
|
|
||||||
class Mpifileutils(Package):
|
class Mpifileutils(CMakePackage):
|
||||||
"""mpiFileUtils is a suite of MPI-based tools to manage large datasets,
|
"""mpiFileUtils is a suite of MPI-based tools to manage large datasets,
|
||||||
which may vary from large directory trees to large files.
|
which may vary from large directory trees to large files.
|
||||||
High-performance computing users often generate large datasets with
|
High-performance computing users often generate large datasets with
|
||||||
@ -32,17 +32,21 @@ class Mpifileutils(Package):
|
|||||||
version("0.9.1", sha256="15a22450f86b15e7dc4730950b880fda3ef6f59ac82af0b268674d272aa61c69")
|
version("0.9.1", sha256="15a22450f86b15e7dc4730950b880fda3ef6f59ac82af0b268674d272aa61c69")
|
||||||
version("0.9", sha256="1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb")
|
version("0.9", sha256="1b8250af01aae91c985ca5d61521bfaa4564e46efa15cee65cd0f82cf5a2bcfb")
|
||||||
|
|
||||||
|
variant("xattr", default=True, description="Enable code for extended attributes")
|
||||||
|
variant("lustre", default=False, description="Enable optimizations and features for Lustre")
|
||||||
|
variant("gpfs", default=False, description="Enable optimizations and features for GPFS")
|
||||||
|
variant("experimental", default=False, description="Install experimental tools")
|
||||||
|
variant("daos", default=False, description="Enable DAOS support", when="@0.11:")
|
||||||
|
|
||||||
patch("nosys_getdents.patch", when="@:0.10.1 target=aarch64:")
|
patch("nosys_getdents.patch", when="@:0.10.1 target=aarch64:")
|
||||||
|
|
||||||
conflicts("platform=darwin")
|
conflicts("platform=darwin")
|
||||||
|
|
||||||
depends_on("mpi")
|
depends_on("mpi")
|
||||||
depends_on("libcircle@0.3:")
|
depends_on("libcircle")
|
||||||
|
|
||||||
# need precise version of dtcmp, since DTCMP_Segmented_exscan added
|
# DTCMP_Segmented_exscan renamed in v1.1.0
|
||||||
# in v1.0.3 but renamed in v1.1.0 and later
|
depends_on("dtcmp@1.1.0:")
|
||||||
depends_on("dtcmp@1.0.3", when="@:0.7")
|
|
||||||
depends_on("dtcmp@1.1.0:", when="@0.8:")
|
|
||||||
|
|
||||||
# fixes were added to libarchive somewhere between 3.1.2 and 3.5.0
|
# fixes were added to libarchive somewhere between 3.1.2 and 3.5.0
|
||||||
# which helps with file names that start with "._", bumping to newer
|
# which helps with file names that start with "._", bumping to newer
|
||||||
@ -51,28 +55,11 @@ class Mpifileutils(Package):
|
|||||||
depends_on("libarchive@3.5.1:", when="@0.11:")
|
depends_on("libarchive@3.5.1:", when="@0.11:")
|
||||||
|
|
||||||
depends_on("attr", when="@0.11.1:+xattr")
|
depends_on("attr", when="@0.11.1:+xattr")
|
||||||
|
|
||||||
depends_on("daos", when="+daos")
|
depends_on("daos", when="+daos")
|
||||||
|
|
||||||
depends_on("bzip2")
|
depends_on("bzip2")
|
||||||
|
|
||||||
depends_on("libcap")
|
depends_on("libcap")
|
||||||
|
|
||||||
depends_on("openssl")
|
depends_on("openssl")
|
||||||
|
depends_on("cmake@3.1:", type="build")
|
||||||
depends_on("cmake@3.1:", when="@0.9:", type="build")
|
|
||||||
|
|
||||||
variant("xattr", default=True, description="Enable code for extended attributes")
|
|
||||||
|
|
||||||
variant("lustre", default=False, description="Enable optimizations and features for Lustre")
|
|
||||||
|
|
||||||
variant("gpfs", default=False, description="Enable optimizations and features for GPFS")
|
|
||||||
conflicts("+gpfs", when="@:0.8.1")
|
|
||||||
|
|
||||||
variant("experimental", default=False, description="Install experimental tools")
|
|
||||||
conflicts("+experimental", when="@:0.6")
|
|
||||||
|
|
||||||
variant("daos", default=False, description="Enable DAOS support", when="@0.11:")
|
|
||||||
|
|
||||||
def flag_handler(self, name, flags):
|
def flag_handler(self, name, flags):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
@ -83,92 +70,19 @@ def flag_handler(self, name, flags):
|
|||||||
return (iflags, None, None)
|
return (iflags, None, None)
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
args = std_cmake_args
|
args = [
|
||||||
args.append("-DCMAKE_INSTALL_PREFIX=%s" % self.spec.prefix)
|
self.define("WITH_DTCMP_PREFIX", self.spec["dtcmp"].prefix),
|
||||||
args.append("-DWITH_DTCMP_PREFIX=%s" % self.spec["dtcmp"].prefix)
|
self.define("WITH_LibCircle_PREFIX", self.spec["libcircle"].prefix),
|
||||||
args.append("-DWITH_LibCircle_PREFIX=%s" % self.spec["libcircle"].prefix)
|
self.define_from_variant("ENABLE_XATTRS", "xattr"),
|
||||||
|
self.define_from_variant("ENABLE_LUSTRE", "lustre"),
|
||||||
if self.spec.satisfies("+xattr"):
|
self.define_from_variant("ENABLE_GPFS", "gpfs"),
|
||||||
args.append("-DENABLE_XATTRS=ON")
|
self.define_from_variant("ENABLE_EXPERIMENTAL", "experimental"),
|
||||||
else:
|
]
|
||||||
args.append("-DENABLE_XATTRS=OFF")
|
|
||||||
|
|
||||||
if self.spec.satisfies("+lustre"):
|
|
||||||
args.append("-DENABLE_LUSTRE=ON")
|
|
||||||
else:
|
|
||||||
args.append("-DENABLE_LUSTRE=OFF")
|
|
||||||
|
|
||||||
if self.spec.satisfies("+gpfs"):
|
|
||||||
args.append("-DENABLE_GPFS=ON")
|
|
||||||
else:
|
|
||||||
args.append("-DENABLE_GPFS=OFF")
|
|
||||||
|
|
||||||
if self.spec.satisfies("+experimental"):
|
|
||||||
args.append("-DENABLE_EXPERIMENTAL=ON")
|
|
||||||
else:
|
|
||||||
args.append("-DENABLE_EXPERIMENTAL=OFF")
|
|
||||||
|
|
||||||
if self.spec.satisfies("+daos"):
|
if self.spec.satisfies("+daos"):
|
||||||
args.append("-DENABLE_DAOS=ON")
|
args.append(self.define("ENABLE_DAOS", True))
|
||||||
args.append("-DWITH_DAOS_PREFIX=%s" % self.spec["daos"].prefix)
|
args.append(self.define("WITH_DAOS_PREFIX", self.spec["daos"].prefix))
|
||||||
else:
|
else:
|
||||||
args.append("-DENABLE_DAOS=OFF")
|
args.append(self.define("ENABLE_DAOS", False))
|
||||||
|
|
||||||
return args
|
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)
|
|
||||||
args.append(
|
|
||||||
"libarchive_LIBS=%s %s"
|
|
||||||
% (self.spec["libarchive"].libs.search_flags, self.spec["libarchive"].libs.link_flags)
|
|
||||||
)
|
|
||||||
args.append("libcircle_CFLAGS=-I%s" % self.spec["libcircle"].prefix.include)
|
|
||||||
args.append(
|
|
||||||
"libcircle_LIBS=%s %s"
|
|
||||||
% (self.spec["libcircle"].libs.search_flags, self.spec["libcircle"].libs.link_flags)
|
|
||||||
)
|
|
||||||
args.append("--with-dtcmp=%s" % self.spec["dtcmp"].prefix)
|
|
||||||
|
|
||||||
if self.spec.satisfies("+xattr"):
|
|
||||||
args.append("CFLAGS=-DDCOPY_USE_XATTRS")
|
|
||||||
|
|
||||||
if self.spec.satisfies("+lustre"):
|
|
||||||
args.append("--enable-lustre")
|
|
||||||
else:
|
|
||||||
args.append("--disable-lustre")
|
|
||||||
|
|
||||||
if self.spec.satisfies("@0.7:"):
|
|
||||||
if self.spec.satisfies("+experimental"):
|
|
||||||
args.append("--enable-experimental")
|
|
||||||
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")
|
|
||||||
|
Loading…
Reference in New Issue
Block a user