Skip to content

Commit af1fef1

Browse files
committed
kernel_source_installer: optional devtoolset for <3.10
Signed-off-by: Pavel Boldin <[email protected]>
1 parent 0e40c4d commit af1fef1

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

lisa/transformers/kernel_source_installer.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from lisa.tools import Cp, Echo, Git, Make, Sed, Uname
1515
from lisa.tools.gcc import Gcc
1616
from lisa.tools.lscpu import Lscpu
17-
from lisa.util import LisaException, field_metadata, subclasses
17+
from lisa.util import LisaException, VersionInfo, field_metadata, subclasses, parse_version
1818
from lisa.util.logger import Logger, get_logger
1919

2020
from .kernel_installer import BaseInstaller, BaseInstallerSchema
@@ -158,28 +158,39 @@ def install(self) -> str:
158158
# modify code
159159
self._modify_code(node=node, code_path=self._code_path)
160160

161+
162+
result = node.execute(
163+
"make kernelversion 2>/dev/null",
164+
cwd=self._code_path,
165+
shell=True,
166+
)
167+
result.assert_exit_code(
168+
0,
169+
f"failed on get kernel version: {result.stdout}",
170+
)
171+
kernel_version = parse_version(result.stdout)
172+
161173
kconfig_file = runbook.kernel_config_file
162174
self._build_code(
163-
node=node, code_path=self._code_path, kconfig_file=kconfig_file
175+
node=node, code_path=self._code_path, kconfig_file=kconfig_file,
176+
kernel_version=kernel_version
164177
)
165-
166178
self._install_build(node=node, code_path=self._code_path)
167179

168180
result = node.execute(
169181
"make kernelrelease 2>/dev/null",
170182
cwd=self._code_path,
171183
shell=True,
172184
)
173-
174-
kernel_version = result.stdout
175185
result.assert_exit_code(
176186
0,
177-
f"failed on get kernel version: {kernel_version}",
187+
f"failed on get kernel release: {result.stdout}",
178188
)
189+
kernel_release = result.stdout
179190

180191
# copy current config back to system folder.
181192
result = node.execute(
182-
f"cp .config /boot/config-{kernel_version}",
193+
f"cp .config /boot/config-{kernel_release}",
183194
cwd=self._code_path,
184195
sudo=True,
185196
)
@@ -227,7 +238,7 @@ def _modify_code(self, node: Node, code_path: PurePath) -> None:
227238
self._log.debug(f"modifying code by {modifier.type_name()}")
228239
modifier.modify()
229240

230-
def _build_code(self, node: Node, code_path: PurePath, kconfig_file: str) -> None:
241+
def _build_code(self, node: Node, code_path: PurePath, kconfig_file: str, kernel_version: VersionInfo) -> None:
231242
self._log.info("building code...")
232243

233244
uname = node.tools[Uname]
@@ -287,7 +298,8 @@ def _build_code(self, node: Node, code_path: PurePath, kconfig_file: str) -> Non
287298
result.assert_exit_code()
288299

289300
# the gcc version of Redhat 7.x is too old. Upgrade it.
290-
if isinstance(node.os, Redhat) and node.os.information.version < "8.0.0":
301+
if kernel_version > "3.10.0" and isinstance(node.os, Redhat) and node.os.information.version < "8.0.0":
302+
node.os.install_packages(["centos-release-scl"])
291303
node.os.install_packages(["devtoolset-8"])
292304
node.tools[Mv].move("/bin/gcc", "/bin/gcc_back", overwrite=True, sudo=True)
293305
result.assert_exit_code()

0 commit comments

Comments
 (0)