Skip to content

Commit 9349db8

Browse files
remove BuildPath from context
1 parent c1be268 commit 9349db8

11 files changed

+64
-79
lines changed

arduino/builder/builder.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ type Builder struct {
2828
sketch *sketch.Sketch
2929
buildProperties *properties.Map
3030

31+
buildPath *paths.Path
32+
3133
// Parallel processes
3234
jobs int
3335

@@ -83,6 +85,7 @@ func NewBuilder(
8385
coreBuildCachePath: coreBuildCachePath,
8486
jobs: jobs,
8587
customBuildProperties: append(requestBuildProperties, "build.warn_data_percentage=75"),
88+
buildPath: buildPath,
8689
}, nil
8790
}
8891

@@ -100,3 +103,8 @@ func (b *Builder) Jobs() int {
100103
func (b *Builder) CustomBuildProperties() []string {
101104
return b.customBuildProperties
102105
}
106+
107+
// GetBuildPath returns the build path
108+
func (b *Builder) GetBuildPath() *paths.Path {
109+
return b.buildPath
110+
}

commands/compile/compile.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
197197
builderCtx.ActualPlatform = buildPlatform
198198
builderCtx.RequiredTools = requiredTools
199199
builderCtx.FQBN = fqbn
200-
builderCtx.BuildPath = buildPath
201200
builderCtx.ProgressCB = progressCB
202201

203202
// FIXME: This will be redundant when arduino-builder will be part of the cli
@@ -207,7 +206,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
207206
builderCtx.OtherLibrariesDirs.Add(configuration.LibrariesDir(configuration.Settings))
208207

209208
builderCtx.CompilationDatabase = compilation.NewDatabase(
210-
builderCtx.BuildPath.Join("compile_commands.json"),
209+
sketchBuilder.GetBuildPath().Join("compile_commands.json"),
211210
)
212211

213212
builderCtx.BuiltInLibrariesDirs = configuration.IDEBuiltinLibrariesDir(configuration.Settings)
@@ -235,7 +234,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
235234
builderCtx.LibrariesBuildPath = librariesBuildPath
236235
builderCtx.CoreBuildPath = coreBuildPath
237236

238-
if builderCtx.BuildPath.Canonical().EqualsTo(sk.FullPath.Canonical()) {
237+
if sketchBuilder.GetBuildPath().Canonical().EqualsTo(sk.FullPath.Canonical()) {
239238
return r, &arduino.CompileFailedError{
240239
Message: tr("Sketch cannot be located in build path. Please specify a different build path"),
241240
}
@@ -268,7 +267,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
268267
)
269268

270269
defer func() {
271-
if p := builderCtx.BuildPath; p != nil {
270+
if p := sketchBuilder.GetBuildPath(); p != nil {
272271
r.BuildPath = p.String()
273272
}
274273
}()
@@ -381,7 +380,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
381380
if !ok {
382381
return r, &arduino.MissingPlatformPropertyError{Property: "build.project_name"}
383382
}
384-
buildFiles, err := builderCtx.BuildPath.ReadDir()
383+
buildFiles, err := sketchBuilder.GetBuildPath().ReadDir()
385384
if err != nil {
386385
return r, &arduino.PermissionDeniedError{Message: tr("Error reading build directory"), Cause: err}
387386
}

legacy/builder/builder.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const DEFAULT_DEBUG_LEVEL = 5
3838
type Builder struct{}
3939

4040
func (s *Builder) Run(ctx *types.Context) error {
41-
if err := ctx.BuildPath.MkdirAll(); err != nil {
41+
if err := ctx.Builder.GetBuildPath().MkdirAll(); err != nil {
4242
return err
4343
}
4444

@@ -133,7 +133,7 @@ func (s *Builder) Run(ctx *types.Context) error {
133133

134134
types.BareCommand(func(ctx *types.Context) error {
135135
objectFiles, archiveFile, err := builder.CoreBuilder(
136-
ctx.BuildPath, ctx.CoreBuildPath, ctx.Builder.CoreBuildCachePath(),
136+
ctx.Builder.GetBuildPath(), ctx.CoreBuildPath, ctx.Builder.CoreBuildCachePath(),
137137
ctx.Builder.GetBuildProperties(),
138138
ctx.ActualPlatform,
139139
ctx.OnlyUpdateCompilationDatabase, ctx.Clean,
@@ -165,7 +165,7 @@ func (s *Builder) Run(ctx *types.Context) error {
165165
ctx.LibrariesObjectFiles,
166166
ctx.CoreObjectsFiles,
167167
ctx.CoreArchiveFilePath,
168-
ctx.BuildPath,
168+
ctx.Builder.GetBuildPath(),
169169
ctx.Builder.GetBuildProperties(),
170170
ctx.BuilderLogger,
171171
)
@@ -192,7 +192,7 @@ func (s *Builder) Run(ctx *types.Context) error {
192192
types.BareCommand(func(ctx *types.Context) error {
193193
return MergeSketchWithBootloader(
194194
ctx.OnlyUpdateCompilationDatabase,
195-
ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
195+
ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
196196
ctx.BuilderLogger,
197197
)
198198
}),
@@ -236,7 +236,7 @@ func (s *Builder) Run(ctx *types.Context) error {
236236
types.BareCommand(func(ctx *types.Context) error {
237237
normalOutput, verboseOutput, err := ExportProjectCMake(
238238
mainErr != nil,
239-
ctx.BuildPath, ctx.SketchBuildPath,
239+
ctx.Builder.GetBuildPath(), ctx.SketchBuildPath,
240240
ctx.SketchLibrariesDetector.ImportedLibraries(),
241241
ctx.Builder.GetBuildProperties(),
242242
ctx.Builder.Sketch(),
@@ -283,7 +283,7 @@ func (s *Builder) Run(ctx *types.Context) error {
283283
func preprocessSketchCommand(ctx *types.Context) types.BareCommand {
284284
return func(ctx *types.Context) error {
285285
normalOutput, verboseOutput, err := PreprocessSketch(
286-
ctx.Builder.Sketch(), ctx.BuildPath, ctx.SketchLibrariesDetector.IncludeFolders(), ctx.LineOffset,
286+
ctx.Builder.Sketch(), ctx.Builder.GetBuildPath(), ctx.SketchLibrariesDetector.IncludeFolders(), ctx.LineOffset,
287287
ctx.Builder.GetBuildProperties(), ctx.OnlyUpdateCompilationDatabase)
288288
if ctx.BuilderLogger.Verbose() {
289289
ctx.BuilderLogger.WriteStdout(verboseOutput)
@@ -306,7 +306,7 @@ func PreprocessSketch(
306306
type Preprocess struct{}
307307

308308
func (s *Preprocess) Run(ctx *types.Context) error {
309-
if err := ctx.BuildPath.MkdirAll(); err != nil {
309+
if err := ctx.Builder.GetBuildPath().MkdirAll(); err != nil {
310310
return err
311311
}
312312

@@ -375,7 +375,7 @@ func RunPreprocess(ctx *types.Context) error {
375375
func findIncludes(ctx *types.Context) types.BareCommand {
376376
return types.BareCommand(func(ctx *types.Context) error {
377377
return ctx.SketchLibrariesDetector.FindIncludes(
378-
ctx.BuildPath,
378+
ctx.Builder.GetBuildPath(),
379379
ctx.Builder.GetBuildProperties().GetPath("build.core.path"),
380380
ctx.Builder.GetBuildProperties().GetPath("build.variant.path"),
381381
ctx.SketchBuildPath,
@@ -416,7 +416,7 @@ func containerBuildOptions(ctx *types.Context) types.BareCommand {
416416
// ctx.Builder.GetBuildProperties()
417417
buildOptionsJSON, buildOptionsJSONPrevious, infoMessage, err := ContainerBuildOptions(
418418
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
419-
ctx.BuiltInLibrariesDirs, ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.CustomBuildProperties(),
419+
ctx.BuiltInLibrariesDirs, ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.CustomBuildProperties(),
420420
ctx.FQBN.String(), ctx.Clean, ctx.Builder.GetBuildProperties(),
421421
)
422422
if infoMessage != "" {

legacy/builder/test/builder_test.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ import (
3232
)
3333

3434
func cleanUpBuilderTestContext(t *testing.T, ctx *types.Context) {
35-
if ctx.BuildPath != nil {
36-
err := ctx.BuildPath.RemoveAll()
37-
require.NoError(t, err)
35+
if ctx.Builder.GetBuildPath() != nil {
36+
require.NoError(t, ctx.Builder.GetBuildPath().RemoveAll())
3837
}
3938
}
4039

@@ -59,13 +58,9 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat
5958
ctx.BuiltInLibrariesDirs = paths.New("downloaded_libraries")
6059
ctx.OtherLibrariesDirs = paths.NewPathList("libraries")
6160
}
62-
if ctx.BuildPath == nil {
63-
buildPath, err := paths.MkTempDir("", "test_build_path")
64-
require.NoError(t, err)
65-
ctx.BuildPath = buildPath
66-
}
6761

68-
buildPath := ctx.BuildPath
62+
buildPath, err := paths.MkTempDir("", "test_build_path")
63+
require.NoError(t, err)
6964
sketchBuildPath, err := buildPath.Join(constants.FOLDER_SKETCH).Abs()
7065
require.NoError(t, err)
7166
librariesBuildPath, err := buildPath.Join(constants.FOLDER_LIBRARIES).Abs()
@@ -110,7 +105,7 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat
110105
requiredTools, err := pme.FindToolsRequiredForBuild(targetPlatform, buildPlatform)
111106
require.NoError(t, err)
112107

113-
ctx.Builder, err = bldr.NewBuilder(sk, boardBuildProperties, ctx.BuildPath, false /*OptimizeForDebug*/, nil, 0, nil)
108+
ctx.Builder, err = bldr.NewBuilder(sk, boardBuildProperties, buildPath, false /*OptimizeForDebug*/, nil, 0, nil)
114109
require.NoError(t, err)
115110

116111
ctx.PackageManager = pme
@@ -122,7 +117,7 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat
122117
}
123118

124119
if sk != nil {
125-
require.False(t, ctx.BuildPath.Canonical().EqualsTo(sk.FullPath.Canonical()))
120+
require.False(t, ctx.Builder.GetBuildPath().Canonical().EqualsTo(sk.FullPath.Canonical()))
126121
}
127122

128123
if !stepToSkip[skipLibraries] {

legacy/builder/test/create_build_options_map_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ func TestCreateBuildOptionsMap(t *testing.T) {
3232
BuiltInToolsDirs: paths.NewPathList("tools"),
3333
OtherLibrariesDirs: paths.NewPathList("libraries"),
3434
FQBN: parseFQBN(t, "my:nice:fqbn"),
35-
BuildPath: paths.New("buildPath"),
3635
}
3736

3837
buildProperties := properties.NewFromHashmap(map[string]string{"compiler.optimization_flags": "-Os"})

legacy/builder/test/helper.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121

2222
"github.com/arduino/arduino-cli/arduino/cores"
2323
"github.com/arduino/arduino-cli/arduino/libraries"
24-
"github.com/arduino/arduino-cli/legacy/builder/types"
2524
paths "github.com/arduino/go-paths-helper"
2625
"github.com/stretchr/testify/require"
2726
)
@@ -32,10 +31,9 @@ func Abs(t *testing.T, rel *paths.Path) *paths.Path {
3231
return absPath
3332
}
3433

35-
func SetupBuildPath(t *testing.T, ctx *types.Context) *paths.Path {
34+
func SetupBuildPath(t *testing.T) *paths.Path {
3635
buildPath, err := paths.MkTempDir("", "test_build_path")
3736
require.NoError(t, err)
38-
ctx.BuildPath = buildPath
3937
return buildPath
4038
}
4139

legacy/builder/test/load_previous_build_options_map_test.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,27 @@ import (
2020

2121
"github.com/arduino/arduino-cli/legacy/builder"
2222
"github.com/arduino/arduino-cli/legacy/builder/constants"
23-
"github.com/arduino/arduino-cli/legacy/builder/types"
2423
"github.com/stretchr/testify/require"
2524
)
2625

2726
func TestLoadPreviousBuildOptionsMap(t *testing.T) {
28-
ctx := &types.Context{}
29-
30-
buildPath := SetupBuildPath(t, ctx)
27+
buildPath := SetupBuildPath(t)
3128
defer buildPath.RemoveAll()
3229

3330
err := buildPath.Join(constants.BUILD_OPTIONS_FILE).WriteFile([]byte("test"))
3431
require.NoError(t, err)
3532

36-
buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(ctx.BuildPath)
33+
buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(buildPath)
3734
require.NoError(t, err)
3835

3936
require.Equal(t, "test", buildOptionsJsonPrevious)
4037
}
4138

4239
func TestLoadPreviousBuildOptionsMapMissingFile(t *testing.T) {
43-
ctx := &types.Context{}
44-
45-
buildPath := SetupBuildPath(t, ctx)
40+
buildPath := SetupBuildPath(t)
4641
defer buildPath.RemoveAll()
4742

48-
buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(ctx.BuildPath)
43+
buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(buildPath)
4944
require.NoError(t, err)
5045
require.Empty(t, buildOptionsJsonPrevious)
5146
}

legacy/builder/test/merge_sketch_with_bootloader_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestMergeSketchWithBootloader(t *testing.T) {
3333
ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno")
3434
defer cleanUpBuilderTestContext(t, ctx)
3535

36-
buildPath := ctx.BuildPath
36+
buildPath := ctx.Builder.GetBuildPath()
3737
err := buildPath.Join("sketch").MkdirAll()
3838
require.NoError(t, err)
3939

@@ -73,7 +73,7 @@ func TestMergeSketchWithBootloader(t *testing.T) {
7373
builderLogger := logger.New(nil, nil, false, "")
7474
err = builder.MergeSketchWithBootloader(
7575
ctx.OnlyUpdateCompilationDatabase,
76-
ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
76+
ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
7777
builderLogger,
7878
)
7979
require.NoError(t, err)
@@ -90,7 +90,7 @@ func TestMergeSketchWithBootloaderSketchInBuildPath(t *testing.T) {
9090
ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno")
9191
defer cleanUpBuilderTestContext(t, ctx)
9292

93-
buildPath := ctx.BuildPath
93+
buildPath := ctx.Builder.GetBuildPath()
9494
err := buildPath.Join("sketch").MkdirAll()
9595
require.NoError(t, err)
9696

@@ -130,7 +130,7 @@ func TestMergeSketchWithBootloaderSketchInBuildPath(t *testing.T) {
130130
builderLogger := logger.New(nil, nil, false, "")
131131
err = builder.MergeSketchWithBootloader(
132132
ctx.OnlyUpdateCompilationDatabase,
133-
ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
133+
ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
134134
builderLogger,
135135
)
136136
require.NoError(t, err)
@@ -148,15 +148,15 @@ func TestMergeSketchWithBootloaderWhenNoBootloaderAvailable(t *testing.T) {
148148
ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno")
149149
defer cleanUpBuilderTestContext(t, ctx)
150150

151-
buildPath := ctx.BuildPath
151+
buildPath := ctx.Builder.GetBuildPath()
152152
buildProperties := ctx.Builder.GetBuildProperties()
153153
buildProperties.Remove(constants.BUILD_PROPERTIES_BOOTLOADER_NOBLINK)
154154
buildProperties.Remove(constants.BUILD_PROPERTIES_BOOTLOADER_FILE)
155155

156156
builderLogger := logger.New(nil, nil, false, "")
157157
err := builder.MergeSketchWithBootloader(
158158
ctx.OnlyUpdateCompilationDatabase,
159-
ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
159+
ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
160160
builderLogger,
161161
)
162162
require.NoError(t, err)
@@ -176,7 +176,7 @@ func TestMergeSketchWithBootloaderPathIsParameterized(t *testing.T) {
176176
ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:mymega:cpu=atmega2560")
177177
defer cleanUpBuilderTestContext(t, ctx)
178178

179-
buildPath := ctx.BuildPath
179+
buildPath := ctx.Builder.GetBuildPath()
180180
err := buildPath.Join("sketch").MkdirAll()
181181
require.NoError(t, err)
182182

@@ -216,7 +216,7 @@ func TestMergeSketchWithBootloaderPathIsParameterized(t *testing.T) {
216216
builderLogger := logger.New(nil, nil, false, "")
217217
err = builder.MergeSketchWithBootloader(
218218
ctx.OnlyUpdateCompilationDatabase,
219-
ctx.BuildPath, ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
219+
ctx.Builder.GetBuildPath(), ctx.Builder.Sketch(), ctx.Builder.GetBuildProperties(),
220220
builderLogger,
221221
)
222222
require.NoError(t, err)

legacy/builder/test/store_build_options_map_test.go

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,31 @@ import (
2121
"github.com/arduino/arduino-cli/arduino/sketch"
2222
"github.com/arduino/arduino-cli/legacy/builder"
2323
"github.com/arduino/arduino-cli/legacy/builder/constants"
24-
"github.com/arduino/arduino-cli/legacy/builder/types"
2524
paths "github.com/arduino/go-paths-helper"
2625
"github.com/arduino/go-properties-orderedmap"
2726
"github.com/stretchr/testify/require"
2827
)
2928

3029
func TestStoreBuildOptionsMap(t *testing.T) {
31-
ctx := &types.Context{
32-
HardwareDirs: paths.NewPathList("hardware"),
33-
BuiltInToolsDirs: paths.NewPathList("tools"),
34-
BuiltInLibrariesDirs: paths.New("built-in libraries"),
35-
OtherLibrariesDirs: paths.NewPathList("libraries"),
36-
FQBN: parseFQBN(t, "my:nice:fqbn"),
37-
}
30+
hardwareDirs := paths.NewPathList("hardware")
31+
builtInToolsDirs := paths.NewPathList("tools")
32+
builtInLibrariesDirs := paths.New("built-in libraries")
33+
otherLibrariesDirs := paths.NewPathList("libraries")
34+
fqbn := parseFQBN(t, "my:nice:fqbn")
3835

39-
buildPath := SetupBuildPath(t, ctx)
36+
buildPath := SetupBuildPath(t)
4037
defer buildPath.RemoveAll()
4138

4239
buildProperties := properties.NewFromHashmap(map[string]string{"compiler.optimization_flags": "-Os"})
4340
buildPropertiesJSON, err := builder.CreateBuildOptionsMap(
44-
ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs,
45-
ctx.BuiltInLibrariesDirs, &sketch.Sketch{FullPath: paths.New("sketchLocation")}, []string{"custom=prop"},
46-
ctx.FQBN.String(), buildProperties.Get("compiler.optimization_flags"),
41+
hardwareDirs, builtInToolsDirs, otherLibrariesDirs,
42+
builtInLibrariesDirs, &sketch.Sketch{FullPath: paths.New("sketchLocation")}, []string{"custom=prop"},
43+
fqbn.String(), buildProperties.Get("compiler.optimization_flags"),
4744
)
4845
require.NoError(t, err)
49-
ctx.BuildOptionsJson = buildPropertiesJSON
46+
buildOptionsJson := buildPropertiesJSON
5047

51-
err = builder.StoreBuildOptionsMap(ctx.BuildPath, ctx.BuildOptionsJson)
48+
err = builder.StoreBuildOptionsMap(buildPath, buildOptionsJson)
5249
require.NoError(t, err)
5350

5451
exist, err := buildPath.Join(constants.BUILD_OPTIONS_FILE).ExistCheck()

0 commit comments

Comments
 (0)