Merge pull request #27546 from jakecorrenti/libkrun-as-default

machine: change default macOS provider to libkrun
This commit is contained in:
openshift-merge-bot[bot]
2025-11-20 16:00:23 +00:00
committed by GitHub
3 changed files with 11 additions and 30 deletions

View File

@@ -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`

View File

@@ -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) {

View File

@@ -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())
}
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":