From a0e5e339001d1eaa427077c691e8ae87138dbf9b Mon Sep 17 00:00:00 2001 From: Abiola Ibrahim Date: Fri, 3 Jun 2022 15:37:27 +0100 Subject: [PATCH] fix #316: find qemu with platform specific binary --- daemon/process/gvproxy/deps.go | 2 +- environment/vm/lima/lima.go | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/daemon/process/gvproxy/deps.go b/daemon/process/gvproxy/deps.go index 79de7d528..d3fbce9f0 100644 --- a/daemon/process/gvproxy/deps.go +++ b/daemon/process/gvproxy/deps.go @@ -73,7 +73,7 @@ func (q qemuShareDirSymlink) Install(host environment.HostActions) error { return fmt.Errorf("error preparing qemu wrapper shared directory: %w", err) } - qemu, err := exec.LookPath("qemu-img") + qemu, err := exec.LookPath("qemu-system-" + string(environment.HostArch().Value())) if err != nil { return fmt.Errorf("error locating qemu binaries in PATH: %w", err) } diff --git a/environment/vm/lima/lima.go b/environment/vm/lima/lima.go index c2a9090d3..e29233cb9 100644 --- a/environment/vm/lima/lima.go +++ b/environment/vm/lima/lima.go @@ -118,6 +118,8 @@ func (l *limaVM) startDaemon(ctx context.Context, conf config.Config) (context.C a := l.Init(ctx) log := l.Logger(ctx) + installedKey := struct{ key string }{key: "installed"} + a.Stage("preparing network") a.Add(func() error { ctx = context.WithValue(ctx, ctxKeyGVProxy, true) @@ -126,6 +128,7 @@ func (l *limaVM) startDaemon(ctx context.Context, conf config.Config) (context.C } deps, root := l.daemon.Dependencies(ctx) if deps.Installed() { + ctx = context.WithValue(ctx, installedKey, true) return nil } @@ -135,7 +138,13 @@ func (l *limaVM) startDaemon(ctx context.Context, conf config.Config) (context.C log.Println("dependencies missing for setting up reachable IP address") log.Println("sudo password may be required") } - return deps.Install(l.host) + + // install deps + err := deps.Install(l.host) + if err != nil { + ctx = context.WithValue(ctx, installedKey, false) + } + return err }) a.Add(func() error { @@ -166,6 +175,12 @@ func (l *limaVM) startDaemon(ctx context.Context, conf config.Config) (context.C // network failure is not fatal if err := a.Exec(); err != nil { func() { + installed, _ := ctx.Value(installedKey).(bool) + if !installed { + log.Warnln(fmt.Errorf("error setting up network dependencies: %w", err)) + return + } + status, ok := ctx.Value(statusKey).(daemon.Status) if !ok { return