1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# Copyright 2013-2023 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")
license("MIT")
version("main", branch="main")
version("0.8.0", sha256="9fcd4eae143a67ff02622feda2a541b85e9a108749c039faeb473cbbc2330459")
version("0.7.1", sha256="526a055c072c85cc989beca656717e06b128f148fda8eb19d1d9b43a3325b399")
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-api", type="link")
depends_on("kvtree@main", when="@main")
depends_on("kvtree@:1.2.0", when="@:0.5.0")
depends_on("kvtree@1.3.0", when="@0.6.0:0.7.1")
depends_on("kvtree@1.4.0:", when="@0.8.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
|