Skip to content

Commit b5111cc

Browse files
committed
Factored 'build.variant' and related properties calculation
1 parent 6c0b552 commit b5111cc

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

arduino/cores/packagemanager/package_manager.go

+22
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,21 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
304304
if split := strings.Split(core, ":"); len(split) > 1 {
305305
core, referredCore = split[1], split[0]
306306
}
307+
variant := buildProperties.Get("build.variant")
308+
referredVariant := ""
309+
if split := strings.Split(variant, ":"); len(split) > 1 {
310+
variant, referredVariant = split[1], split[0]
311+
}
312+
if referredCore != "" && referredVariant != "" && referredCore != referredVariant {
313+
return targetPackage, platformRelease, board, buildProperties, nil,
314+
fmt.Errorf(tr("'build.core' and 'build.variant' refer to different platforms: %[1]s and %[2]s"), core+":"+referredCore, variant+":"+referredVariant)
315+
}
307316

308317
var referredPlatformRelease *cores.PlatformRelease
309318
referredPackageName := referredCore
319+
if referredPackageName == "" {
320+
referredPackageName = referredVariant
321+
}
310322
if referredPackageName != "" {
311323
referredPackage := pme.packages[referredPackageName]
312324
if referredPackage == nil {
@@ -336,6 +348,16 @@ func (pme *Explorer) ResolveFQBN(fqbn *cores.FQBN) (
336348
for _, tool := range pme.GetAllInstalledToolsReleases() {
337349
buildProperties.Merge(tool.RuntimeProperties())
338350
}
351+
352+
buildProperties.Set("build.variant.path", "")
353+
if variant != "" {
354+
variantPlatformRelease := platformRelease
355+
if referredVariant != "" {
356+
variantPlatformRelease = referredPlatformRelease
357+
}
358+
buildProperties.SetPath("build.variant.path", variantPlatformRelease.InstallDir.Join("variants", variant))
359+
}
360+
339361
requiredTools, err := pme.FindToolsRequiredForBuild(platformRelease, buildPlatformRelease)
340362
if err != nil {
341363
return targetPackage, platformRelease, board, buildProperties, buildPlatformRelease, err

legacy/builder/setup_build_properties.go

-20
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ package builder
1818
import (
1919
"os"
2020
"path/filepath"
21-
"strings"
2221

23-
"github.com/arduino/arduino-cli/arduino/cores"
2422
"github.com/arduino/arduino-cli/legacy/builder/types"
2523
properties "github.com/arduino/go-properties-orderedmap"
2624
"github.com/pkg/errors"
@@ -29,8 +27,6 @@ import (
2927
type SetupBuildProperties struct{}
3028

3129
func (s *SetupBuildProperties) Run(ctx *types.Context) error {
32-
packages := ctx.Hardware
33-
3430
targetPlatform := ctx.TargetPlatform
3531
actualPlatform := ctx.ActualPlatform
3632

@@ -71,22 +67,6 @@ func (s *SetupBuildProperties) Run(ctx *types.Context) error {
7167
}
7268
ctx.OptimizationFlags = buildProperties.Get("compiler.optimization_flags")
7369

74-
variant := buildProperties.Get("build.variant")
75-
if variant == "" {
76-
buildProperties.Set("build.variant.path", "")
77-
} else {
78-
var variantPlatformRelease *cores.PlatformRelease
79-
variantParts := strings.Split(variant, ":")
80-
if len(variantParts) > 1 {
81-
variantPlatform := packages[variantParts[0]].Platforms[targetPlatform.Platform.Architecture]
82-
variantPlatformRelease = ctx.PackageManager.GetInstalledPlatformRelease(variantPlatform)
83-
variant = variantParts[1]
84-
} else {
85-
variantPlatformRelease = targetPlatform
86-
}
87-
buildProperties.SetPath("build.variant.path", variantPlatformRelease.InstallDir.Join("variants", variant))
88-
}
89-
9070
if !buildProperties.ContainsKey("software") {
9171
buildProperties.Set("software", DEFAULT_SOFTWARE)
9272
}

0 commit comments

Comments
 (0)