94 lines
3.8 KiB
Python
94 lines
3.8 KiB
Python
# Copyright 2013-2022 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.error import SpackError
|
|
from spack.package import *
|
|
|
|
|
|
def async_api_validator(pkg_name, variant_name, values):
|
|
if 'none' in values and len(values) != 1:
|
|
raise SpackError("The value 'none' is not usable"
|
|
" with other async_api values.")
|
|
if 'intel_cppr' in values and 'cray_dw' in values:
|
|
raise SpackError("The 'intel_cppr' and 'cray_dw' asynchronous"
|
|
" APIs are incompatible.")
|
|
|
|
|
|
class Axl(CMakePackage):
|
|
"""Asynchronous transfer library"""
|
|
|
|
homepage = "https://github.com/ecp-veloc/AXL"
|
|
url = "https://github.com/ecp-veloc/AXL/archive/v0.4.0.tar.gz"
|
|
git = "https://github.com/ecp-veloc/axl.git"
|
|
tags = ['ecp']
|
|
|
|
maintainers = ['CamStan', 'gonsie']
|
|
|
|
version('main', branch='main')
|
|
version('0.7.0', sha256='840ef61eadc9aa277d128df08db4cdf6cfa46b8fcf47b0eee0972582a61fbc50')
|
|
version('0.6.0', sha256='86edb35f99b63c0ffb9dd644a019a63b062923b4efc95c377e92a1b13e79f537')
|
|
version('0.5.0', sha256='9f3bbb4de563896551bdb68e889ba93ea1984586961ad8c627ed766bff020acf')
|
|
version('0.4.0', sha256='0530142629d77406a00643be32492760c2cf12d1b56c6b6416791c8ff5298db2')
|
|
version('0.3.0', sha256='737d616b669109805f7aed1858baac36c97bf0016e1115b5c56ded05d792613e')
|
|
version('0.2.0', sha256='d04a445f102b438fe96a1ff3429790b0c035f0d23c2797bb5601a00b582a71fc', deprecated=True)
|
|
version('0.1.1', sha256='36edac007938fe47d979679414c5c27938944d32536e2e149f642916c5c08eaa', deprecated=True)
|
|
|
|
depends_on('kvtree')
|
|
depends_on('zlib', type='link')
|
|
|
|
depends_on('kvtree@main', when='@main')
|
|
depends_on('kvtree@1.3.0', when='@0.6.0')
|
|
|
|
variant('async_api', default='daemon',
|
|
description='Set of async transfer APIs to enable',
|
|
values=['cray_dw', 'intel_cppr', 'daemon', 'none'], multi=True,
|
|
validator=async_api_validator)
|
|
|
|
variant('pthreads', default=True, description='Enable Pthread support', when='@0.6:')
|
|
|
|
variant('bbapi', default=True, description='Enable IBM BBAPI support')
|
|
|
|
variant('bbapi_fallback', default=False,
|
|
description='Using BBAPI, if source or destination don\'t support \
|
|
file extents then fallback to pthreads')
|
|
|
|
variant('dw', default=False, description='Enable Cray DataWarp support')
|
|
|
|
variant('shared', default=True, description='Build with shared libraries')
|
|
depends_on('kvtree+shared', when='@0.5: +shared')
|
|
depends_on('kvtree~shared', when='@0.5: ~shared')
|
|
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
args = []
|
|
args.append(self.define('WITH_KVTREE_PREFIX', spec['kvtree'].prefix))
|
|
|
|
if spec.satisfies('@:0.3.0'):
|
|
apis = list(spec.variants['async_api'].value)
|
|
if 'daemon' in apis:
|
|
args.append('-DAXL_ASYNC_DAEMON=ON')
|
|
apis.remove('daemon')
|
|
|
|
for api in apis:
|
|
args.append('-DAXL_ASYNC_API={0}'.format(api.upper()))
|
|
|
|
if spec.satisfies('@0.4.0:'):
|
|
args.append(self.define_from_variant(
|
|
'ENABLE_BBAPI_FALLBACK', 'bbapi_fallback'
|
|
))
|
|
|
|
if spec.satisfies('@0.5.0:'):
|
|
args.append(self.define_from_variant('ENABLE_IBM_BBAPI', 'bbapi'))
|
|
args.append(self.define_from_variant('ENABLE_CRAY_DW', 'dw'))
|
|
args.append(self.define_from_variant('BUILD_SHARED_LIBS', 'shared'))
|
|
else:
|
|
if spec.satisfies('platform=cray'):
|
|
args.append(self.define('AXL_LINK_STATIC', True))
|
|
|
|
if spec.satisfies('@0.6.0:'):
|
|
args.append(self.define_from_variant('ENABLE_PTHREADS', 'pthreads'))
|
|
|
|
return args
|