Skip to content

Commit 849faa1

Browse files
committed
Wipe build directory if any additional file has been added/removed from the previous run
1 parent 571b922 commit 849faa1

4 files changed

+17
-0
lines changed

Diff for: test/create_build_options_map_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ func TestCreateBuildOptionsMap(t *testing.T) {
5454
NoError(t, err)
5555

5656
require.Equal(t, "{\n"+
57+
" \"additionalFiles\": \"\",\n"+
5758
" \"builtInLibrariesFolders\": \"\",\n"+
5859
" \"customBuildProperties\": \"\",\n"+
5960
" \"fqbn\": \"fqbn\",\n"+

Diff for: test/store_build_options_map_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ func TestStoreBuildOptionsMap(t *testing.T) {
7474
NoError(t, err)
7575

7676
require.Equal(t, "{\n"+
77+
" \"additionalFiles\": \"\",\n"+
7778
" \"builtInLibrariesFolders\": \"built-in libraries\",\n"+
7879
" \"customBuildProperties\": \"custom=prop\",\n"+
7980
" \"fqbn\": \"fqbn\",\n"+

Diff for: types/context.go

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package types
22

33
import (
4+
"path/filepath"
45
"strings"
56

67
"github.com/arduino/arduino-builder/i18n"
@@ -103,6 +104,14 @@ type Context struct {
103104

104105
func (ctx *Context) ExtractBuildOptions() properties.Map {
105106
opts := make(properties.Map)
107+
var additionalFilesRelative []string
108+
if ctx.Sketch != nil {
109+
for _, sketch := range ctx.Sketch.AdditionalFiles {
110+
absPath := filepath.Dir(ctx.SketchLocation)
111+
relPath := strings.TrimPrefix(sketch.Name, absPath)
112+
additionalFilesRelative = append(additionalFilesRelative, relPath)
113+
}
114+
}
106115
opts["hardwareFolders"] = strings.Join(ctx.HardwareFolders, ",")
107116
opts["toolsFolders"] = strings.Join(ctx.ToolsFolders, ",")
108117
opts["builtInLibrariesFolders"] = strings.Join(ctx.BuiltInLibrariesFolders, ",")
@@ -111,6 +120,7 @@ func (ctx *Context) ExtractBuildOptions() properties.Map {
111120
opts["fqbn"] = ctx.FQBN
112121
opts["runtime.ide.version"] = ctx.ArduinoAPIVersion
113122
opts["customBuildProperties"] = strings.Join(ctx.CustomBuildProperties, ",")
123+
opts["additionalFiles"] = strings.Join(additionalFilesRelative, ",")
114124
return opts
115125
}
116126

Diff for: wipeout_build_path_if_build_options_changed.go

+5
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"encoding/json"
3434
"os"
3535
"path/filepath"
36+
"strings"
3637

3738
"github.com/arduino/arduino-builder/builder_utils"
3839
"github.com/arduino/arduino-builder/constants"
@@ -85,6 +86,10 @@ func (s *WipeoutBuildPathIfBuildOptionsChanged) Run(ctx *types.Context) error {
8586
if err != nil {
8687
return i18n.WrapError(err)
8788
}
89+
// if build path is inside the sketch folder, also wipe ctx.AdditionalFiles
90+
if strings.Contains(ctx.BuildPath, filepath.Dir(ctx.SketchLocation)) {
91+
ctx.Sketch.AdditionalFiles = ctx.Sketch.AdditionalFiles[:0]
92+
}
8893
for _, file := range files {
8994
os.RemoveAll(filepath.Join(buildPath, file.Name()))
9095
}

0 commit comments

Comments
 (0)