From f827a72beeefd631c79278936ca915ff52da0cf3 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Sat, 27 May 2023 16:56:15 +0000 Subject: [PATCH] feat: build for 5.15.0 kernel modules in ol9 container --- distro/oraclelinux/oraclelinux.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/distro/oraclelinux/oraclelinux.go b/distro/oraclelinux/oraclelinux.go index c6dda3a..e191b3e 100644 --- a/distro/oraclelinux/oraclelinux.go +++ b/distro/oraclelinux/oraclelinux.go @@ -42,6 +42,15 @@ func (ol OracleLinux) Packages() (pkgs []string, err error) { return } + if ol.release == "8" { + // Image for ol9 is required for some kernels + // See notes in OracleLinux.Kernels() + _, err = OracleLinux{release: "9"}.Packages() + if err != nil { + return + } + } + cmd := "yum search kernel --showduplicates 2>/dev/null " + "| grep '^kernel-[0-9]\\|^kernel-uek-[0-9]' " + "| grep -v src " + @@ -65,7 +74,23 @@ func (ol OracleLinux) Kernels() (kernels []distro.KernelInfo, err error) { return } - return c.Kernels() + kernels, err = c.Kernels() + if err != nil { + return + } + + for i, k := range kernels { + // The latest uek kernels require gcc-11, which is + // only present in el8 with scl load, so not so + // convinient. It is possible to just build from + // the next release container. + if strings.Contains(k.KernelVersion, "5.15.0") { + cnt := strings.Replace(k.ContainerName, "8", "9", -1) + kernels[i].ContainerName = cnt + } + } + + return } func (ol OracleLinux) envs() (envs []string) {