diff --git a/arduino/builder/builder.go b/arduino/builder/builder.go index 1644ad5b0fe..69776236508 100644 --- a/arduino/builder/builder.go +++ b/arduino/builder/builder.go @@ -51,6 +51,11 @@ type Builder struct { logger *logger.BuilderLogger clean bool + // Source code overrides (filename -> content map). + // The provided source data is used instead of reading it from disk. + // The keys of the map are paths relative to sketch folder. + sourceOverrides map[string]string + *BuildOptionsManager } @@ -67,6 +72,7 @@ func NewBuilder( builtInLibrariesDirs *paths.Path, fqbn *cores.FQBN, clean bool, + sourceOverrides map[string]string, logger *logger.BuilderLogger, ) (*Builder, error) { buildProperties := properties.NewMap() @@ -128,6 +134,7 @@ func NewBuilder( coreBuildCachePath: coreBuildCachePath, logger: logger, clean: clean, + sourceOverrides: sourceOverrides, BuildOptionsManager: NewBuildOptionsManager( hardwareDirs, builtInToolsDirs, otherLibrariesDirs, builtInLibrariesDirs, buildPath, diff --git a/arduino/builder/sketch.go b/arduino/builder/sketch.go index 422c3fd345a..4bdf6415f46 100644 --- a/arduino/builder/sketch.go +++ b/arduino/builder/sketch.go @@ -48,12 +48,12 @@ func (b *Builder) Sketch() *sketch.Sketch { // PrepareSketchBuildPath copies the sketch source files in the build path. // The .ino files are merged together to create a .cpp file (by the way, the // .cpp file still needs to be Arduino-preprocessed to compile). -func (b *Builder) PrepareSketchBuildPath(sourceOverrides map[string]string) (int, error) { +func (b *Builder) PrepareSketchBuildPath() (int, error) { if err := b.sketchBuildPath.MkdirAll(); err != nil { return 0, errors.Wrap(err, tr("unable to create a folder to save the sketch")) } - offset, mergedSource, err := b.sketchMergeSources(sourceOverrides) + offset, mergedSource, err := b.sketchMergeSources(b.sourceOverrides) if err != nil { return 0, err } @@ -63,7 +63,7 @@ func (b *Builder) PrepareSketchBuildPath(sourceOverrides map[string]string) (int return 0, err } - if err := b.sketchCopyAdditionalFiles(b.sketchBuildPath, sourceOverrides); err != nil { + if err := b.sketchCopyAdditionalFiles(b.sketchBuildPath, b.sourceOverrides); err != nil { return 0, err } diff --git a/arduino/builder/sketch_test.go b/arduino/builder/sketch_test.go index 2b400faec54..f7e8cc1d5b6 100644 --- a/arduino/builder/sketch_test.go +++ b/arduino/builder/sketch_test.go @@ -54,7 +54,7 @@ func TestMergeSketchSources(t *testing.T) { b, err := NewBuilder( sk, nil, paths.New("testdata"), false, nil, 0, nil, - nil, nil, nil, nil, fqbn, false, nil) + nil, nil, nil, nil, fqbn, false, nil, nil) require.NoError(t, err) offset, source, err := b.sketchMergeSources(nil) @@ -73,7 +73,7 @@ func TestMergeSketchSourcesArduinoIncluded(t *testing.T) { // ensure not to include Arduino.h when it's already there b, err := NewBuilder(sk, nil, paths.New("testdata"), false, nil, 0, nil, - nil, nil, nil, nil, fqbn, false, nil) + nil, nil, nil, nil, fqbn, false, nil, nil) require.NoError(t, err) _, source, err := b.sketchMergeSources(nil) @@ -95,7 +95,7 @@ func TestCopyAdditionalFiles(t *testing.T) { require.NoError(t, err) b1, err := NewBuilder(sk1, nil, paths.New("testdata"), false, nil, 0, nil, - nil, nil, nil, nil, fqbn, false, nil) + nil, nil, nil, nil, fqbn, false, nil, nil) require.NoError(t, err) // copy the sketch over, create a fake main file we don't care about it diff --git a/commands/compile/compile.go b/commands/compile/compile.go index bb7f47a0565..96e9165a9d3 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -189,7 +189,6 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream builderCtx.BuiltInLibrariesDirs = configuration.IDEBuiltinLibrariesDir(configuration.Settings) builderCtx.OnlyUpdateCompilationDatabase = req.GetCreateCompilationDatabaseOnly() - builderCtx.SourceOverride = req.GetSourceOverride() builderLogger := logger.New(outStream, errStream, req.GetVerbose(), req.GetWarnings()) builderCtx.BuilderLogger = builderLogger @@ -208,6 +207,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream builderCtx.BuiltInLibrariesDirs, fqbn, req.GetClean(), + req.GetSourceOverride(), builderLogger, ) if err != nil { diff --git a/legacy/builder/builder.go b/legacy/builder/builder.go index 6feb0e4ce5f..11bf2457900 100644 --- a/legacy/builder/builder.go +++ b/legacy/builder/builder.go @@ -51,7 +51,7 @@ func (s *Builder) Run(ctx *types.Context) error { }), types.BareCommand(func(ctx *types.Context) error { - ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride) + ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath() return _err }), @@ -315,7 +315,7 @@ func (s *Preprocess) Run(ctx *types.Context) error { }), types.BareCommand(func(ctx *types.Context) error { - ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride) + ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath() return _err }), diff --git a/legacy/builder/test/builder_test.go b/legacy/builder/test/builder_test.go index 9db68dc723d..e6cfe93cf1b 100644 --- a/legacy/builder/test/builder_test.go +++ b/legacy/builder/test/builder_test.go @@ -106,7 +106,7 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat ctx.Builder, err = bldr.NewBuilder( sk, nil, buildPath, false, nil, 0, nil, ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs, - ctx.BuiltInLibrariesDirs, parseFQBN(t, "a:b:c"), false, builderLogger, + ctx.BuiltInLibrariesDirs, parseFQBN(t, "a:b:c"), false, nil, builderLogger, ) require.NoError(t, err) if fqbnString != "" { @@ -119,7 +119,7 @@ func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *pat ctx.Builder, err = bldr.NewBuilder( sk, boardBuildProperties, buildPath, false, nil, 0, nil, ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs, - ctx.BuiltInLibrariesDirs, fqbn, false, builderLogger) + ctx.BuiltInLibrariesDirs, fqbn, false, nil, builderLogger) require.NoError(t, err) ctx.PackageManager = pme diff --git a/legacy/builder/types/context.go b/legacy/builder/types/context.go index 0b7875994a7..c241d02997a 100644 --- a/legacy/builder/types/context.go +++ b/legacy/builder/types/context.go @@ -64,11 +64,6 @@ type Context struct { CompilationDatabase *compilation.Database // Set to true to skip build and produce only Compilation Database OnlyUpdateCompilationDatabase bool - - // Source code overrides (filename -> content map). - // The provided source data is used instead of reading it from disk. - // The keys of the map are paths relative to sketch folder. - SourceOverride map[string]string } func (ctx *Context) PushProgress() {