summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/pmemkv/package.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/pmemkv/package.py b/var/spack/repos/builtin/packages/pmemkv/package.py
new file mode 100644
index 0000000000..d3f4945984
--- /dev/null
+++ b/var/spack/repos/builtin/packages/pmemkv/package.py
@@ -0,0 +1,88 @@
+# Copyright 2013-2021 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 Pmemkv(CMakePackage):
+ """pmemkv is a local/embedded key-value datastore,
+ optimized for persistent memory.
+ """
+
+ homepage = "https://pmem.io/pmemkv/"
+ url = "https://github.com/pmem/pmemkv/archive/1.4.tar.gz"
+ git = "https://github.com/pmem/pmemkv.git"
+
+ version('master', branch='master')
+ version('1.4', sha256='6630917e0203eff7a520071c858baa7b7e108088da2fe8c4b31ec5f8c661fbe9')
+ version('1.3', sha256='f1b946ef3545bcc2751fa2e4faab0538cd3072b66d4c4575f21712e0cc53bae8')
+ version('1.2', sha256='22de74392e0a6eea5aa1955ed2d59462bf45ec69a01eb1cf2115e39e7bdc4754')
+ version('1.1', sha256='c4ca07c1fecad39b5dbf197673f033f27d74c9f9987f036f6eaf5c7f23a342f3')
+ version('1.0.3', sha256='cae393a01ba69364271c5894046bf2c611f677ac88012f2473fadf6fcd20ff29')
+ version('1.0.2', sha256='a0cbbb60c0342d6fd0b73d2cee1a1423c6a894b8d21daf669016809961fe23b8')
+
+ depends_on('libpmemobj-cpp@develop', when='@master')
+ depends_on('libpmemobj-cpp@1.12:', when='@1.4:')
+ depends_on('libpmemobj-cpp@1.11:', when='@1.3:')
+ depends_on('libpmemobj-cpp@1.10:', when='@1.2:')
+ depends_on('libpmemobj-cpp@1.9:', when='@1.1:')
+ depends_on('libpmemobj-cpp@1.8:', when='@1.0.2:')
+
+ depends_on('pmdk@master', when='@master')
+ depends_on('pmdk@master', when='@1.4:')
+ depends_on('pmdk@1.8:', when='@1.1:')
+ depends_on('pmdk@1.7:', when='@1.0.2:')
+
+ depends_on('memkind@1.8.0:')
+
+ depends_on('rapidjson')
+
+ # tbb is one of virtual dependencies.
+ # Please refer https://spack.readthedocs.io/en/latest/packaging_guide.html#virtual-dependencies
+ # we can use any packages which provides 'tbb'
+ # For example, 'intel-tbb' or 'intel-oneapi-tbb'
+ # Default is 'intel-tbb' (etc/spack/defaults/packages.yaml)
+ depends_on('tbb')
+
+ depends_on('cmake@3.3:')
+
+ variant('cmap', default=True, description='enable cmap engine.')
+ variant('vcmap', default=True, description='enable vcmap engine.')
+ variant('vsmap', default=True, description='enable vsmap engine.')
+ variant('csmap', default=False, description='enable experimental csmap engine.')
+ variant('stree', default=True, description='enable experimental stree engine.')
+ variant('tree3', default=False, description='enable experimental tree3 engine.')
+ variant('radix', default=False, description='enable experimental radix engine.')
+ variant('robinhood', default=False, description='enable experimental robinhood engine.')
+ variant('dram_vcmap', default=False, description='enable testing dram_vcmap engine.')
+
+ def cmake_args(self):
+ spec = self.spec
+
+ args = [
+ self.define('BUILD_DOC', False),
+ self.define('BUILD_EXAMPLES', False),
+ self.define('BUILD_TESTS', False),
+ self.define('BUILD_JSON_CONFIG', True),
+ self.define('TESTS_LONG', False),
+ self.define('TESTS_USE_FORCED_PMEM', False),
+ self.define('TESTS_USE_VALGRIND', False),
+ self.define('TESTS_PMEMOBJ_DRD_HELGRIND', False),
+ self.define('TESTS_JSON', False),
+ self.define_from_variant('ENGINE_CMAP', 'cmap'),
+ self.define_from_variant('ENGINE_VCMAP', 'vcmap'),
+ self.define_from_variant('ENGINE_VSMAP', 'vsmap'),
+ self.define_from_variant('ENGINE_CSMAP', 'csmap'),
+ self.define_from_variant('ENGINE_STREE', 'stree'),
+ self.define_from_variant('ENGINE_TREE3', 'tree3'),
+ self.define_from_variant('ENGINE_RADIX', 'radix'),
+ self.define_from_variant('ENGINE_ROBINHOOD', 'robinhood'),
+ self.define_from_variant('ENGINE_DRAM_VCMAP', 'dram_vcmap'),
+ ]
+
+ if ('+csmap' in spec) or ('+robinhood' in spec):
+ args.append(self.define('CXX_STANDARD', 14))
+
+ return args