summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Stanavige <cameronstanavige@gmail.com>2018-10-25 17:50:45 -0700
committerPeter Scheibel <scheibel1@llnl.gov>2018-10-25 17:50:45 -0700
commite91f8f5f82b0b923fde922df75091f6ce1af4466 (patch)
tree1e56e78ae76237f767078c5d42515c0bc40d7cbc
parentdf7cd00c472754b3bf0d0d0750f856025510b914 (diff)
downloadspack-e91f8f5f82b0b923fde922df75091f6ce1af4466.tar.gz
spack-e91f8f5f82b0b923fde922df75091f6ce1af4466.tar.bz2
spack-e91f8f5f82b0b923fde922df75091f6ce1af4466.tar.xz
spack-e91f8f5f82b0b923fde922df75091f6ce1af4466.zip
unifycr: new package (#9594)
-rw-r--r--var/spack/repos/builtin/packages/unifycr/package.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/unifycr/package.py b/var/spack/repos/builtin/packages/unifycr/package.py
new file mode 100644
index 0000000000..17feb65e7a
--- /dev/null
+++ b/var/spack/repos/builtin/packages/unifycr/package.py
@@ -0,0 +1,95 @@
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+from spack import *
+
+
+class Unifycr(AutotoolsPackage):
+ """User level file system that enables applications to use node-local
+ storage as burst buffers for shared files. Supports scalable and efficient
+ aggregation of I/O bandwidth from burst buffers while having the same life
+ cycle as a batch-submitted job.
+ UnifyCR is designed to support common I/O workloads, including
+ checkpoint/restart. While primarily designed for N-N write/read, UnifyCR
+ compliments its functionality with the support for N-1 write/read."""
+
+ homepage = "https://github.com/LLNL/UnifyCR"
+ git = "https://github.com/LLNL/UnifyCR.git"
+
+ version('develop', branch='dev', preferred=True)
+ version('0.1.1', tag='v0.1.1')
+
+ variant('debug', default='False', description='Enable debug build options')
+ variant('hdf5', default='False', description='Build with parallel HDF5 (install with `^hdf5~mpi` for serial)')
+ variant('numa', default='False', description='Build with NUMA')
+
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+
+ # Required dependencies
+ # Latest version of GOTCHA has API changes that break UnifyCR.
+ # Updates to UnifyCR are coming in order to fix this.
+ depends_on('gotcha@0.0.2')
+ depends_on('leveldb')
+ depends_on('mpi')
+ depends_on('pkg-config@0.9.0:')
+
+ # Optional dependencies
+
+ # UnifyCR's integration with HDF5 is still a WIP and is currently
+ # configured for serial only. HDF5 is parallel by default.
+ #
+ # To build with serial HDF5, use `spack install unifycr+hdf5 ^hdf5~mpi`
+ #
+ # Once UnifyCR is compatible with parallel HDF5, excluding `^hdf5~mpi` from
+ # the install line will build UnifyCR with parallel HDF5.
+
+ # v0.1.1 not HDF5 compatible; can change when v0.1.1 is no longer supported
+ depends_on('hdf5', when='@0.1.2: +hdf5')
+ depends_on('numactl', when='+numa')
+
+ # we depend on numactl, which does't currently build on darwin
+ conflicts('platform=darwin', when='+numa')
+ conflicts('+hdf5', when='@:0.1.1')
+
+ # Parallel disabled to prevent tests from being run out-of-order when
+ # installed with the --test={root, all} option. Can potentially change if
+ # we add a +test configure option and variant.
+ parallel = False
+ build_directory = 'spack-build'
+
+ def configure_args(self):
+ spec = self.spec
+ args = []
+
+ if spec.satisfies('@0.1.1'):
+ env['CC'] = spec['mpi'].mpicc
+
+ # UnifyCR's configure requires the exact path for HDF5
+ def hdf5_compiler_path(name):
+ if '~mpi' in spec[name]: # serial HDF5
+ return spec[name].prefix.bin.h5cc
+ else: # parallel HDF5
+ return spec[name].prefix.bin.h5pcc
+
+ args.extend(self.with_or_without('numa',
+ lambda x: spec['numactl'].prefix))
+ args.extend(self.with_or_without('hdf5', hdf5_compiler_path))
+
+ if '+debug' in spec:
+ args.append('--enable-debug')
+
+ if spack.config.get('config:debug'):
+ args.append('--disable-silent-rules')
+ else:
+ args.append('--enable-silent-rules')
+
+ return args
+
+# @when('@develop') TODO: uncomment when we `make dist` a stable release
+ def autoreconf(self, spec, prefix):
+ bash = which('bash')
+ bash('./autogen.sh')