From 8f246a65e2095fb6fabfea75d4032516200a3238 Mon Sep 17 00:00:00 2001 From: Federico Di Pierro Date: Fri, 29 Mar 2024 11:52:33 +0100 Subject: [PATCH 1/2] fix(pkg/driver): properly fixup KernelVersion before executing driverkit kernel download script template. Signed-off-by: Federico Di Pierro --- pkg/driver/distro/distro.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/driver/distro/distro.go b/pkg/driver/distro/distro.go index cbe22160..316aa39e 100644 --- a/pkg/driver/distro/distro.go +++ b/pkg/driver/distro/distro.go @@ -208,7 +208,12 @@ func Build(ctx context.Context, // try to load kernel headers urls from driverkit. if _, found := env[drivertype.KernelDirEnv]; !found { printer.Logger.Debug("Trying to automatically fetch kernel headers.") - kernelHeadersPath, cleaner, err := loadKernelHeadersFromDk(d.String(), kr) + // KernelVersion needs to be fixed up; it is only used by driverkit Ubuntu builder + // and we must ensure that it is correctly set. + fixedKr := d.FixupKernel(kr) + kVerFixedKr := kr + kVerFixedKr.KernelVersion = fixedKr.KernelVersion + kernelHeadersPath, cleaner, err := loadKernelHeadersFromDk(d.String(), kVerFixedKr) if cleaner != nil { defer cleaner() } From 70289f442fa194b6f2112b1a48afb1e900df6232 Mon Sep 17 00:00:00 2001 From: Federico Di Pierro Date: Fri, 29 Mar 2024 11:54:58 +0100 Subject: [PATCH 2/2] chore(pkg/driver): bump driverkit to v0.18.2 and adjust kernel-download script helper. Signed-off-by: Federico Di Pierro --- pkg/driver/distro/distro.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/driver/distro/distro.go b/pkg/driver/distro/distro.go index 316aa39e..2cd0dd1e 100644 --- a/pkg/driver/distro/distro.go +++ b/pkg/driver/distro/distro.go @@ -17,6 +17,8 @@ package driverdistro import ( + "bufio" + "bytes" "compress/gzip" "errors" "fmt" @@ -140,8 +142,18 @@ func loadKernelHeadersFromDk(distro string, kr kernelrelease.KernelRelease) (str if err != nil { return "", nil, err } + script += "\necho $KERNELDIR" out, err := exec.Command("bash", "-c", script).Output() //nolint:gosec // false positive - path := strings.TrimSuffix(string(out), "\n") + var path string + if err == nil { + // Scan all stdout line by line and + // store last line as KERNELDIR path. + reader := bytes.NewReader(out) + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + path = scanner.Text() + } + } return path, func() { _ = os.RemoveAll("/tmp/kernel-download") _ = os.RemoveAll(path)