From 2c7341f0d81b8a1897332eb720224f894811ba99 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Wed, 22 Mar 2023 18:20:45 +0000 Subject: [PATCH] Add force reinstall flag --- kernel.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/kernel.go b/kernel.go index 4168565..226e4b3 100644 --- a/kernel.go +++ b/kernel.go @@ -27,6 +27,7 @@ import ( type KernelCmd struct { NoDownload bool `help:"do not download qemu image while kernel generation"` UseHost bool `help:"also use host kernels"` + Force bool `help:"force reinstall kernel"` List KernelListCmd `cmd:"" help:"list kernels"` Autogen KernelAutogenCmd `cmd:"" help:"generate kernels based on the current config"` @@ -68,7 +69,7 @@ func (cmd KernelAutogenCmd) Run(kernelCmd *KernelCmd, g *Globals) (err error) { return } - err = generateKernels(sk, g.Config.Docker.Registry, g.Config.Docker.Commands, cmd.Max, !kernelCmd.NoDownload) + err = generateKernels(sk, g.Config.Docker.Registry, g.Config.Docker.Commands, cmd.Max, !kernelCmd.NoDownload, kernelCmd.Force) if err != nil { return } @@ -98,6 +99,7 @@ func (cmd *KernelGenallCmd) Run(kernelCmd *KernelCmd, g *Globals) (err error) { g.Config.Docker.Commands, math.MaxUint32, !kernelCmd.NoDownload, + kernelCmd.Force, ) if err != nil { return @@ -333,7 +335,7 @@ func generateBaseDockerImage(registry string, commands []config.DockerCommand, return } -func installKernel(sk config.KernelMask, pkgname string) (err error) { +func installKernel(sk config.KernelMask, pkgname string, force bool) (err error) { slog := log.With(). Str("distro_type", sk.DistroType.String()). Str("distro_release", sk.DistroRelease). @@ -352,9 +354,12 @@ func installKernel(sk config.KernelMask, pkgname string) (err error) { for _, krel := range moddirs { if strings.Contains(pkgname, krel.Name()) { - // already installed kernel - slog.Debug().Msg("Already installed") - return + if force { + slog.Info().Msg("Reinstall") + } else { + slog.Debug().Msg("Already installed") + return + } } } @@ -608,7 +613,7 @@ func shuffle(a []string) []string { func generateKernels(km config.KernelMask, registry string, commands []config.DockerCommand, max int64, - download bool) (err error) { + download, force bool) (err error) { log.Info().Msgf("Generating for kernel mask %v", km) @@ -646,7 +651,7 @@ func generateKernels(km config.KernelMask, registry string, log.Info().Msgf("%d/%d %s", i+1, len(pkgs), pkg) - err = installKernel(km, pkg) + err = installKernel(km, pkg, force) if err == nil { max-- } else {