Skip to content

Commit 6ef4970

Browse files
authored
Merge pull request #3992 from afbjorklund/vmopts-rosetta
Don't read VMOpts.VZ struct from cidata directly
2 parents 18baab6 + d47dbe8 commit 6ef4970

File tree

5 files changed

+40
-40
lines changed

5 files changed

+40
-40
lines changed

pkg/cidata/cidata.go

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func setupEnv(instConfigEnv map[string]string, propagateProxyEnv bool, slirpGate
118118
return env, nil
119119
}
120120

121-
func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort, vsockPort int, virtioPort string, noCloudInit bool) (*TemplateArgs, error) {
121+
func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort, vsockPort int, virtioPort string, noCloudInit, rosettaEnabled, rosettaBinFmt bool) (*TemplateArgs, error) {
122122
if err := limayaml.Validate(instConfig, false); err != nil {
123123
return nil, err
124124
}
@@ -138,20 +138,15 @@ func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, i
138138
Containerd: Containerd{System: *instConfig.Containerd.System, User: *instConfig.Containerd.User, Archive: archive},
139139
SlirpNICName: networks.SlirpNICName,
140140

141-
VMType: *instConfig.VMType,
142-
VSockPort: vsockPort,
143-
VirtioPort: virtioPort,
144-
Plain: *instConfig.Plain,
145-
TimeZone: *instConfig.TimeZone,
146-
NoCloudInit: noCloudInit,
147-
Param: instConfig.Param,
148-
}
149-
150-
if instConfig.VMOpts.VZ.Rosetta.Enabled != nil {
151-
args.RosettaEnabled = *instConfig.VMOpts.VZ.Rosetta.Enabled
152-
}
153-
if instConfig.VMOpts.VZ.Rosetta.BinFmt != nil {
154-
args.RosettaBinFmt = *instConfig.VMOpts.VZ.Rosetta.BinFmt
141+
VMType: *instConfig.VMType,
142+
VSockPort: vsockPort,
143+
VirtioPort: virtioPort,
144+
RosettaEnabled: rosettaEnabled,
145+
RosettaBinFmt: rosettaBinFmt,
146+
Plain: *instConfig.Plain,
147+
TimeZone: *instConfig.TimeZone,
148+
NoCloudInit: noCloudInit,
149+
Param: instConfig.Param,
155150
}
156151

157152
firstUsernetIndex := limayaml.FirstUsernetIndex(instConfig)
@@ -351,7 +346,7 @@ func templateArgs(ctx context.Context, bootScripts bool, instDir, name string, i
351346
}
352347

353348
func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *limatype.LimaYAML) error {
354-
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "", false)
349+
args, err := templateArgs(ctx, false, instDir, name, instConfig, 0, 0, 0, "", false, false, false)
355350
if err != nil {
356351
return err
357352
}
@@ -373,8 +368,8 @@ func GenerateCloudConfig(ctx context.Context, instDir, name string, instConfig *
373368
return os.WriteFile(filepath.Join(instDir, filenames.CloudConfig), config, 0o444)
374369
}
375370

376-
func GenerateISO9660(ctx context.Context, drv driver.Driver, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, guestAgentBinary, nerdctlArchive string, vsockPort int, virtioPort string, noCloudInit bool) error {
377-
args, err := templateArgs(ctx, true, instDir, name, instConfig, udpDNSLocalPort, tcpDNSLocalPort, vsockPort, virtioPort, noCloudInit)
371+
func GenerateISO9660(ctx context.Context, drv driver.Driver, instDir, name string, instConfig *limatype.LimaYAML, udpDNSLocalPort, tcpDNSLocalPort int, guestAgentBinary, nerdctlArchive string, vsockPort int, virtioPort string, noCloudInit, rosettaEnabled, rosettaBinFmt bool) error {
372+
args, err := templateArgs(ctx, true, instDir, name, instConfig, udpDNSLocalPort, tcpDNSLocalPort, vsockPort, virtioPort, noCloudInit, rosettaEnabled, rosettaBinFmt)
378373
if err != nil {
379374
return err
380375
}

pkg/driver/driver.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,6 @@ type DriverFeatures struct {
107107
DynamicSSHAddress bool `json:"dynamicSSHAddress"`
108108
SkipSocketForwarding bool `json:"skipSocketForwarding"`
109109
NoCloudInit bool `json:"noCloudInit"`
110+
RosettaEnabled bool `json:"rosettaEnabled"`
111+
RosettaBinFmt bool `json:"rosettaBinFmt"`
110112
}

pkg/driver/vz/vz_driver_darwin.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,11 @@ const Enabled = true
7474
type LimaVzDriver struct {
7575
Instance *limatype.Instance
7676

77-
SSHLocalPort int
78-
vSockPort int
79-
virtioPort string
77+
SSHLocalPort int
78+
vSockPort int
79+
virtioPort string
80+
rosettaEnabled bool
81+
rosettaBinFmt bool
8082

8183
machine *virtualMachineWrapper
8284
}
@@ -106,6 +108,15 @@ func (l *LimaVzDriver) Configure(inst *limatype.Instance) *driver.ConfiguredDriv
106108
}
107109
}
108110

111+
if runtime.GOOS == "darwin" && limayaml.IsNativeArch(limatype.AARCH64) {
112+
if l.Instance.Config.VMOpts.VZ.Rosetta.Enabled != nil {
113+
l.rosettaEnabled = *l.Instance.Config.VMOpts.VZ.Rosetta.Enabled
114+
}
115+
}
116+
if l.Instance.Config.VMOpts.VZ.Rosetta.BinFmt != nil {
117+
l.rosettaBinFmt = *l.Instance.Config.VMOpts.VZ.Rosetta.BinFmt
118+
}
119+
109120
return &driver.ConfiguredDriver{
110121
Driver: l,
111122
}
@@ -351,6 +362,8 @@ func (l *LimaVzDriver) Info() driver.Info {
351362
DynamicSSHAddress: false,
352363
SkipSocketForwarding: false,
353364
CanRunGUI: guiFlag,
365+
RosettaEnabled: l.rosettaEnabled,
366+
RosettaBinFmt: l.rosettaBinFmt,
354367
}
355368
return info
356369
}

pkg/hostagent/hostagent.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,19 @@ func New(ctx context.Context, instName string, stdout io.Writer, signalCh chan o
163163
vSockPort := limaDriver.Info().VsockPort
164164
virtioPort := limaDriver.Info().VirtioPort
165165
noCloudInit := limaDriver.Info().Features.NoCloudInit
166+
rosettaEnabled := limaDriver.Info().Features.RosettaEnabled
167+
rosettaBinFmt := limaDriver.Info().Features.RosettaBinFmt
168+
169+
// Disable Rosetta in Plain mode
170+
if *inst.Config.Plain {
171+
rosettaEnabled = false
172+
rosettaBinFmt = false
173+
}
166174

167175
if err := cidata.GenerateCloudConfig(ctx, inst.Dir, instName, inst.Config); err != nil {
168176
return nil, err
169177
}
170-
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort, noCloudInit); err != nil {
178+
if err := cidata.GenerateISO9660(ctx, limaDriver, inst.Dir, instName, inst.Config, udpDNSLocalPort, tcpDNSLocalPort, o.guestAgentBinary, o.nerdctlArchive, vSockPort, virtioPort, noCloudInit, rosettaEnabled, rosettaBinFmt); err != nil {
171179
return nil, err
172180
}
173181

pkg/limayaml/defaults.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -768,22 +768,6 @@ func FillDefault(ctx context.Context, y, d, o *limatype.LimaYAML, filePath strin
768768
y.CACertificates.Files = unique(slices.Concat(d.CACertificates.Files, y.CACertificates.Files, o.CACertificates.Files))
769769
y.CACertificates.Certs = unique(slices.Concat(d.CACertificates.Certs, y.CACertificates.Certs, o.CACertificates.Certs))
770770

771-
if runtime.GOOS == "darwin" && IsNativeArch(limatype.AARCH64) {
772-
if y.VMOpts.VZ.Rosetta.Enabled == nil {
773-
y.VMOpts.VZ.Rosetta.Enabled = d.VMOpts.VZ.Rosetta.Enabled
774-
}
775-
if o.VMOpts.VZ.Rosetta.Enabled != nil {
776-
y.VMOpts.VZ.Rosetta.Enabled = o.VMOpts.VZ.Rosetta.Enabled
777-
}
778-
}
779-
780-
if y.VMOpts.VZ.Rosetta.BinFmt == nil {
781-
y.VMOpts.VZ.Rosetta.BinFmt = d.VMOpts.VZ.Rosetta.BinFmt
782-
}
783-
if o.VMOpts.VZ.Rosetta.BinFmt != nil {
784-
y.VMOpts.VZ.Rosetta.BinFmt = o.VMOpts.VZ.Rosetta.BinFmt
785-
}
786-
787771
if y.NestedVirtualization == nil {
788772
y.NestedVirtualization = d.NestedVirtualization
789773
}
@@ -831,8 +815,6 @@ func fixUpForPlainMode(y *limatype.LimaYAML) {
831815
y.Mounts = nil
832816
y.Containerd.System = ptr.Of(false)
833817
y.Containerd.User = ptr.Of(false)
834-
y.VMOpts.VZ.Rosetta.BinFmt = ptr.Of(false)
835-
y.VMOpts.VZ.Rosetta.Enabled = ptr.Of(false)
836818
y.TimeZone = ptr.Of("")
837819
}
838820

0 commit comments

Comments
 (0)