summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/cmake/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/cmake/package.py')
-rw-r--r--var/spack/repos/builtin/packages/cmake/package.py21
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,