diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/cmake/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/cmake/package.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index acf5b1fcdc..cfc13c436d 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -5,6 +5,9 @@ from spack import * +import re +import os + class Cmake(Package): """A cross-platform, open-source build system. CMake is a family of @@ -13,6 +16,8 @@ class Cmake(Package): url = 'https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5.tar.gz' maintainers = ['chuckatkins'] + executables = ['cmake'] + version('3.17.1', sha256='3aa9114485da39cbd9665a0bfe986894a282d5f0882b1dea960a739496620727') version('3.17.0', sha256='b74c05b55115eacc4fa2b77a814981dbda05cdc95a53e279fe16b7b272f00847') version('3.16.5', sha256='5f760b50b8ecc9c0c37135fae5fbf00a2fef617059aa9d61c1bb91653e5a8bfc') @@ -146,6 +151,22 @@ class Cmake(Package): phases = ['bootstrap', 'build', 'install'] + @classmethod + def determine_spec_details(cls, prefix, exes_in_prefix): + exe_to_path = dict( + (os.path.basename(p), p) for p in exes_in_prefix + ) + if 'cmake' not in exe_to_path: + return None + + cmake = spack.util.executable.Executable(exe_to_path['cmake']) + output = cmake('--version', output=str) + if output: + match = re.search(r'cmake.*version\s+(\S+)', output) + if match: + version_str = match.group(1) + return Spec('cmake@{0}'.format(version_str)) + def flag_handler(self, name, flags): if name == 'cxxflags' and self.compiler.name == 'fj': cxx11plus_flags = (self.compiler.cxx11_flag, |