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
|
# Copyright 2013-2024 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 Numactl(AutotoolsPackage):
"""NUMA support for Linux"""
homepage = "https://github.com/numactl/numactl"
url = "https://github.com/numactl/numactl/archive/v2.0.11.tar.gz"
force_autoreconf = True
license("LGPL-2.1-only")
version("2.0.14", sha256="1ee27abd07ff6ba140aaf9bc6379b37825e54496e01d6f7343330cf1a4487035")
version("2.0.12", sha256="7c3e819c2bdeb883de68bafe88776a01356f7ef565e75ba866c4b49a087c6bdf")
version("2.0.11", sha256="3e099a59b2c527bcdbddd34e1952ca87462d2cef4c93da9b0bc03f02903f7089")
patch("numactl-2.0.11-sysmacros.patch", when="@2.0.11")
# https://github.com/numactl/numactl/issues/94
patch("numactl-2.0.14-symver.patch", when="@2.0.14")
patch("fix-empty-block.patch", when="@2.0.10:2.0.14")
patch("link-with-latomic-if-needed.patch", when="@2.0.14")
depends_on("autoconf", type="build")
depends_on("automake", type="build")
depends_on("libtool", type="build")
depends_on("m4", type="build")
# Numactl has hardcoded minimum versions for libtool,
# libtool@develop returns UNKOWN as a version tag and fails
conflicts("^libtool@develop")
# Numerous errors when trying to build on darwin
conflicts("platform=darwin")
def autoreconf(self, spec, prefix):
Executable("./autogen.sh")()
@when("%nvhpc")
def patch(self):
self._nvhpc_patch()
@when("%pgi@20:")
def patch(self):
self._nvhpc_patch()
def _nvhpc_patch(self):
# Remove flags not recognized by the NVIDIA compiler
filter_file("-ffast-math -funroll-loops", "", "Makefile.am")
filter_file("-std=gnu99", "-c99", "Makefile.am")
# Avoid undefined reference errors
if self.spec.satisfies("@2.0.14"):
filter_file("numa_sched_setaffinity_v1_int", "numa_sched_setaffinity_v1", "libnuma.c")
filter_file("numa_sched_setaffinity_v2_int", "numa_sched_setaffinity_v2", "libnuma.c")
filter_file("numa_sched_getaffinity_v2_int", "numa_sched_getaffinity_v2", "libnuma.c")
|