Skip to content

Commit 2058479

Browse files
author
Federico Fissore
committed
Adding info in LibraryResolutionResult about whether selected library comes
from a platform or from outside. If the former and there are duplicates, no warning is printed. Fixes #37 Signed-off-by: Federico Fissore <[email protected]>
1 parent 4e6db8c commit 2058479

File tree

4 files changed

+40
-7
lines changed

4 files changed

+40
-7
lines changed

Diff for: src/arduino.cc/builder/includes_to_include_folders.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ func resolveLibrary(header string, headerToLibraries map[string][]*types.Library
144144

145145
library = useAlreadyImportedLibraryWithSameNameIfExists(library, markImportedLibrary)
146146

147-
libraryResolutionResults[header] = types.LibraryResolutionResult{Library: library, NotUsedLibraries: filterOutLibraryFrom(libraries, library)}
147+
isLibraryFromPlatform := findLibraryIn(librariesInPlatforms, library) != nil
148+
libraryResolutionResults[header] = types.LibraryResolutionResult{Library: library, IsLibraryFromPlatform: isLibraryFromPlatform, NotUsedLibraries: filterOutLibraryFrom(libraries, library)}
148149

149150
markImportedLibrary[library] = true
150151
}

Diff for: src/arduino.cc/builder/print_used_and_not_used_libraries.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@ func (s *PrintUsedAndNotUsedLibraries) Run(context map[string]interface{}) error
4848
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
4949

5050
for header, libResResult := range libraryResolutionResults {
51-
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_MULTIPLE_LIBS_FOUND_FOR, header)
52-
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_USED, libResResult.Library.Folder)
53-
for _, notUsedLibrary := range libResResult.NotUsedLibraries {
54-
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_NOT_USED, notUsedLibrary.Folder)
51+
if !libResResult.IsLibraryFromPlatform {
52+
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_MULTIPLE_LIBS_FOUND_FOR, header)
53+
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_USED, libResResult.Library.Folder)
54+
for _, notUsedLibrary := range libResResult.NotUsedLibraries {
55+
logger.Fprintln(os.Stderr, constants.MSG_LIBRARIES_NOT_USED, notUsedLibrary.Folder)
56+
}
5557
}
5658
}
5759

Diff for: src/arduino.cc/builder/test/includes_to_include_folders_test.go

+29
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ func TestIncludesToIncludeFolders(t *testing.T) {
7474
importedLibraries := context[constants.CTX_IMPORTED_LIBRARIES].([]*types.Library)
7575
require.Equal(t, 1, len(importedLibraries))
7676
require.Equal(t, "Bridge", importedLibraries[0].Name)
77+
78+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
79+
require.NotNil(t, libraryResolutionResults)
80+
require.False(t, libraryResolutionResults["Bridge.h"].IsLibraryFromPlatform)
7781
}
7882

7983
func TestIncludesToIncludeFoldersSketchWithIfDef(t *testing.T) {
@@ -109,6 +113,9 @@ func TestIncludesToIncludeFoldersSketchWithIfDef(t *testing.T) {
109113

110114
importedLibraries := context[constants.CTX_IMPORTED_LIBRARIES].([]*types.Library)
111115
require.Equal(t, 0, len(importedLibraries))
116+
117+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
118+
require.NotNil(t, libraryResolutionResults)
112119
}
113120

114121
func TestIncludesToIncludeFoldersIRremoteLibrary(t *testing.T) {
@@ -147,6 +154,11 @@ func TestIncludesToIncludeFoldersIRremoteLibrary(t *testing.T) {
147154
require.Equal(t, 2, len(importedLibraries))
148155
require.Equal(t, "Bridge", importedLibraries[0].Name)
149156
require.Equal(t, "IRremote", importedLibraries[1].Name)
157+
158+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
159+
require.NotNil(t, libraryResolutionResults)
160+
require.False(t, libraryResolutionResults["Bridge.h"].IsLibraryFromPlatform)
161+
require.False(t, libraryResolutionResults["IRremote.h"].IsLibraryFromPlatform)
150162
}
151163

152164
func TestIncludesToIncludeFoldersANewLibrary(t *testing.T) {
@@ -185,6 +197,11 @@ func TestIncludesToIncludeFoldersANewLibrary(t *testing.T) {
185197
require.Equal(t, 2, len(importedLibraries))
186198
require.Equal(t, "ANewLibrary-master", importedLibraries[0].Name)
187199
require.Equal(t, "IRremote", importedLibraries[1].Name)
200+
201+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
202+
require.NotNil(t, libraryResolutionResults)
203+
require.False(t, libraryResolutionResults["anewlibrary.h"].IsLibraryFromPlatform)
204+
require.False(t, libraryResolutionResults["IRremote.h"].IsLibraryFromPlatform)
188205
}
189206

190207
func TestIncludesToIncludeFoldersDuplicateLibs(t *testing.T) {
@@ -223,6 +240,10 @@ func TestIncludesToIncludeFoldersDuplicateLibs(t *testing.T) {
223240
require.Equal(t, 1, len(importedLibraries))
224241
require.Equal(t, "SPI", importedLibraries[0].Name)
225242
require.Equal(t, Abs(t, filepath.Join("user_hardware", "my_avr_platform", "avr", "libraries", "SPI")), importedLibraries[0].SrcFolder)
243+
244+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
245+
require.NotNil(t, libraryResolutionResults)
246+
require.True(t, libraryResolutionResults["SPI.h"].IsLibraryFromPlatform)
226247
}
227248

228249
func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatform(t *testing.T) {
@@ -261,6 +282,10 @@ func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatfo
261282
require.Equal(t, 1, len(importedLibraries))
262283
require.Equal(t, "SPI", importedLibraries[0].Name)
263284
require.Equal(t, Abs(t, filepath.Join("libraries", "SPI")), importedLibraries[0].SrcFolder)
285+
286+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
287+
require.NotNil(t, libraryResolutionResults)
288+
require.False(t, libraryResolutionResults["SPI.h"].IsLibraryFromPlatform)
264289
}
265290

266291
func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
@@ -298,4 +323,8 @@ func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
298323
require.Equal(t, 1, len(importedLibraries))
299324
require.Equal(t, "USBHost", importedLibraries[0].Name)
300325
require.Equal(t, Abs(t, filepath.Join("libraries", "USBHost", "src")), importedLibraries[0].SrcFolder)
326+
327+
libraryResolutionResults := context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)
328+
require.NotNil(t, libraryResolutionResults)
329+
require.False(t, libraryResolutionResults["Usb.h"].IsLibraryFromPlatform)
301330
}

Diff for: src/arduino.cc/builder/types/accessories.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ func (h *UniqueStringQueue) Empty() bool {
5353
}
5454

5555
type LibraryResolutionResult struct {
56-
Library *Library
57-
NotUsedLibraries []*Library
56+
Library *Library
57+
IsLibraryFromPlatform bool
58+
NotUsedLibraries []*Library
5859
}

0 commit comments

Comments
 (0)