From 6ac31861327d07894f4793b5b8751712ecbfec57 Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam <67086238+srekolam@users.noreply.github.com> Date: Fri, 17 Jun 2022 00:34:49 -0700 Subject: Support 'spack external find' for rocm packages (#30792) --- var/spack/repos/builtin/packages/comgr/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/hip/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/hipblas/package.py | 2 +- var/spack/repos/builtin/packages/hipsolver/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/hipsparse/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/hsa-rocr-dev/package.py | 15 ++++++++++++++- var/spack/repos/builtin/packages/migraphx/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/miopen-hip/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/miopen-opencl/package.py | 14 ++++++++++++++ .../repos/builtin/packages/miopen-tensile/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/miopengemm/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/rccl/package.py | 2 +- var/spack/repos/builtin/packages/rdc/package.py | 13 +++++++++++++ var/spack/repos/builtin/packages/rocalution/package.py | 13 +++++++++++++ var/spack/repos/builtin/packages/rocblas/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocfft/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocm-dbgapi/package.py | 14 ++++++++++++++ .../repos/builtin/packages/rocm-debug-agent/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocm-opencl/package.py | 15 +++++++++++++++ var/spack/repos/builtin/packages/rocm-smi-lib/package.py | 14 ++++++++++++++ .../repos/builtin/packages/rocprofiler-dev/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocrand/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocsolver/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/rocsparse/package.py | 14 ++++++++++++++ var/spack/repos/builtin/packages/roctracer-dev/package.py | 14 ++++++++++++++ 25 files changed, 328 insertions(+), 3 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/comgr/package.py b/var/spack/repos/builtin/packages/comgr/package.py index cc6add98d9..bf02cf40d4 100644 --- a/var/spack/repos/builtin/packages/comgr/package.py +++ b/var/spack/repos/builtin/packages/comgr/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -16,6 +17,7 @@ class Comgr(CMakePackage): url = "https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['libamd_comgr'] version('master', branch='amd-stg-open') @@ -62,3 +64,15 @@ class Comgr(CMakePackage): depends_on('rocm-device-libs@' + ver, when='@{0} ^llvm-amdgpu ~rocm-device-libs'.format(ver)) root_cmakelists_dir = join_path('lib', 'comgr') + + @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 diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index e791484f06..caeed65cf7 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import re from spack.hooks.sbang import filter_shebang from spack.package import * @@ -20,6 +21,8 @@ class Hip(CMakePackage): url = "https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['libamdhip64'] + version('master', branch='master') version('5.1.3', sha256='ce755ee6e407904eba3f6b3c9efcdd48eb4f58a26b06e1892166d05f19a75973') version('5.1.0', sha256='47e542183699f4005c48631d96f6a1fbdf27e07ad3402ccd7b5f707c2c602266') @@ -197,6 +200,18 @@ class Hip(CMakePackage): return paths + @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 set_variables(self, env): # Note: do not use self.spec[name] here, since not all dependencies # have defined prefixes when hip is marked as external. diff --git a/var/spack/repos/builtin/packages/hipblas/package.py b/var/spack/repos/builtin/packages/hipblas/package.py index 095267b24e..d3200282db 100644 --- a/var/spack/repos/builtin/packages/hipblas/package.py +++ b/var/spack/repos/builtin/packages/hipblas/package.py @@ -17,7 +17,7 @@ class Hipblas(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/hipBLAS/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] - libraries = ['libhipblas.so'] + libraries = ['libhipblas'] version('5.1.3', sha256='f0fdaa851971b41b48ec2e7d640746fbd6f9f433da2020c5fd95c91a7473d9e1') version('5.1.0', sha256='22faba3828e50a4c4e22f569a7d6441c797a11db1d472619c01d3515a3275e92') diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 83ce5a2151..1222bc2892 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -19,6 +21,7 @@ class Hipsolver(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/hipSOLVER/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam'] + libraries = ['libhipsolver'] version('5.1.3', sha256='96faa799a2db8078b72f9c3b5c199179875a7c20dc1064371b22a6a63397c145') version('5.1.0', sha256='697ba2b2814e7ac6f79680e6455b4b5e0def1bee2014b6940f47be7d13c0ae74') @@ -40,6 +43,18 @@ class Hipsolver(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) + @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 = [ self.define('BUILD_CLIENTS_SAMPLES', 'OFF'), diff --git a/var/spack/repos/builtin/packages/hipsparse/package.py b/var/spack/repos/builtin/packages/hipsparse/package.py index d4cbdb61de..22b4863914 100644 --- a/var/spack/repos/builtin/packages/hipsparse/package.py +++ b/var/spack/repos/builtin/packages/hipsparse/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -15,6 +17,7 @@ class Hipsparse(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/hipSPARSE/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['libhipsparse'] version('5.1.3', sha256='6e6a0752654f0d391533df8cedf4b630a78ad34c99087741520c582963ce1602') version('5.1.0', sha256='f41329534f2ff477a0db6b7f77a72bb062f117800970c122d676db8b207ce80b') @@ -52,6 +55,18 @@ class Hipsparse(CMakePackage): patch('e79985dccde22d826aceb3badfc643a3227979d2.patch', when='@3.5.0') patch('530047af4a0f437dafc02f76b3a17e3b1536c7ec.patch', when='@3.5.0') + @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/hsa-rocr-dev/package.py b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py index a2c67ebc1e..6709f977d1 100644 --- a/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py +++ b/var/spack/repos/builtin/packages/hsa-rocr-dev/package.py @@ -3,8 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - import os +import re from spack.package import * @@ -20,6 +20,7 @@ class HsaRocrDev(CMakePackage): url = "https://github.com/RadeonOpenCompute/ROCR-Runtime/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['libhsa-runtime64'] version('master', branch='master') version('5.1.3', sha256='479340ec34cdffbbdb1002c85a47d1fccd23e8394631a1f001ef6130be08287d') @@ -64,6 +65,18 @@ class HsaRocrDev(CMakePackage): root_cmakelists_dir = 'src' + @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): spec = self.spec diff --git a/var/spack/repos/builtin/packages/migraphx/package.py b/var/spack/repos/builtin/packages/migraphx/package.py index 38ba2142d4..adf3050f55 100644 --- a/var/spack/repos/builtin/packages/migraphx/package.py +++ b/var/spack/repos/builtin/packages/migraphx/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -14,6 +16,7 @@ class Migraphx(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libmigraphx'] version('5.1.3', sha256='686e068774500a46b6e6488370bbf5bd0bba6d19ecdb00636f951704d19c9ef2') version('5.1.0', sha256='6398efaef18a74f2a475aa21bd34bc7c077332a430ee3f6ba4fde6e6a6aa9f89') @@ -75,6 +78,18 @@ class Migraphx(CMakePackage): self.define('Python_INCLUDE_DIR', python.package.config_vars['include']) ] + @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 = [ '-DCMAKE_CXX_COMPILER={0}/bin/clang++' diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index 14cad7bcf5..155b04aa7b 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * from spack.pkg.builtin.boost import Boost @@ -16,6 +17,7 @@ class MiopenHip(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libMIOpen'] version('5.1.3', sha256='510461f5c5bdbcf8dc889099d1e5960b9f84bd845a9fc9154588a9898c701c1d') version('5.1.0', sha256='bb50201334d68addf153b84b88ab803027c4913d71bdbda6f5ccde3f672f6fdd') @@ -76,6 +78,18 @@ class MiopenHip(CMakePackage): else: return spec['llvm-amdgpu'].prefix.lib + @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): spec = self.spec diff --git a/var/spack/repos/builtin/packages/miopen-opencl/package.py b/var/spack/repos/builtin/packages/miopen-opencl/package.py index b6c43d0155..f92d71f06f 100644 --- a/var/spack/repos/builtin/packages/miopen-opencl/package.py +++ b/var/spack/repos/builtin/packages/miopen-opencl/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * from spack.pkg.builtin.boost import Boost @@ -16,6 +17,7 @@ class MiopenOpencl(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libMIOpen'] version('5.1.3', sha256='510461f5c5bdbcf8dc889099d1e5960b9f84bd845a9fc9154588a9898c701c1d') version('5.1.0', sha256='bb50201334d68addf153b84b88ab803027c4913d71bdbda6f5ccde3f672f6fdd') @@ -64,6 +66,18 @@ class MiopenOpencl(CMakePackage): for ver in ['5.1.0', '5.1.3']: depends_on('mlirmiopen@' + 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 cmake_args(self): args = [ self.define('MIOPEN_BACKEND', 'OpenCL'), diff --git a/var/spack/repos/builtin/packages/miopen-tensile/package.py b/var/spack/repos/builtin/packages/miopen-tensile/package.py index 3a374e2856..f582d60df2 100644 --- a/var/spack/repos/builtin/packages/miopen-tensile/package.py +++ b/var/spack/repos/builtin/packages/miopen-tensile/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -16,6 +17,7 @@ class MiopenTensile(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/MIOpentensile/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam'] + libraries = ['libMIOpenTensile'] version('5.1.0', sha256='f1ae57bd4df8c154357b3f17caf0cfd5f80ba16ffff67bf6219a56f1eb5f897d') version('5.0.2', sha256='7b85a6a37d0905b0a3baa8361fd71a5a32ad90f3a562fd5e1af7e2ba68099fa6') @@ -54,6 +56,18 @@ class MiopenTensile(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) + @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): arch = self.spec.variants['tensile_architecture'].value tensile_path = join_path(self.stage.source_path, 'Tensile') diff --git a/var/spack/repos/builtin/packages/miopengemm/package.py b/var/spack/repos/builtin/packages/miopengemm/package.py index 4f7bb9a892..f5d0ed7af2 100644 --- a/var/spack/repos/builtin/packages/miopengemm/package.py +++ b/var/spack/repos/builtin/packages/miopengemm/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -15,6 +17,7 @@ class Miopengemm(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libmiopengemm'] def url_for_version(self, version): if version == Version('1.1.6'): @@ -50,3 +53,15 @@ class Miopengemm(CMakePackage): '5.0.2', '5.1.0', '5.1.3']: depends_on('rocm-cmake@' + ver, type='build', when='@' + ver) depends_on('rocm-opencl@' + 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 diff --git a/var/spack/repos/builtin/packages/rccl/package.py b/var/spack/repos/builtin/packages/rccl/package.py index b3f540a189..675234cc08 100644 --- a/var/spack/repos/builtin/packages/rccl/package.py +++ b/var/spack/repos/builtin/packages/rccl/package.py @@ -19,7 +19,7 @@ class Rccl(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rccl/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] - libraries = ['librccl.so'] + libraries = ['librccl'] version('5.1.3', sha256='56491257f27b48bf85f4b91434a2a6e49a448337c889db181b02c8a4a260a4bc') version('5.1.0', sha256='02b0180857e615326f9cab775573436b9162899ad8e526830f54392b8a51b1f5') diff --git a/var/spack/repos/builtin/packages/rdc/package.py b/var/spack/repos/builtin/packages/rdc/package.py index 16f258749f..f027f4d26e 100644 --- a/var/spack/repos/builtin/packages/rdc/package.py +++ b/var/spack/repos/builtin/packages/rdc/package.py @@ -14,6 +14,7 @@ class Rdc(CMakePackage): url = "https://github.com/RadeonOpenCompute/rdc/archive/rocm-4.3.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librdc'] def url_for_version(self, version): if version == Version('3.9.0'): @@ -61,6 +62,18 @@ class Rdc(CMakePackage): '{0}/bin/protoc'.format(self.spec['protobuf'].prefix), 'CMakeLists.txt', string=True) + @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): rpath = self.rpath rpath.append(self.prefix.opt.rocm.rdc.lib) diff --git a/var/spack/repos/builtin/packages/rocalution/package.py b/var/spack/repos/builtin/packages/rocalution/package.py index 123b679f5d..898a3ecfcc 100644 --- a/var/spack/repos/builtin/packages/rocalution/package.py +++ b/var/spack/repos/builtin/packages/rocalution/package.py @@ -21,6 +21,7 @@ class Rocalution(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocALUTION/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocalution_hip'] version('5.1.3', sha256='7febe8179f120cbe58ea255bc233ad5d1b4c106f3934eb8e670135a8b7bd09c7') version('5.1.0', sha256='d9122189103ebafe7ec5aeb50e60f3e02af5c2747021f9071aab91e7f875c29e') @@ -83,6 +84,18 @@ class Rocalution(CMakePackage): files = ['hip_rand_normal.hpp', 'hip_rand_uniform.hpp'] filter_file(match, substitute, *files, **kwargs) + @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 = [ self.define('CMAKE_MODULE_PATH', self.spec['hip'].prefix.cmake), diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index baf80b1cef..fc132fc95a 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -15,6 +16,7 @@ class Rocblas(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocBLAS/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['librocblas'] version('5.1.3', sha256='915374431db8f0cecdc2bf318a0ad33c3a8eceedc461d7a06b92ccb02b07313c') version('5.1.0', sha256='efa0c424b5ada697314aa8a78c19c93ade15f1612c4bfc8c53d71d1c9719aaa3') @@ -126,6 +128,18 @@ class Rocblas(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) + @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 = [ self.define('BUILD_CLIENTS_TESTS', diff --git a/var/spack/repos/builtin/packages/rocfft/package.py b/var/spack/repos/builtin/packages/rocfft/package.py index 7b0ec290e9..e72df79535 100644 --- a/var/spack/repos/builtin/packages/rocfft/package.py +++ b/var/spack/repos/builtin/packages/rocfft/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -15,6 +16,7 @@ class Rocfft(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocfft/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['librocfft'] version('5.1.3', sha256='b4fcd03c1b07d465bb307ec33cc7fb50036dff688e497c5e52b2dec37f4cb618') version('5.1.0', sha256='dc11c9061753ae43a9d5db9c4674aa113a8adaf50818b2701cbb940894147f68') @@ -70,6 +72,18 @@ class Rocfft(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) + @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 = [ self.define('BUILD_CLIENTS_TESTS', self.run_tests), diff --git a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py index a8624d5501..416d87196a 100644 --- a/var/spack/repos/builtin/packages/rocm-dbgapi/package.py +++ b/var/spack/repos/builtin/packages/rocm-dbgapi/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -18,6 +19,7 @@ class RocmDbgapi(CMakePackage): url = "https://github.com/ROCm-Developer-Tools/ROCdbgapi/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocm-dbgapi'] version('master', branch='amd-master') version('5.1.3', sha256='880f80ebf741e3451676837f720551e02cffd0b9346ca4dfa6cf7f7043282f2b') @@ -47,6 +49,18 @@ class RocmDbgapi(CMakePackage): depends_on('hsa-rocr-dev@' + ver, type='build', when='@' + ver) depends_on('comgr@' + ver, type=('build', 'link'), 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 patch(self): filter_file(r'()', r'\1 {0}/include'. format(self.spec['hsa-rocr-dev'].prefix), 'CMakeLists.txt') diff --git a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py index 78499182c8..64d1f4b82c 100644 --- a/var/spack/repos/builtin/packages/rocm-debug-agent/package.py +++ b/var/spack/repos/builtin/packages/rocm-debug-agent/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -15,6 +16,7 @@ class RocmDebugAgent(CMakePackage): url = "https://github.com/ROCm-Developer-Tools/rocr_debug_agent/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocm-debug-agent'] version('5.1.3', sha256='ef26130829f3348d503669467ab1ea39fb67d943d88d64e7ac04b9617ec6067d') version('5.1.0', sha256='e0ceeef575d8645385bc6e4c9c3accaa192a93c42d83545cf5626c848f59806b') @@ -62,6 +64,18 @@ class RocmDebugAgent(CMakePackage): patch('0001-Drop-overly-strict-Werror-flag.patch', when='@3.7.0:') patch('0002-add-hip-architecture.patch', when='@3.9.0:') + @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 + @property def root_cmakelists_dir(self): if '@3.5.0' in self.spec: diff --git a/var/spack/repos/builtin/packages/rocm-opencl/package.py b/var/spack/repos/builtin/packages/rocm-opencl/package.py index eef3d0f0af..60f200af31 100644 --- a/var/spack/repos/builtin/packages/rocm-opencl/package.py +++ b/var/spack/repos/builtin/packages/rocm-opencl/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -13,6 +15,7 @@ class RocmOpencl(CMakePackage): git = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime.git" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libOpenCL'] def url_for_version(self, version): if version == Version('3.5.0'): @@ -74,6 +77,18 @@ class RocmOpencl(CMakePackage): depends_on('comgr@' + ver, type='build', when='@' + ver) depends_on('hsa-rocr-dev@' + ver, type='link', 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 flag_handler(self, name, flags): # The includes are messed up in ROCm 3.5.0: # ROCM-OpenCL-Runtime uses flat includes diff --git a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py index 3e737101e0..9ace8bcd1b 100644 --- a/var/spack/repos/builtin/packages/rocm-smi-lib/package.py +++ b/var/spack/repos/builtin/packages/rocm-smi-lib/package.py @@ -5,6 +5,7 @@ import os +import re import shutil from spack.package import * @@ -19,6 +20,7 @@ class RocmSmiLib(CMakePackage): url = "https://github.com/RadeonOpenCompute/rocm_smi_lib/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocm_smi64'] version('master', branch='master') version('5.1.3', sha256='8a19ce60dc9221545aa50e83e88d8c4be9bf7cde2425cefb13710131dc1d7b1b') @@ -51,6 +53,18 @@ class RocmSmiLib(CMakePackage): self.define_from_variant('BUILD_SHARED_LIBS', 'shared') ] + @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 + @run_after('install') def post_install(self): shutil.rmtree(self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/rocprofiler-dev/package.py b/var/spack/repos/builtin/packages/rocprofiler-dev/package.py index b2fcf0d941..2748981e15 100644 --- a/var/spack/repos/builtin/packages/rocprofiler-dev/package.py +++ b/var/spack/repos/builtin/packages/rocprofiler-dev/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -15,6 +16,7 @@ class RocprofilerDev(CMakePackage): url = "https://github.com/ROCm-Developer-Tools/rocprofiler/archive/refs/tags/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocprofiler64'] version('5.1.3', sha256='eca7be451c7bf000fd9c75683e7f5dfbed32dbb385b5ac685d2251ee8c3abc96') version('5.1.0', sha256='4a1c6ed887b0159392406af8796508df2794353a4c3aacc801116044fb4a10a5') @@ -54,6 +56,18 @@ class RocprofilerDev(CMakePackage): '${HSA_RUNTIME_LIB_PATH}/../include ${HSA_KMT_LIB_PATH}/..\ /include', 'test/CMakeLists.txt', string=True) + @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): return [ self.define( diff --git a/var/spack/repos/builtin/packages/rocrand/package.py b/var/spack/repos/builtin/packages/rocrand/package.py index 1d91ced0c0..b1ba5f446b 100644 --- a/var/spack/repos/builtin/packages/rocrand/package.py +++ b/var/spack/repos/builtin/packages/rocrand/package.py @@ -5,6 +5,7 @@ import glob import os +import re from spack.package import * @@ -18,6 +19,7 @@ class Rocrand(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocRAND/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocrand'] version('5.1.3', sha256='4a19e1bcb60955a02a73ad64594c23886d6749afe06b0104e2b877dbe02c8d1c') version('5.1.0', sha256='0c6f114a775d0b38be71f3f621a10bde2104a1f655d5d68c5fecb79b8b51a815') @@ -120,6 +122,18 @@ class Rocrand(CMakePackage): os.symlink(join_path('../../include/hiprand', header_file), header_file) + @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 = [ self.define('BUILD_BENCHMARK', 'OFF'), diff --git a/var/spack/repos/builtin/packages/rocsolver/package.py b/var/spack/repos/builtin/packages/rocsolver/package.py index b5d53e9ba0..e8327fdd3a 100644 --- a/var/spack/repos/builtin/packages/rocsolver/package.py +++ b/var/spack/repos/builtin/packages/rocsolver/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import itertools +import re from spack.package import * @@ -17,6 +18,7 @@ class Rocsolver(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocSOLVER/archive/rocm-5.0.2.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala', 'haampie'] + libraries = ['librocsolver'] amdgpu_targets = ( 'gfx803', 'gfx900', 'gfx906:xnack-', 'gfx908:xnack-', @@ -69,6 +71,18 @@ class Rocsolver(CMakePackage): when='@{0} amdgpu_target={1}'.format(ver, tgt)) depends_on('rocm-cmake@%s:' % 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 = [ self.define('BUILD_CLIENTS_SAMPLES', 'OFF'), diff --git a/var/spack/repos/builtin/packages/rocsparse/package.py b/var/spack/repos/builtin/packages/rocsparse/package.py index f0116723cf..b36a24cd8b 100644 --- a/var/spack/repos/builtin/packages/rocsparse/package.py +++ b/var/spack/repos/builtin/packages/rocsparse/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import itertools +import re from spack.package import * @@ -20,6 +21,7 @@ class Rocsparse(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/rocSPARSE/archive/rocm-5.0.0.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['librocsparse'] amdgpu_targets = ('gfx803', 'gfx900:xnack-', 'gfx906:xnack-', 'gfx908:xnack-', 'gfx90a:xnack-', 'gfx90a:xnack+', @@ -59,6 +61,18 @@ class Rocsparse(CMakePackage): def setup_build_environment(self, env): env.set('CXX', self.spec['hip'].hipcc) + @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 = [ self.define('BUILD_CLIENTS_SAMPLES', 'OFF'), diff --git a/var/spack/repos/builtin/packages/roctracer-dev/package.py b/var/spack/repos/builtin/packages/roctracer-dev/package.py index 6e40d27551..d860ee4efc 100644 --- a/var/spack/repos/builtin/packages/roctracer-dev/package.py +++ b/var/spack/repos/builtin/packages/roctracer-dev/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re from spack.package import * @@ -17,6 +18,7 @@ class RoctracerDev(CMakePackage): url = "https://github.com/ROCm-Developer-Tools/roctracer/archive/rocm-5.1.3.tar.gz" maintainers = ['srekolam', 'arjun-raj-kuppala'] + libraries = ['libroctracer64'] version('5.1.3', sha256='45f19875c15eb609b993788b47fd9c773b4216074749d7744f3a671be17ef33c') version('5.1.0', sha256='58b535f5d6772258190e4adcc23f37c916f775057a91b960e1f2ee1f40ed5aac') @@ -54,6 +56,18 @@ class RoctracerDev(CMakePackage): '5.1.0', '5.1.3']: depends_on('rocprofiler-dev@' + 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, build_env): spec = self.spec build_env.set("HIP_PATH", spec['hip'].prefix) -- cgit v1.2.3-60-g2f50