From 453a45142f6c6eadc1864969590cd08c85ce61a5 Mon Sep 17 00:00:00 2001 From: Jake Correnti Date: Wed, 5 Nov 2025 10:53:20 -0500 Subject: [PATCH] machine: change default macOS provider to libkrun Now that Podman 6.0 no longer supports Intel Macs, use libkrun as the default machine provider. Signed-off-by: Jake Correnti --- pkg/machine/e2e/README.md | 4 ++-- pkg/machine/provider/platform_darwin.go | 18 +++--------------- pkg/machine/provider/platform_test.go | 19 ++++++------------- 3 files changed, 11 insertions(+), 30 deletions(-) diff --git a/pkg/machine/e2e/README.md b/pkg/machine/e2e/README.md index 72a1c8bd951..07deb700e11 100644 --- a/pkg/machine/e2e/README.md +++ b/pkg/machine/e2e/README.md @@ -67,7 +67,7 @@ above. ## MacOS Macs now support two different machine providers: `applehv` and `libkrun`. The -`applehv` provider is the default. +`libkrun` provider is the default. Note: On macOS, an error will occur if the path length of `$TMPDIR` is longer than 22 characters. Please set the appropriate path to `$TMPDIR`. Also, if @@ -77,11 +77,11 @@ than 22 characters. Please set the appropriate path to `$TMPDIR`. Also, if 1. `brew install vfkit` 1. `make podman-remote` +1. `export CONTAINERS_MACHINE_PROVIDER="applehv"` 1. `make localmachine` ### [Libkrun](https://github.com/containers/libkrun) 1. `brew install krunkit` 1. `make podman-remote` -1. `export CONTAINERS_MACHINE_PROVIDER="libkrun"` 1. `make localmachine` diff --git a/pkg/machine/provider/platform_darwin.go b/pkg/machine/provider/platform_darwin.go index c6586a92ceb..5c16d1dc7eb 100644 --- a/pkg/machine/provider/platform_darwin.go +++ b/pkg/machine/provider/platform_darwin.go @@ -2,7 +2,6 @@ package provider import ( "bytes" - "errors" "fmt" "os" "os/exec" @@ -27,7 +26,7 @@ func Get() (vmconfigs.VMProvider, error) { if providerOverride, found := os.LookupEnv("CONTAINERS_MACHINE_PROVIDER"); found { provider = providerOverride } - resolvedVMType, err := define.ParseVMType(provider, define.AppleHvVirt) + resolvedVMType, err := define.ParseVMType(provider, define.LibKrun) if err != nil { return nil, err } @@ -43,9 +42,6 @@ func GetByVMType(resolvedVMType define.VMType) (vmconfigs.VMProvider, error) { case define.AppleHvVirt: return new(applehv.AppleHVStubber), nil case define.LibKrun: - if runtime.GOARCH == "amd64" { - return nil, errors.New("libkrun is not supported on Intel based machines. Please revert to the applehv provider") - } return new(libkrun.LibKrunStubber), nil default: } @@ -53,20 +49,12 @@ func GetByVMType(resolvedVMType define.VMType) (vmconfigs.VMProvider, error) { } func GetAll() []vmconfigs.VMProvider { - configs := []vmconfigs.VMProvider{new(applehv.AppleHVStubber)} - if runtime.GOARCH == "arm64" { - configs = append(configs, new(libkrun.LibKrunStubber)) - } - return configs + return []vmconfigs.VMProvider{new(libkrun.LibKrunStubber), new(applehv.AppleHVStubber)} } // SupportedProviders returns the providers that are supported on the host operating system func SupportedProviders() []define.VMType { - supported := []define.VMType{define.AppleHvVirt} - if runtime.GOARCH == "arm64" { - return append(supported, define.LibKrun) - } - return supported + return []define.VMType{define.AppleHvVirt, define.LibKrun} } func IsInstalled(provider define.VMType) (bool, error) { diff --git a/pkg/machine/provider/platform_test.go b/pkg/machine/provider/platform_test.go index 183fd6d7586..20cf1a92cf2 100644 --- a/pkg/machine/provider/platform_test.go +++ b/pkg/machine/provider/platform_test.go @@ -11,11 +11,7 @@ import ( func TestSupportedProviders(t *testing.T) { switch runtime.GOOS { case "darwin": - if runtime.GOARCH == "arm64" { - assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders()) - } else { - assert.Equal(t, []define.VMType{define.AppleHvVirt}, SupportedProviders()) - } + assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders()) case "windows": assert.Equal(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders()) case "linux": @@ -28,8 +24,7 @@ func TestInstalledProviders(t *testing.T) { assert.NoError(t, err) switch runtime.GOOS { case "darwin": - // TODO: need to verify if an arm64 machine reports {applehv, libkrun} - assert.Equal(t, []define.VMType{define.AppleHvVirt}, installed) + assert.Equal(t, []define.VMType{define.LibKrun, define.AppleHvVirt}, installed) case "windows": provider, err := Get() assert.NoError(t, err) @@ -60,9 +55,8 @@ func TestBadSupportedProviders(t *testing.T) { switch runtime.GOOS { case "darwin": assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders()) - if runtime.GOARCH != "arm64" { - assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders()) - } + assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders()) + assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, SupportedProviders()) case "windows": assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders()) case "linux": @@ -76,9 +70,8 @@ func TestBadInstalledProviders(t *testing.T) { switch runtime.GOOS { case "darwin": assert.NotEqual(t, []define.VMType{define.QemuVirt}, installed) - if runtime.GOARCH != "arm64" { - assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, installed) - } + assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, installed) + assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, installed) case "windows": assert.NotContains(t, installed, define.QemuVirt) case "linux":