Skip to content

Commit 2dd8976

Browse files
authored
Bugfix: do not overwrite board properties during compile (#1820) (Fix #1614)
* Bugfix: do not overwrite board properies during compile Fix #1614 * Removed AddBuildPropertyIfMissinc 'legacy' (inlined in other functions) * Increase code coverage
1 parent a55df0d commit 2dd8976

8 files changed

+46
-79
lines changed

legacy/builder/add_build_board_property_if_missing.go

-47
This file was deleted.

legacy/builder/container_setup.go

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ func (s *ContainerSetupHardwareToolsLibsSketchAndProps) Run(ctx *types.Context)
3636
&RewriteHardwareKeys{},
3737
&TargetBoardResolver{},
3838
&ToolsLoader{},
39-
&AddBuildBoardPropertyIfMissing{},
4039
&LibrariesLoader{},
4140
}
4241

legacy/builder/setup_build_properties.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,11 @@ func (s *SetupBuildProperties) Run(ctx *types.Context) error {
3636

3737
targetPlatform := ctx.TargetPlatform
3838
actualPlatform := ctx.ActualPlatform
39-
targetBoard := ctx.TargetBoard
4039

4140
buildProperties := properties.NewMap()
4241
buildProperties.Merge(actualPlatform.Properties)
4342
buildProperties.Merge(targetPlatform.Properties)
44-
buildProperties.Merge(targetBoard.Properties)
43+
buildProperties.Merge(ctx.TargetBoardBuildProperties)
4544

4645
if ctx.BuildPath != nil {
4746
buildProperties.SetPath("build.path", ctx.BuildPath)

legacy/builder/target_board_resolver.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ func (s *TargetBoardResolver) Run(ctx *types.Context) error {
3030
return fmt.Errorf("%s: %w", tr("Error resolving FQBN"), err)
3131
}
3232

33-
targetBoard.Properties = buildProperties // FIXME....
34-
35-
core := targetBoard.Properties.Get("build.core")
33+
core := buildProperties.Get("build.core")
3634
if core == "" {
3735
core = "arduino"
3836
}
@@ -44,8 +42,17 @@ func (s *TargetBoardResolver) Run(ctx *types.Context) error {
4442
ctx.Info(tr("Using core '%[1]s' from platform in folder: %[2]s", core, actualPlatform.InstallDir))
4543
}
4644

45+
if buildProperties.Get("build.board") == "" {
46+
architecture := targetBoard.PlatformRelease.Platform.Architecture
47+
defaultBuildBoard := strings.ToUpper(architecture + "_" + targetBoard.BoardID)
48+
buildProperties.Set("build.board", defaultBuildBoard)
49+
ctx.Info(tr("Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s",
50+
targetBoard.String(), "'build.board'", defaultBuildBoard))
51+
}
52+
4753
ctx.BuildCore = core
4854
ctx.TargetBoard = targetBoard
55+
ctx.TargetBoardBuildProperties = buildProperties
4956
ctx.TargetPlatform = targetPlatform
5057
ctx.TargetPackage = targetPackage
5158
ctx.ActualPlatform = actualPlatform

legacy/builder/test/add_build_board_property_if_missing_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ func TestAddBuildBoardPropertyIfMissing(t *testing.T) {
4444
commands := []types.Command{
4545
&builder.HardwareLoader{},
4646
&builder.TargetBoardResolver{},
47-
&builder.AddBuildBoardPropertyIfMissing{},
4847
}
4948

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

6767
func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
@@ -76,7 +76,6 @@ func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
7676
commands := []types.Command{
7777
&builder.HardwareLoader{},
7878
&builder.TargetBoardResolver{},
79-
&builder.AddBuildBoardPropertyIfMissing{},
8079
}
8180

8281
for _, command := range commands {
@@ -90,6 +89,7 @@ func TestAddBuildBoardPropertyIfMissingNotMissing(t *testing.T) {
9089
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
9190
targetBoard := ctx.TargetBoard
9291
require.Equal(t, "mymega", targetBoard.BoardID)
93-
require.Equal(t, "atmega1280", targetBoard.Properties.Get("build.mcu"))
94-
require.Equal(t, "AVR_MYMEGA", targetBoard.Properties.Get("build.board"))
92+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
93+
require.Equal(t, "atmega1280", targetBoardBuildProperties.Get("build.mcu"))
94+
require.Equal(t, "MYMEGA1280", targetBoardBuildProperties.Get("build.board"))
9595
}

legacy/builder/test/target_board_resolver_test.go

+15-9
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ func TestTargetBoardResolverUno(t *testing.T) {
4747
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
4848
targetBoard := ctx.TargetBoard
4949
require.Equal(t, "uno", targetBoard.BoardID)
50-
require.Equal(t, "atmega328p", targetBoard.Properties.Get("build.mcu"))
50+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
51+
require.Equal(t, "atmega328p", targetBoardBuildProperties.Get("build.mcu"))
5152
}
5253

5354
func TestTargetBoardResolverDue(t *testing.T) {
@@ -72,7 +73,8 @@ func TestTargetBoardResolverDue(t *testing.T) {
7273
require.Equal(t, "sam", targetPlatform.Platform.Architecture)
7374
targetBoard := ctx.TargetBoard
7475
require.Equal(t, "arduino_due_x", targetBoard.BoardID)
75-
require.Equal(t, "cortex-m3", targetBoard.Properties.Get("build.mcu"))
76+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
77+
require.Equal(t, "cortex-m3", targetBoardBuildProperties.Get("build.mcu"))
7678
}
7779

7880
func TestTargetBoardResolverMega1280(t *testing.T) {
@@ -97,8 +99,9 @@ func TestTargetBoardResolverMega1280(t *testing.T) {
9799
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
98100
targetBoard := ctx.TargetBoard
99101
require.Equal(t, "mega", targetBoard.BoardID)
100-
require.Equal(t, "atmega1280", targetBoard.Properties.Get("build.mcu"))
101-
require.Equal(t, "AVR_MEGA", targetBoard.Properties.Get("build.board"))
102+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
103+
require.Equal(t, "atmega1280", targetBoardBuildProperties.Get("build.mcu"))
104+
require.Equal(t, "AVR_MEGA", targetBoardBuildProperties.Get("build.board"))
102105
}
103106

104107
func TestTargetBoardResolverMega2560(t *testing.T) {
@@ -123,8 +126,9 @@ func TestTargetBoardResolverMega2560(t *testing.T) {
123126
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
124127
targetBoard := ctx.TargetBoard
125128
require.Equal(t, "mega", targetBoard.BoardID)
126-
require.Equal(t, "atmega2560", targetBoard.Properties.Get("build.mcu"))
127-
require.Equal(t, "AVR_MEGA2560", targetBoard.Properties.Get("build.board"))
129+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
130+
require.Equal(t, "atmega2560", targetBoardBuildProperties.Get("build.mcu"))
131+
require.Equal(t, "AVR_MEGA2560", targetBoardBuildProperties.Get("build.board"))
128132
}
129133

130134
func TestTargetBoardResolverCustomYun(t *testing.T) {
@@ -149,8 +153,9 @@ func TestTargetBoardResolverCustomYun(t *testing.T) {
149153
require.Equal(t, "avr", targetPlatform.Platform.Architecture)
150154
targetBoard := ctx.TargetBoard
151155
require.Equal(t, "custom_yun", targetBoard.BoardID)
152-
require.Equal(t, "atmega32u4", targetBoard.Properties.Get("build.mcu"))
153-
require.Equal(t, "AVR_YUN", targetBoard.Properties.Get("build.board"))
156+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
157+
require.Equal(t, "atmega32u4", targetBoardBuildProperties.Get("build.mcu"))
158+
require.Equal(t, "AVR_YUN", targetBoardBuildProperties.Get("build.board"))
154159
}
155160

156161
func TestTargetBoardResolverCustomCore(t *testing.T) {
@@ -176,5 +181,6 @@ func TestTargetBoardResolverCustomCore(t *testing.T) {
176181
targetBoard := ctx.TargetBoard
177182
require.Equal(t, "attiny841", targetBoard.BoardID)
178183
require.Equal(t, "tiny841", ctx.BuildCore)
179-
require.Equal(t, "tiny14", targetBoard.Properties.Get("build.variant"))
184+
targetBoardBuildProperties := ctx.TargetBoardBuildProperties
185+
require.Equal(t, "tiny14", targetBoardBuildProperties.Get("build.variant"))
180186
}

legacy/builder/test/user_hardware/my_avr_platform/avr/boards.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ mymega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD
7070
mymega.menu.cpu.atmega2560.bootloader.file={bootloader._folder}/stk500boot_v2_mega2560.hex
7171

7272
mymega.menu.cpu.atmega2560.build.mcu=atmega2560
73-
mymega.menu.cpu.atmega2560.build.board=AVR_MYMEGA2560
73+
# Do not define build.board to test autogeneration
74+
#mymega.menu.cpu.atmega2560.build.board=AVR_MYMEGA2560
7475

7576
mymega.menu.cpu.atmega1280=ATmega1280
7677

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

8687
mymega.menu.cpu.atmega1280.build.mcu=atmega1280
87-
mymega.menu.cpu.atmega1280.build.board=AVR_MYMEGA
88+
# define custom build.board for testing
89+
mymega.menu.cpu.atmega1280.build.board=MYMEGA1280

legacy/builder/types/context.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,16 @@ type Context struct {
8282
BuildOptionsJson string
8383
BuildOptionsJsonPrevious string
8484

85-
PackageManager *packagemanager.PackageManager
86-
Hardware cores.Packages
87-
AllTools []*cores.ToolRelease
88-
RequiredTools []*cores.ToolRelease
89-
TargetBoard *cores.Board
90-
TargetPackage *cores.Package
91-
TargetPlatform *cores.PlatformRelease
92-
ActualPlatform *cores.PlatformRelease
93-
USBVidPid string
85+
PackageManager *packagemanager.PackageManager
86+
Hardware cores.Packages
87+
AllTools []*cores.ToolRelease
88+
RequiredTools []*cores.ToolRelease
89+
TargetBoard *cores.Board
90+
TargetBoardBuildProperties *properties.Map
91+
TargetPackage *cores.Package
92+
TargetPlatform *cores.PlatformRelease
93+
ActualPlatform *cores.PlatformRelease
94+
USBVidPid string
9495

9596
PlatformKeyRewrites PlatforKeysRewrite
9697
HardwareRewriteResults map[*cores.PlatformRelease][]PlatforKeyRewrite

0 commit comments

Comments
 (0)