Skip to content

Commit

Permalink
Bugfix: do not overwrite board properties during compile (#1820) (Fix #…
Browse files Browse the repository at this point in the history
…1614)

* Bugfix: do not overwrite board properies during compile

Fix #1614

* Removed AddBuildPropertyIfMissinc 'legacy' (inlined in other functions)

* Increase code coverage
  • Loading branch information
cmaglie authored Aug 2, 2022
1 parent a55df0d commit 2dd8976
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 79 deletions.
47 changes: 0 additions & 47 deletions legacy/builder/add_build_board_property_if_missing.go

This file was deleted.

1 change: 0 additions & 1 deletion legacy/builder/container_setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ func (s *ContainerSetupHardwareToolsLibsSketchAndProps) Run(ctx *types.Context)
&RewriteHardwareKeys{},
&TargetBoardResolver{},
&ToolsLoader{},
&AddBuildBoardPropertyIfMissing{},
&LibrariesLoader{},
}

Expand Down
3 changes: 1 addition & 2 deletions legacy/builder/setup_build_properties.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,11 @@ func (s *SetupBuildProperties) Run(ctx *types.Context) error {

targetPlatform := ctx.TargetPlatform
actualPlatform := ctx.ActualPlatform
targetBoard := ctx.TargetBoard

buildProperties := properties.NewMap()
buildProperties.Merge(actualPlatform.Properties)
buildProperties.Merge(targetPlatform.Properties)
buildProperties.Merge(targetBoard.Properties)
buildProperties.Merge(ctx.TargetBoardBuildProperties)

if ctx.BuildPath != nil {
buildProperties.SetPath("build.path", ctx.BuildPath)
Expand Down
13 changes: 10 additions & 3 deletions legacy/builder/target_board_resolver.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ func (s *TargetBoardResolver) Run(ctx *types.Context) error {
return fmt.Errorf("%s: %w", tr("Error resolving FQBN"), err)
}

targetBoard.Properties = buildProperties // FIXME....

core := targetBoard.Properties.Get("build.core")
core := buildProperties.Get("build.core")
if core == "" {
core = "arduino"
}
Expand All @@ -44,8 +42,17 @@ func (s *TargetBoardResolver) Run(ctx *types.Context) error {
ctx.Info(tr("Using core '%[1]s' from platform in folder: %[2]s", core, actualPlatform.InstallDir))
}

if buildProperties.Get("build.board") == "" {
architecture := targetBoard.PlatformRelease.Platform.Architecture
defaultBuildBoard := strings.ToUpper(architecture + "_" + targetBoard.BoardID)
buildProperties.Set("build.board", defaultBuildBoard)
ctx.Info(tr("Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s",
targetBoard.String(), "'build.board'", defaultBuildBoard))
}

ctx.BuildCore = core
ctx.TargetBoard = targetBoard
ctx.TargetBoardBuildProperties = buildProperties
ctx.TargetPlatform = targetPlatform
ctx.TargetPackage = targetPackage
ctx.ActualPlatform = actualPlatform
Expand Down
12 changes: 6 additions & 6 deletions legacy/builder/test/add_build_board_property_if_missing_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ func TestAddBuildBoardPropertyIfMissing(t *testing.T) {
commands := []types.Command{
&builder.HardwareLoader{},
&builder.TargetBoardResolver{},
&builder.AddBuildBoardPropertyIfMissing{},
}

for _, command := range commands {
Expand All @@ -60,8 +59,9 @@ func TestAddBuildBoardPropertyIfMissing(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "mymega", targetBoard.BoardID)
require.Equal(t, "atmega2560", targetBoard.Properties.Get("build.mcu"))
require.Equal(t, "AVR_MYMEGA2560", targetBoard.Properties.Get("build.board"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega2560", targetBoardBuildProperties.Get("build.mcu"))
require.Equal(t, "AVR_MYMEGA", targetBoardBuildProperties.Get("build.board"))
}

func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
Expand All @@ -76,7 +76,6 @@ func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
commands := []types.Command{
&builder.HardwareLoader{},
&builder.TargetBoardResolver{},
&builder.AddBuildBoardPropertyIfMissing{},
}

for _, command := range commands {
Expand All @@ -90,6 +89,7 @@ func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "mymega", targetBoard.BoardID)
require.Equal(t, "atmega1280", targetBoard.Properties.Get("build.mcu"))
require.Equal(t, "AVR_MYMEGA", targetBoard.Properties.Get("build.board"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega1280", targetBoardBuildProperties.Get("build.mcu"))
require.Equal(t, "MYMEGA1280", targetBoardBuildProperties.Get("build.board"))
}
24 changes: 15 additions & 9 deletions legacy/builder/test/target_board_resolver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ func TestTargetBoardResolverUno(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "uno", targetBoard.BoardID)
require.Equal(t, "atmega328p", targetBoard.Properties.Get("build.mcu"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega328p", targetBoardBuildProperties.Get("build.mcu"))
}

func TestTargetBoardResolverDue(t *testing.T) {
Expand All @@ -72,7 +73,8 @@ func TestTargetBoardResolverDue(t *testing.T) {
require.Equal(t, "sam", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "arduino_due_x", targetBoard.BoardID)
require.Equal(t, "cortex-m3", targetBoard.Properties.Get("build.mcu"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "cortex-m3", targetBoardBuildProperties.Get("build.mcu"))
}

func TestTargetBoardResolverMega1280(t *testing.T) {
Expand All @@ -97,8 +99,9 @@ func TestTargetBoardResolverMega1280(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "mega", targetBoard.BoardID)
require.Equal(t, "atmega1280", targetBoard.Properties.Get("build.mcu"))
require.Equal(t, "AVR_MEGA", targetBoard.Properties.Get("build.board"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega1280", targetBoardBuildProperties.Get("build.mcu"))
require.Equal(t, "AVR_MEGA", targetBoardBuildProperties.Get("build.board"))
}

func TestTargetBoardResolverMega2560(t *testing.T) {
Expand All @@ -123,8 +126,9 @@ func TestTargetBoardResolverMega2560(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "mega", targetBoard.BoardID)
require.Equal(t, "atmega2560", targetBoard.Properties.Get("build.mcu"))
require.Equal(t, "AVR_MEGA2560", targetBoard.Properties.Get("build.board"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega2560", targetBoardBuildProperties.Get("build.mcu"))
require.Equal(t, "AVR_MEGA2560", targetBoardBuildProperties.Get("build.board"))
}

func TestTargetBoardResolverCustomYun(t *testing.T) {
Expand All @@ -149,8 +153,9 @@ func TestTargetBoardResolverCustomYun(t *testing.T) {
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
targetBoard := ctx.TargetBoard
require.Equal(t, "custom_yun", targetBoard.BoardID)
require.Equal(t, "atmega32u4", targetBoard.Properties.Get("build.mcu"))
require.Equal(t, "AVR_YUN", targetBoard.Properties.Get("build.board"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "atmega32u4", targetBoardBuildProperties.Get("build.mcu"))
require.Equal(t, "AVR_YUN", targetBoardBuildProperties.Get("build.board"))
}

func TestTargetBoardResolverCustomCore(t *testing.T) {
Expand All @@ -176,5 +181,6 @@ func TestTargetBoardResolverCustomCore(t *testing.T) {
targetBoard := ctx.TargetBoard
require.Equal(t, "attiny841", targetBoard.BoardID)
require.Equal(t, "tiny841", ctx.BuildCore)
require.Equal(t, "tiny14", targetBoard.Properties.Get("build.variant"))
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
require.Equal(t, "tiny14", targetBoardBuildProperties.Get("build.variant"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ mymega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD
mymega.menu.cpu.atmega2560.bootloader.file={bootloader._folder}/stk500boot_v2_mega2560.hex

mymega.menu.cpu.atmega2560.build.mcu=atmega2560
mymega.menu.cpu.atmega2560.build.board=AVR_MYMEGA2560
# Do not define build.board to test autogeneration
#mymega.menu.cpu.atmega2560.build.board=AVR_MYMEGA2560

mymega.menu.cpu.atmega1280=ATmega1280

Expand All @@ -84,4 +85,5 @@ mymega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5
mymega.menu.cpu.atmega1280.bootloader.file={bootloader._folder}/ATmegaBOOT_168_atmega1280.hex

mymega.menu.cpu.atmega1280.build.mcu=atmega1280
mymega.menu.cpu.atmega1280.build.board=AVR_MYMEGA
# define custom build.board for testing
mymega.menu.cpu.atmega1280.build.board=MYMEGA1280
19 changes: 10 additions & 9 deletions legacy/builder/types/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,16 @@ type Context struct {
BuildOptionsJson string
BuildOptionsJsonPrevious string

PackageManager *packagemanager.PackageManager
Hardware cores.Packages
AllTools []*cores.ToolRelease
RequiredTools []*cores.ToolRelease
TargetBoard *cores.Board
TargetPackage *cores.Package
TargetPlatform *cores.PlatformRelease
ActualPlatform *cores.PlatformRelease
USBVidPid string
PackageManager *packagemanager.PackageManager
Hardware cores.Packages
AllTools []*cores.ToolRelease
RequiredTools []*cores.ToolRelease
TargetBoard *cores.Board
TargetBoardBuildProperties *properties.Map
TargetPackage *cores.Package
TargetPlatform *cores.PlatformRelease
ActualPlatform *cores.PlatformRelease
USBVidPid string

PlatformKeyRewrites PlatforKeysRewrite
HardwareRewriteResults map[*cores.PlatformRelease][]PlatforKeyRewrite
Expand Down

0 comments on commit 2dd8976

Please sign in to comment.