summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorBrian Van Essen <vanessen1@llnl.gov>2022-04-01 13:30:10 -0700
committerGitHub <noreply@github.com>2022-04-01 13:30:10 -0700
commit29da99427ed8b33fc4650b4d45ec933b7f97e25d (patch)
tree9c2c74ec7e263505992abab4356256df22aae045 /var
parenta58fa289b9fb9b593773ace91b531b9547614771 (diff)
downloadspack-29da99427ed8b33fc4650b4d45ec933b7f97e25d.tar.gz
spack-29da99427ed8b33fc4650b4d45ec933b7f97e25d.tar.bz2
spack-29da99427ed8b33fc4650b4d45ec933b7f97e25d.tar.xz
spack-29da99427ed8b33fc4650b4d45ec933b7f97e25d.zip
"spack external find": also find library-only packages (#28005)
Update "spack external find --all" to also find library-only packages. A Package can add a ".libraries" attribute, which is a list of regular expressions to use to find libraries associated with the Package. "spack external find --all" will search LD_LIBRARY_PATH for potential libraries. This PR adds examples for NCCL, RCCL, and hipblas packages. These examples specify the suffix ".so" for the regular expressions used to find libraries, so generally are only useful for detecting library packages on Linux.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/hipblas/package.py15
-rw-r--r--var/spack/repos/builtin/packages/nccl/package.py9
-rw-r--r--var/spack/repos/builtin/packages/rccl/package.py15
-rw-r--r--var/spack/repos/builtin/packages/rdma-core/package.py9
4 files changed, 48 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py
index 96d43fca06..fbbe821c1f 100644
--- a/var/spack/repos/builtin/packages/hipblas/package.py
+++ b/var/spack/repos/builtin/packages/hipblas/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import re
+
from spack import *
@@ -15,6 +17,7 @@ class Hipblas(CMakePackage):
url = "https://github.com/ROCmSoftwarePlatform/hipBLAS/archive/rocm-5.0.2.tar.gz"
maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie']
+ libraries = ['libhipblas.so']
version('5.0.2', sha256='201772bfc422ecb2c50e898dccd7d3d376cf34a2b795360e34bf71326aa37646')
version('5.0.0', sha256='63cffe748ed4a86fc80f408cb9e8a9c6c55c22a2b65c0eb9a76360b97bbb9d41')
@@ -54,6 +57,18 @@ class Hipblas(CMakePackage):
depends_on('comgr@' + ver, type='build', when='@' + ver)
depends_on('rocm-cmake@' + ver, type='build', when='@' + ver)
+ @classmethod
+ def determine_version(cls, lib):
+ match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)',
+ lib)
+ if match:
+ ver = '{0}.{1}.{2}'.format(int(match.group(1)),
+ int(match.group(2)),
+ int(match.group(3)))
+ else:
+ ver = None
+ return ver
+
def cmake_args(self):
args = [
# Make sure find_package(HIP) finds the module.
diff --git a/var/spack/repos/builtin/packages/nccl/package.py b/var/spack/repos/builtin/packages/nccl/package.py
index c784fd0127..e159755385 100644
--- a/var/spack/repos/builtin/packages/nccl/package.py
+++ b/var/spack/repos/builtin/packages/nccl/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import re
+
from spack import *
@@ -13,6 +15,7 @@ class Nccl(MakefilePackage, CudaPackage):
url = "https://github.com/NVIDIA/nccl/archive/v2.7.3-1.tar.gz"
maintainers = ['adamjstewart']
+ libraries = ['libnccl.so']
version('2.11.4-1', sha256='db4e9a0277a64f9a31ea9b5eea22e63f10faaed36dded4587bbc8a0d8eceed10')
version('2.10.3-1', sha256='55de166eb7dcab9ecef2629cdb5fb0c5ebec4fae03589c469ebe5dcb5716b3c5')
@@ -49,6 +52,12 @@ class Nccl(MakefilePackage, CudaPackage):
msg='Must specify CUDA compute capabilities of your GPU, see '
'https://developer.nvidia.com/cuda-gpus')
+ @classmethod
+ def determine_version(cls, lib):
+ match = re.search(r'lib\S*\.so\.(\d+\.\d+\.\d+)',
+ lib)
+ return match.group(1) if match else None
+
@property
def build_targets(self):
cuda_arch = self.spec.variants['cuda_arch'].value
diff --git a/var/spack/repos/builtin/packages/rccl/package.py b/var/spack/repos/builtin/packages/rccl/package.py
index 4544fafedb..51c23b8143 100644
--- a/var/spack/repos/builtin/packages/rccl/package.py
+++ b/var/spack/repos/builtin/packages/rccl/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import re
+
from spack import *
@@ -17,6 +19,7 @@ class Rccl(CMakePackage):
url = "https://github.com/ROCmSoftwarePlatform/rccl/archive/rocm-5.0.0.tar.gz"
maintainers = ['srekolam', 'arjun-raj-kuppala']
+ libraries = ['librccl.so']
version('5.0.2', sha256='a2377ad2332b93d3443a8ee74f4dd9f965ae8cbbfad473f8f57ca17905389a39')
version('5.0.0', sha256='80eb70243f11b80e215458a67c278cd5a655f6e486289962b92ba3504e50af5c')
@@ -53,6 +56,18 @@ class Rccl(CMakePackage):
for ver in ['4.5.0', '4.5.2', '5.0.0', '5.0.2']:
depends_on('rocm-smi-lib@' + ver, when='@' + ver)
+ @classmethod
+ def determine_version(cls, lib):
+ match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)',
+ lib)
+ if match:
+ ver = '{0}.{1}.{2}'.format(int(match.group(1)),
+ int(match.group(2)),
+ int(match.group(3)))
+ else:
+ ver = None
+ return ver
+
def setup_build_environment(self, env):
env.set('CXX', self.spec['hip'].hipcc)
diff --git a/var/spack/repos/builtin/packages/rdma-core/package.py b/var/spack/repos/builtin/packages/rdma-core/package.py
index ebd1a3a447..b6846edd33 100644
--- a/var/spack/repos/builtin/packages/rdma-core/package.py
+++ b/var/spack/repos/builtin/packages/rdma-core/package.py
@@ -3,6 +3,8 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import re
+
from spack import *
@@ -11,6 +13,7 @@ class RdmaCore(CMakePackage):
homepage = "https://github.com/linux-rdma/rdma-core"
url = "https://github.com/linux-rdma/rdma-core/releases/download/v17.1/rdma-core-17.1.tar.gz"
+ libraries = ['librdmacm.so']
version('39.0', sha256='f6eaf0de9fe386e234e00a18a553f591143f50e03342c9fdd703fa8747bf2378')
version('34.0', sha256='3d9ccf66468cf78f4c39bebb8bd0c5eb39150ded75f4a88a3455c4f625408be8')
@@ -34,6 +37,12 @@ class RdmaCore(CMakePackage):
conflicts('platform=darwin', msg='rdma-core requires FreeBSD or Linux')
conflicts('%intel', msg='rdma-core cannot be built with intel (use gcc instead)')
+ @classmethod
+ def determine_version(cls, lib):
+ match = re.search(r'lib\S*\.so\.\d+\.\d+\.(\d+\.\d+)',
+ lib)
+ return match.group(1) if match else None
+
# NOTE: specify CMAKE_INSTALL_RUNDIR explicitly to prevent rdma-core from
# using the spack staging build dir (which may be a very long file
# system path) as a component in compile-time static strings such as