From da5bb5ba70b65dca9ca989cd44507a4d0af21a57 Mon Sep 17 00:00:00 2001 From: John Logan Date: Thu, 6 Nov 2025 09:35:09 -0800 Subject: [PATCH 1/3] Use Rosetta by default for amd64 builds. --- main.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/main.go b/main.go index 750dadf..fe9d748 100644 --- a/main.go +++ b/main.go @@ -41,6 +41,7 @@ import ( var ( VERSION = "dev" debug = false + enableQemu = false socketPath = "/run/buildkit/shim.sock" buildkitdPath = "/usr/bin/buildkitd" basePath = "/var/lib/container-builder-shim" @@ -88,6 +89,10 @@ var app = &cobra.Command{ cancellableCtx, cancel := context.WithCancel(ctx) defer cancel() + if !enableQemu { + disableQemu() + } + errCh := make(chan error) go func() { config := buildkit.DefaultConfig @@ -140,8 +145,26 @@ var app = &cobra.Command{ }, } +func disableQemu() { + path := "/usr/bin/buildkit-qemu-x86_64" + disabled := path + ".disabled" + + if _, err := os.Stat(path); err == nil { + if err := os.Rename(path, disabled); err != nil { + log.Warnf("failed to disable %s: %v\n", path, err) + } else { + log.Infof("Renamed %s to %s\n", filepath.Base(path), filepath.Base(disabled)) + } + } else if os.IsNotExist(err) { + log.Infof("%s not found; nothing to do\n", path) + } else { + log.Warnf("error checking %s: %v\n", path, err) + } +} + func init() { app.PersistentFlags().BoolVarP(&debug, "debug", "d", debug, "enable debug logging") + app.Flags().BoolVar(&enableQemu, "enableQemu", enableQemu, "use QEMU instead of Rosetta for amd64 builds") app.Flags().IntVarP(&vsockPort, "vsock-port", "p", vsockPort, "vsock port for shim listener") app.Flags().BoolVarP(&vsockMode, "vsock", "v", vsockMode, "toggle vsock listener (turns off UDS listener)") app.Flags().StringVarP(&socketPath, "socket", "s", socketPath, "socket path for shim listener") From 3bb0dfb17042015667501c7df3163f98b4ec2900 Mon Sep 17 00:00:00 2001 From: John Logan Date: Thu, 6 Nov 2025 10:55:48 -0800 Subject: [PATCH 2/3] PR feedback - remove newlines from log msgs. --- main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index fe9d748..197bd57 100644 --- a/main.go +++ b/main.go @@ -151,14 +151,14 @@ func disableQemu() { if _, err := os.Stat(path); err == nil { if err := os.Rename(path, disabled); err != nil { - log.Warnf("failed to disable %s: %v\n", path, err) + log.Warnf("failed to disable %s: %v", path, err) } else { - log.Infof("Renamed %s to %s\n", filepath.Base(path), filepath.Base(disabled)) + log.Infof("Renamed %s to %s", filepath.Base(path), filepath.Base(disabled)) } } else if os.IsNotExist(err) { - log.Infof("%s not found; nothing to do\n", path) + log.Infof("%s not found; nothing to do", path) } else { - log.Warnf("error checking %s: %v\n", path, err) + log.Warnf("error checking %s: %v", path, err) } } From 7c7d4b2078a0b04df2d632a9d7c31dded5064da8 Mon Sep 17 00:00:00 2001 From: John Logan Date: Thu, 6 Nov 2025 10:56:20 -0800 Subject: [PATCH 3/3] Fix enable-qemu option name. --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index 197bd57..e05ce1b 100644 --- a/main.go +++ b/main.go @@ -164,7 +164,7 @@ func disableQemu() { func init() { app.PersistentFlags().BoolVarP(&debug, "debug", "d", debug, "enable debug logging") - app.Flags().BoolVar(&enableQemu, "enableQemu", enableQemu, "use QEMU instead of Rosetta for amd64 builds") + app.Flags().BoolVar(&enableQemu, "enable-qemu", enableQemu, "use QEMU instead of Rosetta for amd64 builds") app.Flags().IntVarP(&vsockPort, "vsock-port", "p", vsockPort, "vsock port for shim listener") app.Flags().BoolVarP(&vsockMode, "vsock", "v", vsockMode, "toggle vsock listener (turns off UDS listener)") app.Flags().StringVarP(&socketPath, "socket", "s", socketPath, "socket path for shim listener")