Add function to determine Linux kernel version (#27855)

This reports the kernel version (vs. the distro version) on Linux and
returns a valid Version (stripping characters like '+' which may be
present for custom-built kernels).
This commit is contained in:
Andrew W Elble
2022-01-05 13:22:43 -05:00
committed by GitHub
parent 52cfd17917
commit a4f0fbafbb
2 changed files with 22 additions and 1 deletions

View File

@@ -2,11 +2,31 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import platform as py_platform
import re
from spack.version import Version
from ._operating_system import OperatingSystem
def kernel_version():
"""Return the kernel version as a Version object.
Note that the kernel version is distinct from OS and/or
distribution versions. For instance:
>>> external.distro.id()
'centos'
>>> external.distro.version()
'7'
>>> platform.release()
'5.10.84+'
"""
# Strip '+' characters just in case we're running a
# version built from git/etc
clean_version = re.sub(r'\+', r'', py_platform.release())
return Version(clean_version)
class LinuxDistro(OperatingSystem):
""" This class will represent the autodetected operating system
for a Linux System. Since there are many different flavors of