Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7241f25

Browse files
committed
fix: libraries are recompiled if the list of include paths changes
1 parent b717a2a commit 7241f25

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

‎internal/arduino/builder/builder.go‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,14 @@ func (b *Builder) preprocess() error {
327327
if err != nil {
328328
return err
329329
}
330+
if b.libsDetector.IncludeFoldersChanged() && b.librariesBuildPath.Exist() {
331+
if b.logger.VerbosityLevel() == logger.VerbosityVerbose {
332+
b.logger.Info(i18n.Tr("The list of included libraries has been changed... rebuilding all libraries."))
333+
}
334+
if err := b.librariesBuildPath.RemoveAll(); err != nil {
335+
return err
336+
}
337+
}
330338
b.Progress.CompleteStep()
331339

332340
b.warnAboutArchIncompatibleLibraries(b.libsDetector.ImportedLibraries())

‎internal/arduino/builder/internal/detector/detector.go‎

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"fmt"
2424
"os/exec"
2525
"regexp"
26+
"slices"
2627
"strings"
2728
"time"
2829

@@ -60,6 +61,7 @@ type SketchLibrariesDetector struct {
6061
logger *logger.BuilderLogger
6162
diagnosticStore *diagnostics.Store
6263
preRunner *runner.Runner
64+
detectedChangeInLibraries bool
6365
}
6466

6567
// NewSketchLibrariesDetector todo
@@ -192,6 +194,12 @@ func (l *SketchLibrariesDetector) IncludeFolders() paths.PathList {
192194
return l.includeFolders
193195
}
194196

197+
// IncludeFoldersChanged returns true if the include folders list changed
198+
// from the previous compile.
199+
func (l *SketchLibrariesDetector) IncludeFoldersChanged() bool {
200+
return l.detectedChangeInLibraries
201+
}
202+
195203
// addIncludeFolder add the given folder to the include path.
196204
func (l *SketchLibrariesDetector) addIncludeFolder(folder *paths.Path) {
197205
l.includeFolders = append(l.includeFolders, folder)
@@ -237,17 +245,21 @@ func (l *SketchLibrariesDetector) findIncludes(
237245
platformArch string,
238246
jobs int,
239247
) error {
240-
librariesResolutionCache := buildPath.Join("libraries.cache")
241-
if l.useCachedLibrariesResolution && librariesResolutionCache.Exist() {
242-
d, err := librariesResolutionCache.ReadFile()
248+
librariesResolutionCachePath := buildPath.Join("libraries.cache")
249+
var cachedIncludeFolders paths.PathList
250+
if librariesResolutionCachePath.Exist() {
251+
d, err := librariesResolutionCachePath.ReadFile()
243252
if err != nil {
244253
return err
245254
}
246-
if err := json.Unmarshal(d, &l.includeFolders); err != nil {
255+
if err := json.Unmarshal(d, &cachedIncludeFolders); err != nil {
247256
return err
248257
}
258+
}
259+
if l.useCachedLibrariesResolution && librariesResolutionCachePath.Exist() {
260+
l.includeFolders = cachedIncludeFolders
249261
if l.logger.VerbosityLevel() == logger.VerbosityVerbose {
250-
l.logger.Info("Using cached library discovery: " + librariesResolutionCache.String())
262+
l.logger.Info("Using cached library discovery: " + librariesResolutionCachePath.String())
251263
}
252264
return nil
253265
}
@@ -329,10 +341,12 @@ func (l *SketchLibrariesDetector) findIncludes(
329341

330342
if d, err := json.Marshal(l.includeFolders); err != nil {
331343
return err
332-
} else if err := librariesResolutionCache.WriteFile(d); err != nil {
344+
} else if err := librariesResolutionCachePath.WriteFile(d); err != nil {
333345
return err
334346
}
335-
347+
l.detectedChangeInLibraries = !slices.Equal(
348+
cachedIncludeFolders.AsStrings(),
349+
l.includeFolders.AsStrings())
336350
return nil
337351
}
338352

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /