Skip to content

Commit

Permalink
remove CompilationDatabase from Context
Browse files Browse the repository at this point in the history
  • Loading branch information
alessio-perugini committed Sep 12, 2023
1 parent fdd9ec6 commit 0c19451
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 56 deletions.
11 changes: 11 additions & 0 deletions arduino/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"errors"
"fmt"

"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/logger"
"github.com/arduino/arduino-cli/arduino/builder/progress"
"github.com/arduino/arduino-cli/arduino/cores"
Expand Down Expand Up @@ -59,6 +60,8 @@ type Builder struct {

// Set to true to skip build and produce only Compilation Database
onlyUpdateCompilationDatabase bool
// Compilation Database to build/update
compilationDatabase *compilation.Database

// Progress of all various steps
Progress *progress.Struct
Expand Down Expand Up @@ -152,6 +155,7 @@ func NewBuilder(
clean: clean,
sourceOverrides: sourceOverrides,
onlyUpdateCompilationDatabase: onlyUpdateCompilationDatabase,
compilationDatabase: compilation.NewDatabase(sketchBuildPath.Join("compile_commands.json")),
Progress: progressStats,
BuildOptionsManager: NewBuildOptionsManager(
hardwareDirs, builtInToolsDirs, otherLibrariesDirs,
Expand Down Expand Up @@ -192,3 +196,10 @@ func (b *Builder) GetLibrariesBuildPath() *paths.Path {
func (b *Builder) ExecutableSectionsSize() ExecutablesFileSections {
return b.executableSectionsSize
}

// SaveCompilationDatabase fixdoc
func (b *Builder) SaveCompilationDatabase() {
if b.compilationDatabase != nil {
b.compilationDatabase.SaveToFile()
}
}
17 changes: 5 additions & 12 deletions arduino/builder/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"os"
"strings"

"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/cpp"
"github.com/arduino/arduino-cli/arduino/builder/utils"
"github.com/arduino/arduino-cli/arduino/cores"
Expand All @@ -33,10 +32,7 @@ import (
)

// BuildCore fixdoc
func (b *Builder) BuildCore(
actualPlatform *cores.PlatformRelease,
compilationDatabase *compilation.Database,
) (paths.PathList, *paths.Path, error) {
func (b *Builder) BuildCore(actualPlatform *cores.PlatformRelease) (paths.PathList, *paths.Path, error) {
if err := b.coreBuildPath.MkdirAll(); err != nil {
return nil, nil, errors.WithStack(err)
}
Expand All @@ -53,18 +49,15 @@ func (b *Builder) BuildCore(
}
}

archiveFile, objectFiles, err := b.compileCore(actualPlatform, compilationDatabase)
archiveFile, objectFiles, err := b.compileCore(actualPlatform)
if err != nil {
return nil, nil, errors.WithStack(err)
}

return objectFiles, archiveFile, nil
}

func (b *Builder) compileCore(
actualPlatform *cores.PlatformRelease,
compilationDatabase *compilation.Database,
) (*paths.Path, paths.PathList, error) {
func (b *Builder) compileCore(actualPlatform *cores.PlatformRelease) (*paths.Path, paths.PathList, error) {
coreFolder := b.buildProperties.GetPath("build.core.path")
variantFolder := b.buildProperties.GetPath("build.variant.path")
targetCoreFolder := b.buildProperties.GetPath("runtime.platform.path")
Expand All @@ -81,7 +74,7 @@ func (b *Builder) compileCore(
variantObjectFiles, err = utils.CompileFilesRecursive(
variantFolder, b.coreBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.logger,
b.Progress,
Expand Down Expand Up @@ -132,7 +125,7 @@ func (b *Builder) compileCore(
coreObjectFiles, err := utils.CompileFilesRecursive(
coreFolder, b.coreBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.logger,
b.Progress,
Expand Down
27 changes: 8 additions & 19 deletions arduino/builder/libraries.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"strings"
"time"

"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/cpp"
"github.com/arduino/arduino-cli/arduino/builder/utils"
"github.com/arduino/arduino-cli/arduino/cores"
Expand All @@ -38,19 +37,15 @@ var (
)

// BuildLibraries fixdoc
func (b *Builder) BuildLibraries(
includesFolders paths.PathList,
importedLibraries libraries.List,
compilationDatabase *compilation.Database,
) (paths.PathList, error) {
func (b *Builder) BuildLibraries(includesFolders paths.PathList, importedLibraries libraries.List) (paths.PathList, error) {
includes := f.Map(includesFolders.AsStrings(), cpp.WrapWithHyphenI)
libs := importedLibraries

if err := b.librariesBuildPath.MkdirAll(); err != nil {
return nil, errors.WithStack(err)
}

librariesObjectFiles, err := b.compileLibraries(libs, includes, compilationDatabase)
librariesObjectFiles, err := b.compileLibraries(libs, includes)
if err != nil {
return nil, errors.WithStack(err)
}
Expand Down Expand Up @@ -117,16 +112,13 @@ func (b *Builder) findExpectedPrecompiledLibFolder(
return nil
}

func (b *Builder) compileLibraries(libraries libraries.List, includes []string, compilationDatabase *compilation.Database) (paths.PathList, error) {
func (b *Builder) compileLibraries(libraries libraries.List, includes []string) (paths.PathList, error) {
b.Progress.AddSubSteps(len(libraries))
defer b.Progress.RemoveSubSteps()

objectFiles := paths.NewPathList()
for _, library := range libraries {
libraryObjectFiles, err := b.compileLibrary(
library, includes,
compilationDatabase,
)
libraryObjectFiles, err := b.compileLibrary(library, includes)
if err != nil {
return nil, errors.WithStack(err)
}
Expand All @@ -139,10 +131,7 @@ func (b *Builder) compileLibraries(libraries libraries.List, includes []string,
return objectFiles, nil
}

func (b *Builder) compileLibrary(
library *libraries.Library, includes []string,
compilationDatabase *compilation.Database,
) (paths.PathList, error) {
func (b *Builder) compileLibrary(library *libraries.Library, includes []string) (paths.PathList, error) {
if b.logger.Verbose() {
b.logger.Info(tr(`Compiling library "%[1]s"`, library.Name))
}
Expand Down Expand Up @@ -205,7 +194,7 @@ func (b *Builder) compileLibrary(
libObjectFiles, err := utils.CompileFilesRecursive(
library.SourceDir, libraryBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.logger,
b.Progress,
Expand Down Expand Up @@ -236,7 +225,7 @@ func (b *Builder) compileLibrary(
libObjectFiles, err := utils.CompileFiles(
library.SourceDir, libraryBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.logger,
b.Progress,
Expand All @@ -251,7 +240,7 @@ func (b *Builder) compileLibrary(
utilityObjectFiles, err := utils.CompileFiles(
library.UtilityDir, utilityBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.logger,
b.Progress,
Expand Down
10 changes: 3 additions & 7 deletions arduino/builder/sketch.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"strconv"
"strings"

"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/cpp"
"github.com/arduino/arduino-cli/arduino/builder/utils"
"github.com/arduino/arduino-cli/arduino/sketch"
Expand Down Expand Up @@ -180,10 +179,7 @@ func writeIfDifferent(source []byte, destPath *paths.Path) error {
}

// BuildSketch fixdoc
func (b *Builder) BuildSketch(
includesFolders paths.PathList,
compilationDatabase *compilation.Database,
) (paths.PathList, error) {
func (b *Builder) BuildSketch(includesFolders paths.PathList) (paths.PathList, error) {
includes := f.Map(includesFolders.AsStrings(), cpp.WrapWithHyphenI)

if err := b.sketchBuildPath.MkdirAll(); err != nil {
Expand All @@ -193,7 +189,7 @@ func (b *Builder) BuildSketch(
sketchObjectFiles, err := utils.CompileFiles(
b.sketchBuildPath, b.sketchBuildPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.builderLogger,
b.Progress,
Expand All @@ -208,7 +204,7 @@ func (b *Builder) BuildSketch(
srcObjectFiles, err := utils.CompileFilesRecursive(
sketchSrcPath, sketchSrcPath, b.buildProperties, includes,
b.onlyUpdateCompilationDatabase,
compilationDatabase,
b.compilationDatabase,
b.jobs,
b.builderLogger,
b.Progress,
Expand Down
5 changes: 0 additions & 5 deletions commands/compile/compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import (

"github.com/arduino/arduino-cli/arduino"
bldr "github.com/arduino/arduino-cli/arduino/builder"
"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/detector"
"github.com/arduino/arduino-cli/arduino/builder/logger"
"github.com/arduino/arduino-cli/arduino/builder/progress"
Expand Down Expand Up @@ -223,10 +222,6 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
}
builderCtx.Builder = sketchBuilder

builderCtx.CompilationDatabase = compilation.NewDatabase(
sketchBuilder.GetBuildPath().Join("compile_commands.json"),
)

var libsManager *librariesmanager.LibrariesManager
if pme.GetProfile() != nil {
libsManager = lm
Expand Down
12 changes: 3 additions & 9 deletions legacy/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,7 @@ func (s *Builder) Run(ctx *types.Context) error {
}),

types.BareCommand(func(ctx *types.Context) error {
sketchObjectFiles, err := ctx.Builder.BuildSketch(
ctx.SketchLibrariesDetector.IncludeFolders(),
ctx.CompilationDatabase,
)
sketchObjectFiles, err := ctx.Builder.BuildSketch(ctx.SketchLibrariesDetector.IncludeFolders())
if err != nil {
return err
}
Expand All @@ -94,7 +91,6 @@ func (s *Builder) Run(ctx *types.Context) error {
librariesObjectFiles, err := ctx.Builder.BuildLibraries(
ctx.SketchLibrariesDetector.IncludeFolders(),
ctx.SketchLibrariesDetector.ImportedLibraries(),
ctx.CompilationDatabase,
)
if err != nil {
return err
Expand All @@ -113,7 +109,7 @@ func (s *Builder) Run(ctx *types.Context) error {
}),

types.BareCommand(func(ctx *types.Context) error {
objectFiles, archiveFile, err := ctx.Builder.BuildCore(ctx.ActualPlatform, ctx.CompilationDatabase)
objectFiles, archiveFile, err := ctx.Builder.BuildCore(ctx.ActualPlatform)

ctx.CoreObjectsFiles = objectFiles
ctx.CoreArchiveFilePath = archiveFile
Expand Down Expand Up @@ -176,9 +172,7 @@ func (s *Builder) Run(ctx *types.Context) error {
ctx.Builder.Progress.PushProgress()
}

if ctx.CompilationDatabase != nil {
ctx.CompilationDatabase.SaveToFile()
}
ctx.Builder.SaveCompilationDatabase()

var otherErr error
commands = []types.Command{
Expand Down
4 changes: 0 additions & 4 deletions legacy/builder/types/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ package types

import (
"github.com/arduino/arduino-cli/arduino/builder"
"github.com/arduino/arduino-cli/arduino/builder/compilation"
"github.com/arduino/arduino-cli/arduino/builder/detector"
"github.com/arduino/arduino-cli/arduino/builder/logger"
"github.com/arduino/arduino-cli/arduino/cores"
Expand Down Expand Up @@ -48,7 +47,4 @@ type Context struct {

// C++ Parsing
LineOffset int

// Compilation Database to build/update
CompilationDatabase *compilation.Database
}

0 comments on commit 0c19451

Please sign in to comment.