mirror of
https://github.com/containers/podman.git
synced 2025-11-28 17:18:58 +08:00
Merge pull request #27546 from jakecorrenti/libkrun-as-default
machine: change default macOS provider to libkrun
This commit is contained in:
@@ -67,7 +67,7 @@ above.
|
|||||||
## MacOS
|
## MacOS
|
||||||
|
|
||||||
Macs now support two different machine providers: `applehv` and `libkrun`. The
|
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
|
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
|
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. `brew install vfkit`
|
||||||
1. `make podman-remote`
|
1. `make podman-remote`
|
||||||
|
1. `export CONTAINERS_MACHINE_PROVIDER="applehv"`
|
||||||
1. `make localmachine`
|
1. `make localmachine`
|
||||||
|
|
||||||
### [Libkrun](https://github.com/containers/libkrun)
|
### [Libkrun](https://github.com/containers/libkrun)
|
||||||
|
|
||||||
1. `brew install krunkit`
|
1. `brew install krunkit`
|
||||||
1. `make podman-remote`
|
1. `make podman-remote`
|
||||||
1. `export CONTAINERS_MACHINE_PROVIDER="libkrun"`
|
|
||||||
1. `make localmachine`
|
1. `make localmachine`
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package provider
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@@ -27,7 +26,7 @@ func Get() (vmconfigs.VMProvider, error) {
|
|||||||
if providerOverride, found := os.LookupEnv("CONTAINERS_MACHINE_PROVIDER"); found {
|
if providerOverride, found := os.LookupEnv("CONTAINERS_MACHINE_PROVIDER"); found {
|
||||||
provider = providerOverride
|
provider = providerOverride
|
||||||
}
|
}
|
||||||
resolvedVMType, err := define.ParseVMType(provider, define.AppleHvVirt)
|
resolvedVMType, err := define.ParseVMType(provider, define.LibKrun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -43,9 +42,6 @@ func GetByVMType(resolvedVMType define.VMType) (vmconfigs.VMProvider, error) {
|
|||||||
case define.AppleHvVirt:
|
case define.AppleHvVirt:
|
||||||
return new(applehv.AppleHVStubber), nil
|
return new(applehv.AppleHVStubber), nil
|
||||||
case define.LibKrun:
|
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
|
return new(libkrun.LibKrunStubber), nil
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
@@ -53,20 +49,12 @@ func GetByVMType(resolvedVMType define.VMType) (vmconfigs.VMProvider, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetAll() []vmconfigs.VMProvider {
|
func GetAll() []vmconfigs.VMProvider {
|
||||||
configs := []vmconfigs.VMProvider{new(applehv.AppleHVStubber)}
|
return []vmconfigs.VMProvider{new(libkrun.LibKrunStubber), new(applehv.AppleHVStubber)}
|
||||||
if runtime.GOARCH == "arm64" {
|
|
||||||
configs = append(configs, new(libkrun.LibKrunStubber))
|
|
||||||
}
|
|
||||||
return configs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SupportedProviders returns the providers that are supported on the host operating system
|
// SupportedProviders returns the providers that are supported on the host operating system
|
||||||
func SupportedProviders() []define.VMType {
|
func SupportedProviders() []define.VMType {
|
||||||
supported := []define.VMType{define.AppleHvVirt}
|
return []define.VMType{define.AppleHvVirt, define.LibKrun}
|
||||||
if runtime.GOARCH == "arm64" {
|
|
||||||
return append(supported, define.LibKrun)
|
|
||||||
}
|
|
||||||
return supported
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsInstalled(provider define.VMType) (bool, error) {
|
func IsInstalled(provider define.VMType) (bool, error) {
|
||||||
|
|||||||
@@ -11,11 +11,7 @@ import (
|
|||||||
func TestSupportedProviders(t *testing.T) {
|
func TestSupportedProviders(t *testing.T) {
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
if runtime.GOARCH == "arm64" {
|
assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
|
||||||
assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
|
|
||||||
} else {
|
|
||||||
assert.Equal(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
|
|
||||||
}
|
|
||||||
case "windows":
|
case "windows":
|
||||||
assert.Equal(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
|
assert.Equal(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
|
||||||
case "linux":
|
case "linux":
|
||||||
@@ -28,8 +24,7 @@ func TestInstalledProviders(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
// TODO: need to verify if an arm64 machine reports {applehv, libkrun}
|
assert.Equal(t, []define.VMType{define.LibKrun, define.AppleHvVirt}, installed)
|
||||||
assert.Equal(t, []define.VMType{define.AppleHvVirt}, installed)
|
|
||||||
case "windows":
|
case "windows":
|
||||||
provider, err := Get()
|
provider, err := Get()
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@@ -60,9 +55,8 @@ func TestBadSupportedProviders(t *testing.T) {
|
|||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
|
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
|
||||||
if runtime.GOARCH != "arm64" {
|
assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
|
||||||
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
|
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
|
||||||
}
|
|
||||||
case "windows":
|
case "windows":
|
||||||
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
|
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
|
||||||
case "linux":
|
case "linux":
|
||||||
@@ -76,9 +70,8 @@ func TestBadInstalledProviders(t *testing.T) {
|
|||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "darwin":
|
case "darwin":
|
||||||
assert.NotEqual(t, []define.VMType{define.QemuVirt}, installed)
|
assert.NotEqual(t, []define.VMType{define.QemuVirt}, installed)
|
||||||
if runtime.GOARCH != "arm64" {
|
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, installed)
|
||||||
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, installed)
|
assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, installed)
|
||||||
}
|
|
||||||
case "windows":
|
case "windows":
|
||||||
assert.NotContains(t, installed, define.QemuVirt)
|
assert.NotContains(t, installed, define.QemuVirt)
|
||||||
case "linux":
|
case "linux":
|
||||||
|
|||||||
Reference in New Issue
Block a user