Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8b364d8

Browse files
committedMay 24, 2024
Small refactoring of compileCore function
This change helps to better understand next commits.
1 parent dc13ef6 commit 8b364d8

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed
 

‎internal/arduino/builder/core.go

+20-18
Original file line numberDiff line numberDiff line change
@@ -89,28 +89,30 @@ func (b *Builder) compileCore() (*paths.Path, paths.PathList, error) {
8989
b.buildProperties.Get("compiler.optimization_flags"),
9090
realCoreFolder,
9191
)
92-
targetArchivedCore = b.coreBuildCachePath.Join(archivedCoreName, "core.a")
9392

94-
if _, err := buildcache.New(b.coreBuildCachePath).GetOrCreate(archivedCoreName); errors.Is(err, buildcache.CreateDirErr) {
95-
return nil, nil, errors.New(i18n.Tr("creating core cache folder: %s", err))
93+
canUseArchivedCore := func(archivedCore *paths.Path) bool {
94+
if b.onlyUpdateCompilationDatabase || b.clean {
95+
return false
96+
}
97+
if isOlder, err := utils.DirContentIsOlderThan(realCoreFolder, archivedCore); err != nil || !isOlder {
98+
// Recreate the archive if ANY of the core files (including platform.txt) has changed
99+
return false
100+
}
101+
if targetCoreFolder == nil || realCoreFolder.EquivalentTo(targetCoreFolder) {
102+
return true
103+
}
104+
if isOlder, err := utils.DirContentIsOlderThan(targetCoreFolder, archivedCore); err != nil || !isOlder {
105+
// Recreate the archive if ANY of the build core files (including platform.txt) has changed
106+
return false
107+
}
108+
return true
96109
}
97110

98-
var canUseArchivedCore bool
99-
if b.onlyUpdateCompilationDatabase || b.clean {
100-
canUseArchivedCore = false
101-
} else if isOlder, err := utils.DirContentIsOlderThan(realCoreFolder, targetArchivedCore); err != nil || !isOlder {
102-
// Recreate the archive if ANY of the core files (including platform.txt) has changed
103-
canUseArchivedCore = false
104-
} else if targetCoreFolder == nil || realCoreFolder.EquivalentTo(targetCoreFolder) {
105-
canUseArchivedCore = true
106-
} else if isOlder, err := utils.DirContentIsOlderThan(targetCoreFolder, targetArchivedCore); err != nil || !isOlder {
107-
// Recreate the archive if ANY of the build core files (including platform.txt) has changed
108-
canUseArchivedCore = false
109-
} else {
110-
canUseArchivedCore = true
111+
if _, err := buildcache.New(b.coreBuildCachePath).GetOrCreate(archivedCoreName); errors.Is(err, buildcache.CreateDirErr) {
112+
return nil, nil, errors.New(i18n.Tr("creating core cache folder: %s", err))
111113
}
112-
113-
if canUseArchivedCore {
114+
targetArchivedCore = b.coreBuildCachePath.Join(archivedCoreName, "core.a")
115+
if canUseArchivedCore(targetArchivedCore) {
114116
// use archived core
115117
if b.logger.Verbose() {
116118
b.logger.Info(i18n.Tr("Using precompiled core: %[1]s", targetArchivedCore))

0 commit comments

Comments
 (0)
Please sign in to comment.