Skip to content

Commit 0baaca2

Browse files
author
Federico Fissore
committedNov 16, 2015
Expanding properties of bootloader key before checking for its existence.
Fixes #63 Signed-off-by: Federico Fissore <[email protected]>
1 parent 9483120 commit 0baaca2

File tree

4 files changed

+518
-2
lines changed

4 files changed

+518
-2
lines changed
 

‎src/arduino.cc/builder/merge_sketch_with_bootloader.go

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ package builder
3232
import (
3333
"arduino.cc/builder/constants"
3434
"arduino.cc/builder/i18n"
35+
"arduino.cc/builder/props"
3536
"arduino.cc/builder/types"
3637
"arduino.cc/builder/utils"
3738
"os"
@@ -70,6 +71,7 @@ func (s *MergeSketchWithBootloader) Run(context map[string]interface{}) error {
7071
} else {
7172
bootloader = buildProperties[constants.BUILD_PROPERTIES_BOOTLOADER_FILE]
7273
}
74+
bootloader = props.ExpandPropsInString(buildProperties, bootloader)
7375

7476
bootloaderPath := filepath.Join(buildProperties[constants.BUILD_PROPERTIES_RUNTIME_PLATFORM_PATH], constants.FOLDER_BOOTLOADERS, bootloader)
7577
if _, err := os.Stat(bootloaderPath); err != nil {

‎src/arduino.cc/builder/test/merge_sketch_with_bootloader_test.go

+43
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,46 @@ func TestMergeSketchWithBootloaderWhenNoBootloaderAvailable(t *testing.T) {
166166
require.Error(t, err)
167167
require.True(t, os.IsNotExist(err))
168168
}
169+
170+
func TestMergeSketchWithBootloaderPathIsParameterized(t *testing.T) {
171+
DownloadCoresAndToolsAndLibraries(t)
172+
173+
context := make(map[string]interface{})
174+
175+
buildPath := SetupBuildPath(t, context)
176+
defer os.RemoveAll(buildPath)
177+
178+
context[constants.CTX_HARDWARE_FOLDERS] = []string{filepath.Join("..", "hardware"), "hardware", "downloaded_hardware", "user_hardware"}
179+
context[constants.CTX_TOOLS_FOLDERS] = []string{"downloaded_tools"}
180+
context[constants.CTX_FQBN] = "my_avr_platform:avr:mymega:cpu=atmega2560"
181+
context[constants.CTX_BUILT_IN_LIBRARIES_FOLDERS] = []string{"downloaded_libraries"}
182+
context[constants.CTX_OTHER_LIBRARIES_FOLDERS] = []string{"libraries"}
183+
context[constants.CTX_SKETCH_LOCATION] = filepath.Join("sketch1", "sketch.ino")
184+
context[constants.CTX_BUILD_PROPERTIES_RUNTIME_IDE_VERSION] = "10600"
185+
186+
err := utils.EnsureFolderExists(filepath.Join(buildPath, "sketch"))
187+
NoError(t, err)
188+
189+
fakeSketchHex := "row 1\n" +
190+
"row 2\n"
191+
err = utils.WriteFile(filepath.Join(buildPath, "sketch", "sketch.ino.hex"), fakeSketchHex)
192+
NoError(t, err)
193+
194+
commands := []types.Command{
195+
&builder.SetupHumanLoggerIfMissing{},
196+
&builder.ContainerSetupHardwareToolsLibsSketchAndProps{},
197+
&builder.MergeSketchWithBootloader{},
198+
}
199+
200+
for _, command := range commands {
201+
err := command.Run(context)
202+
NoError(t, err)
203+
}
204+
205+
bytes, err := ioutil.ReadFile(filepath.Join(buildPath, "sketch", "sketch.ino.with_bootloader.hex"))
206+
NoError(t, err)
207+
mergedSketchHex := string(bytes)
208+
209+
require.True(t, strings.HasPrefix(mergedSketchHex, "row 1\n:020000023000CC"))
210+
require.True(t, strings.HasSuffix(mergedSketchHex, ":040000033000E000E9\n:00000001FF\n"))
211+
}

‎src/arduino.cc/builder/test/user_hardware/my_avr_platform/avr/boards.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ mymega.menu.cpu.atmega2560.upload.protocol=wiring
6262
mymega.menu.cpu.atmega2560.upload.maximum_size=253952
6363
mymega.menu.cpu.atmega2560.upload.speed=115200
6464

65+
mymega.menu.cpu.atmega2560.bootloader._folder=stk500v2
6566
mymega.menu.cpu.atmega2560.bootloader.high_fuses=0xD8
6667
mymega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD
67-
mymega.menu.cpu.atmega2560.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex
68+
mymega.menu.cpu.atmega2560.bootloader.file={bootloader._folder}/stk500boot_v2_mega2560.hex
6869

6970
mymega.menu.cpu.atmega2560.build.mcu=atmega2560
7071
mymega.menu.cpu.atmega2560.build.board=AVR_MEGA2560
@@ -75,9 +76,10 @@ mymega.menu.cpu.atmega1280.upload.protocol=arduino
7576
mymega.menu.cpu.atmega1280.upload.maximum_size=126976
7677
mymega.menu.cpu.atmega1280.upload.speed=57600
7778

79+
mymega.menu.cpu.atmega1280.bootloader._folder=atmega
7880
mymega.menu.cpu.atmega1280.bootloader.high_fuses=0xDA
7981
mymega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5
80-
mymega.menu.cpu.atmega1280.bootloader.file=atmega/ATmegaBOOT_168_atmega1280.hex
82+
mymega.menu.cpu.atmega1280.bootloader.file={bootloader._folder}/ATmegaBOOT_168_atmega1280.hex
8183

8284
mymega.menu.cpu.atmega1280.build.mcu=atmega1280
8385
mymega.menu.cpu.atmega1280.build.board=AVR_MEGA

0 commit comments

Comments
 (0)
Please sign in to comment.