Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 4 additions & 16 deletions pkg/driver/qemu/qemu.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@
return "oss"
}

func defaultCPUType() limatype.CPUType {

Check failure on line 408 in pkg/driver/qemu/qemu.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.CPUType is deprecated: qemu driver internal (staticcheck)
// x86_64 + TCG + max was previously unstable until 2021.
// https://bugzilla.redhat.com/show_bug.cgi?id=1999700
// https://bugs.launchpad.net/qemu/+bug/1748296
Expand Down Expand Up @@ -449,11 +449,7 @@
func resolveCPUType(y *limatype.LimaYAML) string {
cpuType := defaultCPUType()
var overrideCPUType bool
var qemuOpts limatype.QEMUOpts
if err := limayaml.Convert(y.VMOpts[limatype.QEMU], &qemuOpts, "vmOpts.qemu"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", y.VMOpts[limatype.QEMU])
}
for k, v := range qemuOpts.CPUType {
for k, v := range CPUType {
if !slices.Contains(limatype.ArchTypes, *y.Arch) {
logrus.Warnf("field `vmOpts.qemu.cpuType` uses unsupported arch %q", k)
continue
Expand All @@ -464,11 +460,7 @@
}
}
if overrideCPUType {
qemuOpts.CPUType = cpuType
if y.VMOpts == nil {
y.VMOpts = limatype.VMOpts{}
}
y.VMOpts[limatype.QEMU] = qemuOpts
CPUType = cpuType
}

return cpuType[*y.Arch]
Expand Down Expand Up @@ -498,12 +490,8 @@
if version.LessThan(softMin) {
logrus.Warnf("QEMU %v is too old, %v or later is recommended", version, softMin)
}
var qemuOpts limatype.QEMUOpts
if err := limayaml.Convert(y.VMOpts[limatype.QEMU], &qemuOpts, "vmOpts.qemu"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", y.VMOpts[limatype.QEMU])
}
if qemuOpts.MinimumVersion != nil && version.LessThan(*semver.New(*qemuOpts.MinimumVersion)) {
logrus.Fatalf("QEMU %v is too old, template requires %q or later", version, *qemuOpts.MinimumVersion)
if MinimumVersion != nil && version.LessThan(*semver.New(*MinimumVersion)) {
logrus.Fatalf("QEMU %v is too old, template requires %q or later", version, *MinimumVersion)
}
}

Expand Down
18 changes: 16 additions & 2 deletions pkg/driver/qemu/qemu_driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,17 @@
"github.com/lima-vm/lima/v2/pkg/version/versionutil"
)

type Opts struct {
MinimumVersion *string `yaml:"minimumVersion,omitempty" json:"minimumVersion,omitempty" jsonschema:"nullable"`
CPUType limatype.CPUType `yaml:"cpuType,omitempty" json:"cpuType,omitempty" jsonschema:"nullable"`

Check failure on line 45 in pkg/driver/qemu/qemu_driver.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.CPUType is deprecated: qemu driver internal (staticcheck)
}

// TODO: move from globals to Config.
var (
MinimumVersion *string
CPUType limatype.CPUType

Check failure on line 51 in pkg/driver/qemu/qemu_driver.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.CPUType is deprecated: qemu driver internal (staticcheck)
)

type LimaQemuDriver struct {
Instance *limatype.Instance
SSHLocalPort int
Expand Down Expand Up @@ -104,7 +115,7 @@
}
}

var qemuOpts limatype.QEMUOpts
var qemuOpts Opts
if err := limayaml.Convert(cfg.VMOpts[limatype.QEMU], &qemuOpts, "vmOpts.qemu"); err != nil {
return err
}
Expand Down Expand Up @@ -158,12 +169,12 @@
cfg.Video.VNC.Display = ptr.Of("127.0.0.1:0,to=9")
}

var qemuOpts limatype.QEMUOpts
var qemuOpts Opts
if err := limayaml.Convert(cfg.VMOpts[limatype.QEMU], &qemuOpts, "vmOpts.qemu"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", cfg.VMOpts[limatype.QEMU])
}
if qemuOpts.CPUType == nil {
qemuOpts.CPUType = limatype.CPUType{}

Check failure on line 177 in pkg/driver/qemu/qemu_driver.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.CPUType is deprecated: qemu driver internal (staticcheck)
}

//nolint:staticcheck // Migration of top-level CPUTYPE if specified
Expand Down Expand Up @@ -223,6 +234,9 @@
return fmt.Errorf("mount type %q is explicitly unsupported", *cfg.MountType)
}

MinimumVersion = qemuOpts.MinimumVersion
CPUType = qemuOpts.CPUType

return validateConfig(cfg)
}

Expand Down
7 changes: 1 addition & 6 deletions pkg/driver/vz/vm_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -602,12 +602,7 @@ func attachFolderMounts(inst *limatype.Instance, vmConfig *vz.VirtualMachineConf
}
}

var vzOpts limatype.VZOpts
if err := limayaml.Convert(inst.Config.VMOpts[limatype.VZ], &vzOpts, "vmOpts.vz"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", inst.Config.VMOpts[limatype.VZ])
}

if vzOpts.Rosetta.Enabled != nil && *vzOpts.Rosetta.Enabled {
if RosettaEnabled != nil && *RosettaEnabled {
logrus.Info("Setting up Rosetta share")
directorySharingDeviceConfig, err := createRosettaDirectoryShareConfiguration()
if err != nil {
Expand Down
17 changes: 15 additions & 2 deletions pkg/driver/vz/vz_driver_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@

const Enabled = true

type Opts struct {
Rosetta limatype.Rosetta `yaml:"rosetta,omitempty" json:"rosetta,omitempty"`

Check failure on line 75 in pkg/driver/vz/vz_driver_darwin.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.Rosetta is deprecated: vz driver internal (staticcheck)
}

// TODO: move from globals to Config.
var (
RosettaEnabled *bool
RosettaBinFmt *bool
)

type LimaVzDriver struct {
Instance *limatype.Instance

Expand Down Expand Up @@ -108,7 +118,7 @@
}
}

var vzOpts limatype.VZOpts
var vzOpts Opts
if l.Instance.Config.VMOpts[limatype.VZ] != nil {
if err := limayaml.Convert(l.Instance.Config.VMOpts[limatype.VZ], &vzOpts, "vmOpts.vz"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", l.Instance.Config.VMOpts[limatype.VZ])
Expand Down Expand Up @@ -138,7 +148,7 @@
cfg.MountType = ptr.Of(limatype.VIRTIOFS)
}

var vzOpts limatype.VZOpts
var vzOpts Opts
if err := limayaml.Convert(cfg.VMOpts[limatype.VZ], &vzOpts, "vmOpts.vz"); err != nil {
logrus.WithError(err).Warnf("Couldn't convert %q", cfg.VMOpts[limatype.VZ])
}
Expand Down Expand Up @@ -169,10 +179,13 @@
}
cfg.VMOpts[limatype.VZ] = opts

RosettaEnabled = vzOpts.Rosetta.Enabled
RosettaBinFmt = vzOpts.Rosetta.BinFmt

return validateConfig(ctx, cfg)
}

func isEmpty(r limatype.Rosetta) bool {

Check failure on line 188 in pkg/driver/vz/vz_driver_darwin.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

SA1019: limatype.Rosetta is deprecated: vz driver internal (staticcheck)
return r.Enabled == nil && r.BinFmt == nil
}

Expand Down
5 changes: 3 additions & 2 deletions pkg/limatmpl/embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/coreos/go-semver/semver"
"github.com/sirupsen/logrus"

"github.com/lima-vm/lima/v2/pkg/driver/qemu"
"github.com/lima-vm/lima/v2/pkg/limatype"
"github.com/lima-vm/lima/v2/pkg/limatype/dirnames"
"github.com/lima-vm/lima/v2/pkg/limatype/filenames"
Expand Down Expand Up @@ -180,11 +181,11 @@ func (tmpl *Template) mergeBase(base *Template) error {
tmpl.copyField(minimumLimaVersion, minimumLimaVersion)
}
}
var tmplOpts limatype.QEMUOpts
var tmplOpts qemu.Opts
if err := limayaml.Convert(tmpl.Config.VMOpts[limatype.QEMU], &tmplOpts, "vmOpts.qemu"); err != nil {
return err
}
var baseOpts limatype.QEMUOpts
var baseOpts qemu.Opts
if err := limayaml.Convert(base.Config.VMOpts[limatype.QEMU], &baseOpts, "vmOpts.qemu"); err != nil {
return err
}
Expand Down
11 changes: 2 additions & 9 deletions pkg/limatype/lima_yaml.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
VMType = string
)

// Deprecated: qemu driver internal

Check failure on line 76 in pkg/limatype/lima_yaml.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

Comment should end in a period (godot)
type CPUType = map[Arch]string

const (
Expand Down Expand Up @@ -112,15 +113,7 @@

type VMOpts map[VMType]any

type QEMUOpts struct {
MinimumVersion *string `yaml:"minimumVersion,omitempty" json:"minimumVersion,omitempty" jsonschema:"nullable"`
CPUType CPUType `yaml:"cpuType,omitempty" json:"cpuType,omitempty" jsonschema:"nullable"`
}

type VZOpts struct {
Rosetta Rosetta `yaml:"rosetta,omitempty" json:"rosetta,omitempty"`
}

// Deprecated: vz driver internal

Check failure on line 116 in pkg/limatype/lima_yaml.go

View workflow job for this annotation

GitHub Actions / Lint Go (macos-26)

Comment should end in a period (godot)
type Rosetta struct {
Enabled *bool `yaml:"enabled,omitempty" json:"enabled,omitempty" jsonschema:"nullable"`
BinFmt *bool `yaml:"binfmt,omitempty" json:"binfmt,omitempty" jsonschema:"nullable"`
Expand Down
41 changes: 0 additions & 41 deletions pkg/limayaml/marshal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,41 +86,6 @@ vmType: null
t.Log(dumpYAML(t, o))
}

func TestQEMUOpts(t *testing.T) {
text := `
vmType: "qemu"
vmOpts:
qemu:
minimumVersion: null
cpuType:
`
var y limatype.LimaYAML
err := Unmarshal([]byte(text), &y, "lima.yaml")
assert.NilError(t, err)
var o limatype.QEMUOpts
err = Convert(y.VMOpts[limatype.QEMU], &o, "vmOpts.qemu")
assert.NilError(t, err)
t.Log(dumpYAML(t, o))
}

func TestVZOpts(t *testing.T) {
text := `
vmType: "vz"
vmOpts:
vz:
rosetta:
enabled: null
binfmt: null
`
var y limatype.LimaYAML
err := Unmarshal([]byte(text), &y, "lima.yaml")
assert.NilError(t, err)
var o limatype.VZOpts
err = Convert(y.VMOpts[limatype.VZ], &o, "vmOpts.vz")
assert.NilError(t, err)
t.Log(dumpYAML(t, o))
}

func TestVMOptsNull(t *testing.T) {
text := `
vmOpts: null
Expand All @@ -131,12 +96,6 @@ vmOpts: null
var o limatype.VMOpts
err = Convert(y.VMOpts, &o, "vmOpts")
assert.NilError(t, err)
var oq limatype.QEMUOpts
err = Convert(y.VMOpts[limatype.QEMU], &oq, "vmOpts.qemu")
assert.NilError(t, err)
var ov limatype.VZOpts
err = Convert(y.VMOpts[limatype.VZ], &ov, "vmOpts.vz")
assert.NilError(t, err)
}

type FormatData struct {
Expand Down
Loading