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
|
# 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.package import *
class PySmartredis(PythonPackage):
"""A Python Interface for the SmartRedis Library Client"""
homepage = "https://www.craylabs.org/docs/smartredis.html"
pypi = "smartredis/smartredis-0.4.0.tar.gz"
git = "https://github.com/CrayLabs/SmartRedis"
maintainers("MattToast")
license("BSD-2-Clause")
version("0.4.1", sha256="fff16ed1eb09648ac3c3f845373beb37f3ffe7414d8745ae36af9daf585f8c5b")
version("0.4.0", sha256="d12779aa8bb038e837c25eac41b178aab9e16b729d50ee360b5af8f813d9f1dd")
depends_on("python@3.7:3.10", type=("build", "run"))
depends_on("py-setuptools@42:", type=("build",))
depends_on("cmake@3.13:", type=("build",))
# Documented dependencies
depends_on("hiredis@1.1:", type=("build", "link", "run"), when="@0.4.1")
depends_on("hiredis@1.0:", type=("build", "link", "run"), when="@0.4.0")
depends_on("redis-plus-plus@1.3.5: cxxstd=17", type=("build", "link"))
# Unlisted dependency needed to build the python client. The pybind requirement
# can be found:
# - in the `build-scripts/build_deps.sh` for SmartRedis <= v0.4.0
# - in the `Makefile` under the `pybind` target for SmartRedis >= v0.4.1
depends_on("py-pybind11", type=("build",))
depends_on("py-numpy@1.18.2:", type=("build", "run"))
# By default, the `setup.py` for SmartRedis <= v0.4.1 will fetch dependencies and
# use them to build the extension library; it does not allow users to supply
# their own previously obtained dependencies. These patches remove the 'autofetch'
# behavior and use the dependencies provided through spack.
patch("sr_0_4_1_no_deps.patch", when="@0.4.1")
patch("sr_0_4_0_no_deps.patch", when="@0.4.0")
def setup_build_environment(self, env):
spec = self.spec
env.set("REDISPP_LIB_DIR", spec["redis-plus-plus"].libs.directories[0])
env.set("REDISPP_INC_DIR", spec["redis-plus-plus"].headers.directories[0])
env.set("HIREDIS_LIB_DIR", spec["hiredis"].libs.directories[0])
env.set("HIREDIS_INC_DIR", spec["hiredis"].headers.directories[0])
env.set("PYBIND11_TOOLS", spec["py-pybind11"].prefix.share.cmake.pybind11)
|