Skip to content

Commit 067f1d0

Browse files
committed
moved LibraryToSourceFolder function in arduino-cli
1 parent f37025c commit 067f1d0

7 files changed

+24
-42
lines changed

Diff for: container_find_includes.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,8 @@ func findIncludesUntilDone(ctx *types.Context, cache *includeCache, sourceFile t
315315
cache.ExpectFile(sourcePath)
316316

317317
includes := ctx.IncludeFolders
318-
if library, ok := sourceFile.Origin.(*libraries.Library); ok && library.UtilityFolder != "" {
319-
includes = append(includes, library.UtilityFolder)
318+
if library, ok := sourceFile.Origin.(*libraries.Library); ok && library.UtilityFolder != nil {
319+
includes = append(includes, library.UtilityFolder.String())
320320
}
321321
if unchanged && cache.valid {
322322
include = cache.Next().Include
@@ -354,10 +354,10 @@ func findIncludesUntilDone(ctx *types.Context, cache *includeCache, sourceFile t
354354
// include path and queue its source files for further
355355
// include scanning
356356
ctx.ImportedLibraries = append(ctx.ImportedLibraries, library)
357-
appendIncludeFolder(ctx, cache, sourcePath, include, library.SrcFolder)
358-
sourceFolders := types.LibraryToSourceFolder(library)
357+
appendIncludeFolder(ctx, cache, sourcePath, include, library.SrcFolder.String())
358+
sourceFolders := library.SourceDirs()
359359
for _, sourceFolder := range sourceFolders {
360-
queueSourceFilesFromFolder(ctx, ctx.CollectedSourceFiles, library, sourceFolder.Folder, sourceFolder.Recurse)
360+
queueSourceFilesFromFolder(ctx, ctx.CollectedSourceFiles, library, sourceFolder.Folder.String(), sourceFolder.Recurse)
361361
}
362362
first = false
363363
}

Diff for: fail_if_imported_library_is_wrong.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@
3030
package builder
3131

3232
import (
33-
"os"
34-
"path/filepath"
35-
3633
"github.com/arduino/arduino-builder/constants"
3734
"github.com/arduino/arduino-builder/i18n"
3835
"github.com/arduino/arduino-builder/types"
@@ -50,7 +47,7 @@ func (s *FailIfImportedLibraryIsWrong) Run(ctx *types.Context) error {
5047

5148
for _, library := range ctx.ImportedLibraries {
5249
if !library.IsLegacy {
53-
if stat, err := os.Stat(filepath.Join(library.Folder, constants.LIBRARY_FOLDER_ARCH)); err == nil && stat.IsDir() {
50+
if isDir, _ := library.Folder.Join(constants.LIBRARY_FOLDER_ARCH).IsDir(); isDir {
5451
return i18n.ErrorfWithLogger(logger, constants.MSG_ARCH_FOLDER_NOT_SUPPORTED)
5552
}
5653
for _, propName := range libraries.MandatoryProperties {
@@ -59,7 +56,7 @@ func (s *FailIfImportedLibraryIsWrong) Run(ctx *types.Context) error {
5956
}
6057
}
6158
if library.Layout == libraries.RecursiveLayout {
62-
if stat, err := os.Stat(filepath.Join(library.Folder, "utility")); err == nil && stat.IsDir() {
59+
if library.UtilityFolder != nil {
6360
return i18n.ErrorfWithLogger(logger, constants.MSG_LIBRARY_CAN_USE_SRC_AND_UTILITY_FOLDERS, library.Folder)
6461
}
6562
}

Diff for: libraries_loader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (s *LibrariesLoader) Run(ctx *types.Context) error {
9999

100100
headerToLibraries := make(map[string][]*libraries.Library)
101101
for _, library := range libs {
102-
headers, err := utils.ReadDirFiltered(library.SrcFolder, utils.FilterFilesWithExtensions(".h", ".hpp", ".hh"))
102+
headers, err := utils.ReadDirFiltered(library.SrcFolder.String(), utils.FilterFilesWithExtensions(".h", ".hpp", ".hh"))
103103
if err != nil {
104104
return i18n.WrapError(err)
105105
}

Diff for: phases/libraries_builder.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func fixLDFLAGforPrecompiledLibraries(ctx *types.Context, libraries []*libraries
8282
// add library src path to compiler.c.elf.extra_flags
8383
// use library.Name as lib name and srcPath/{mcpu} as location
8484
mcu := ctx.BuildProperties[constants.BUILD_PROPERTIES_BUILD_MCU]
85-
path := filepath.Join(library.SrcFolder, mcu)
85+
path := library.SrcFolder.Join(mcu).String()
8686
// find all library names in the folder and prepend -l
8787
filePaths := []string{}
8888
libs_cmd := library.LDflags + " "
@@ -133,7 +133,7 @@ func compileLibrary(library *libraries.Library, buildPath string, buildPropertie
133133

134134
filePaths := []string{}
135135
mcu := buildProperties[constants.BUILD_PROPERTIES_BUILD_MCU]
136-
err := utils.FindFilesInFolder(&filePaths, filepath.Join(library.SrcFolder, mcu), extensions, true)
136+
err := utils.FindFilesInFolder(&filePaths, library.SrcFolder.Join(mcu).String(), extensions, true)
137137
if err != nil {
138138
return nil, i18n.WrapError(err)
139139
}
@@ -145,7 +145,7 @@ func compileLibrary(library *libraries.Library, buildPath string, buildPropertie
145145
}
146146

147147
if library.Layout == libraries.RecursiveLayout {
148-
objectFiles, err = builder_utils.CompileFilesRecursive(objectFiles, library.SrcFolder, libraryBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
148+
objectFiles, err = builder_utils.CompileFilesRecursive(objectFiles, library.SrcFolder.String(), libraryBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
149149
if err != nil {
150150
return nil, i18n.WrapError(err)
151151
}
@@ -157,17 +157,17 @@ func compileLibrary(library *libraries.Library, buildPath string, buildPropertie
157157
objectFiles = []string{archiveFile}
158158
}
159159
} else {
160-
if library.UtilityFolder != "" {
161-
includes = append(includes, utils.WrapWithHyphenI(library.UtilityFolder))
160+
if library.UtilityFolder != nil {
161+
includes = append(includes, utils.WrapWithHyphenI(library.UtilityFolder.String()))
162162
}
163-
objectFiles, err = builder_utils.CompileFiles(objectFiles, library.SrcFolder, false, libraryBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
163+
objectFiles, err = builder_utils.CompileFiles(objectFiles, library.SrcFolder.String(), false, libraryBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
164164
if err != nil {
165165
return nil, i18n.WrapError(err)
166166
}
167167

168-
if library.UtilityFolder != "" {
168+
if library.UtilityFolder != nil {
169169
utilityBuildPath := filepath.Join(libraryBuildPath, "utility")
170-
objectFiles, err = builder_utils.CompileFiles(objectFiles, library.UtilityFolder, false, utilityBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
170+
objectFiles, err = builder_utils.CompileFiles(objectFiles, library.UtilityFolder.String(), false, utilityBuildPath, buildProperties, includes, verbose, warningsLevel, logger)
171171
if err != nil {
172172
return nil, i18n.WrapError(err)
173173
}

Diff for: test/includes_to_include_folders_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ func TestIncludesToIncludeFoldersDuplicateLibs(t *testing.T) {
222222
sort.Sort(ByLibraryName(importedLibraries))
223223
require.Equal(t, 1, len(importedLibraries))
224224
require.Equal(t, "SPI", importedLibraries[0].Name)
225-
require.Equal(t, Abs(t, filepath.Join("user_hardware", "my_avr_platform", "avr", "libraries", "SPI")), importedLibraries[0].SrcFolder)
225+
require.Equal(t, Abs(t, filepath.Join("user_hardware", "my_avr_platform", "avr", "libraries", "SPI")), importedLibraries[0].SrcFolder.String())
226226
}
227227

228228
func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatform(t *testing.T) {
@@ -260,7 +260,7 @@ func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatfo
260260
sort.Sort(ByLibraryName(importedLibraries))
261261
require.Equal(t, 1, len(importedLibraries))
262262
require.Equal(t, "SPI", importedLibraries[0].Name)
263-
require.Equal(t, Abs(t, filepath.Join("libraries", "SPI")), importedLibraries[0].SrcFolder)
263+
require.Equal(t, Abs(t, filepath.Join("libraries", "SPI")), importedLibraries[0].SrcFolder.String())
264264
}
265265

266266
func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
@@ -298,7 +298,7 @@ func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
298298
sort.Sort(ByLibraryName(importedLibraries))
299299
require.Equal(t, 1, len(importedLibraries))
300300
require.Equal(t, "USBHost", importedLibraries[0].Name)
301-
require.Equal(t, Abs(t, filepath.Join("libraries", "USBHost", "src")), importedLibraries[0].SrcFolder)
301+
require.Equal(t, Abs(t, filepath.Join("libraries", "USBHost", "src")), importedLibraries[0].SrcFolder.String())
302302
}
303303

304304
func TestIncludesToIncludeFoldersSubfolders(t *testing.T) {

Diff for: test/libraries_loader_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ func TestLoadLibrariesAVR(t *testing.T) {
7979

8080
idx++
8181
require.Equal(t, "Adafruit_PN532", libs[idx].Name)
82-
require.Equal(t, Abs(t, "downloaded_libraries/Adafruit_PN532"), libs[idx].Folder)
83-
require.Equal(t, Abs(t, "downloaded_libraries/Adafruit_PN532"), libs[idx].SrcFolder)
82+
require.Equal(t, Abs(t, "downloaded_libraries/Adafruit_PN532"), libs[idx].Folder.String())
83+
require.Equal(t, Abs(t, "downloaded_libraries/Adafruit_PN532"), libs[idx].SrcFolder.String())
8484
require.Equal(t, 1, len(libs[idx].Architectures))
8585
require.Equal(t, constants.LIBRARY_ALL_ARCHS, libs[idx].Architectures[0])
8686
require.False(t, libs[idx].IsLegacy)
@@ -95,8 +95,8 @@ func TestLoadLibrariesAVR(t *testing.T) {
9595
idx++
9696
bridgeLib := libs[idx]
9797
require.Equal(t, "Bridge", bridgeLib.Name)
98-
require.Equal(t, Abs(t, "downloaded_libraries/Bridge"), bridgeLib.Folder)
99-
require.Equal(t, Abs(t, "downloaded_libraries/Bridge/src"), bridgeLib.SrcFolder)
98+
require.Equal(t, Abs(t, "downloaded_libraries/Bridge"), bridgeLib.Folder.String())
99+
require.Equal(t, Abs(t, "downloaded_libraries/Bridge/src"), bridgeLib.SrcFolder.String())
100100
require.Equal(t, 1, len(bridgeLib.Architectures))
101101
require.Equal(t, constants.LIBRARY_ALL_ARCHS, bridgeLib.Architectures[0])
102102
require.Equal(t, "Arduino", bridgeLib.Author)

Diff for: types/types.go

+1-16
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func sourceRoot(ctx *Context, origin interface{}) string {
8080
case *Sketch:
8181
return ctx.SketchBuildPath
8282
case *libraries.Library:
83-
return o.SrcFolder
83+
return o.SrcFolder.String()
8484
default:
8585
panic("Unexpected origin for SourceFile: " + fmt.Sprint(origin))
8686
}
@@ -149,11 +149,6 @@ func (proto *Prototype) String() string {
149149
return proto.Modifiers + " " + proto.Prototype + " @ " + strconv.Itoa(proto.Line)
150150
}
151151

152-
type SourceFolder struct {
153-
Folder string
154-
Recurse bool
155-
}
156-
157152
type LibraryResolutionResult struct {
158153
Library *libraries.Library
159154
NotUsedLibraries []*libraries.Library
@@ -176,16 +171,6 @@ type CTag struct {
176171
PrototypeModifiers string
177172
}
178173

179-
func LibraryToSourceFolder(library *libraries.Library) []SourceFolder {
180-
sourceFolders := []SourceFolder{}
181-
recurse := library.Layout == libraries.RecursiveLayout
182-
sourceFolders = append(sourceFolders, SourceFolder{Folder: library.SrcFolder, Recurse: recurse})
183-
if library.UtilityFolder != "" {
184-
sourceFolders = append(sourceFolders, SourceFolder{Folder: library.UtilityFolder, Recurse: false})
185-
}
186-
return sourceFolders
187-
}
188-
189174
type Command interface {
190175
Run(ctx *Context) error
191176
}

0 commit comments

Comments
 (0)