Skip to content

Commit a47cf2a

Browse files
committed
Merge branch 'multiple-libraries-warning' of https://github.com/matthijskooijman/arduino-builder
Signed-off-by: Cristian Maglie <c.maglie@arduino.cc>
2 parents 6183f3b + 31f1d55 commit a47cf2a

File tree

5 files changed

+18
-54
lines changed

5 files changed

+18
-54
lines changed

src/arduino.cc/builder/builder.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (s *Builder) Run(ctx *types.Context) error {
123123
mainErr := runCommands(ctx, commands, true)
124124

125125
commands = []types.Command{
126-
&PrintUsedAndNotUsedLibraries{},
126+
&PrintUsedAndNotUsedLibraries{ SketchError: mainErr != nil },
127127

128128
&PrintUsedLibrariesIfVerbose{},
129129
}

src/arduino.cc/builder/includes_to_include_folders.go

+1-15
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,6 @@ func resolveLibrary(header string, headerToLibraries map[string][]*types.Library
123123

124124
reverse(libraries)
125125

126-
librariesInPlatforms := librariesInSomePlatform(libraries, platforms)
127-
128126
var library *types.Library
129127

130128
for _, platform := range platforms {
@@ -149,8 +147,7 @@ func resolveLibrary(header string, headerToLibraries map[string][]*types.Library
149147

150148
library = useAlreadyImportedLibraryWithSameNameIfExists(library, markImportedLibrary)
151149

152-
isLibraryFromPlatform := findLibraryIn(librariesInPlatforms, library) != nil
153-
libraryResolutionResults[header] = types.LibraryResolutionResult{Library: library, IsLibraryFromPlatform: isLibraryFromPlatform, NotUsedLibraries: filterOutLibraryFrom(libraries, library)}
150+
libraryResolutionResults[header] = types.LibraryResolutionResult{Library: library, NotUsedLibraries: filterOutLibraryFrom(libraries, library)}
154151

155152
markImportedLibrary[library] = true
156153
}
@@ -162,17 +159,6 @@ func reverse(data []*types.Library) {
162159
}
163160
}
164161

165-
func librariesInSomePlatform(libraries []*types.Library, platforms []*types.Platform) []*types.Library {
166-
librariesInPlatforms := []*types.Library{}
167-
for _, platform := range platforms {
168-
if platform != nil {
169-
librariesWithinSpecifiedPlatform := librariesWithinPlatform(libraries, platform)
170-
librariesInPlatforms = append(librariesInPlatforms, librariesWithinSpecifiedPlatform...)
171-
}
172-
}
173-
return librariesInPlatforms
174-
}
175-
176162
func markImportedLibraryContainsOneOfCandidates(markImportedLibrary map[*types.Library]bool, libraries []*types.Library) bool {
177163
for markedLibrary, _ := range markImportedLibrary {
178164
for _, library := range libraries {

src/arduino.cc/builder/print_used_and_not_used_libraries.go

+16-8
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,31 @@ import (
3636
"time"
3737
)
3838

39-
type PrintUsedAndNotUsedLibraries struct{}
39+
type PrintUsedAndNotUsedLibraries struct {
40+
// Was there an error while compiling the sketch?
41+
SketchError bool
42+
}
4043

4144
func (s *PrintUsedAndNotUsedLibraries) Run(ctx *types.Context) error {
42-
if ctx.DebugLevel < 0 {
45+
var logLevel string
46+
// Print this message as warning when the sketch didn't compile,
47+
// as info when we're verbose and not all otherwise
48+
if s.SketchError {
49+
logLevel = constants.LOG_LEVEL_WARN
50+
} else if ctx.Verbose {
51+
logLevel = constants.LOG_LEVEL_INFO
52+
} else {
4353
return nil
4454
}
4555

4656
logger := ctx.GetLogger()
4757
libraryResolutionResults := ctx.LibrariesResolutionResults
4858

4959
for header, libResResult := range libraryResolutionResults {
50-
if !libResResult.IsLibraryFromPlatform {
51-
logger.Fprintln(os.Stdout, constants.LOG_LEVEL_WARN, constants.MSG_LIBRARIES_MULTIPLE_LIBS_FOUND_FOR, header)
52-
logger.Fprintln(os.Stdout, constants.LOG_LEVEL_WARN, constants.MSG_LIBRARIES_USED, libResResult.Library.Folder)
53-
for _, notUsedLibrary := range libResResult.NotUsedLibraries {
54-
logger.Fprintln(os.Stdout, constants.LOG_LEVEL_WARN, constants.MSG_LIBRARIES_NOT_USED, notUsedLibrary.Folder)
55-
}
60+
logger.Fprintln(os.Stdout, logLevel, constants.MSG_LIBRARIES_MULTIPLE_LIBS_FOUND_FOR, header)
61+
logger.Fprintln(os.Stdout, logLevel, constants.MSG_LIBRARIES_USED, libResResult.Library.Folder)
62+
for _, notUsedLibrary := range libResResult.NotUsedLibraries {
63+
logger.Fprintln(os.Stdout, logLevel, constants.MSG_LIBRARIES_NOT_USED, notUsedLibrary.Folder)
5664
}
5765
}
5866

src/arduino.cc/builder/test/includes_to_include_folders_test.go

-29
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,6 @@ func TestIncludesToIncludeFolders(t *testing.T) {
7373
importedLibraries := ctx.ImportedLibraries
7474
require.Equal(t, 1, len(importedLibraries))
7575
require.Equal(t, "Bridge", importedLibraries[0].Name)
76-
77-
libraryResolutionResults := ctx.LibrariesResolutionResults
78-
require.NotNil(t, libraryResolutionResults)
79-
require.False(t, libraryResolutionResults["Bridge.h"].IsLibraryFromPlatform)
8076
}
8177

8278
func TestIncludesToIncludeFoldersSketchWithIfDef(t *testing.T) {
@@ -112,9 +108,6 @@ func TestIncludesToIncludeFoldersSketchWithIfDef(t *testing.T) {
112108

113109
importedLibraries := ctx.ImportedLibraries
114110
require.Equal(t, 0, len(importedLibraries))
115-
116-
libraryResolutionResults := ctx.LibrariesResolutionResults
117-
require.NotNil(t, libraryResolutionResults)
118111
}
119112

120113
func TestIncludesToIncludeFoldersIRremoteLibrary(t *testing.T) {
@@ -153,11 +146,6 @@ func TestIncludesToIncludeFoldersIRremoteLibrary(t *testing.T) {
153146
require.Equal(t, 2, len(importedLibraries))
154147
require.Equal(t, "Bridge", importedLibraries[0].Name)
155148
require.Equal(t, "IRremote", importedLibraries[1].Name)
156-
157-
libraryResolutionResults := ctx.LibrariesResolutionResults
158-
require.NotNil(t, libraryResolutionResults)
159-
require.False(t, libraryResolutionResults["Bridge.h"].IsLibraryFromPlatform)
160-
require.False(t, libraryResolutionResults["IRremote.h"].IsLibraryFromPlatform)
161149
}
162150

163151
func TestIncludesToIncludeFoldersANewLibrary(t *testing.T) {
@@ -196,11 +184,6 @@ func TestIncludesToIncludeFoldersANewLibrary(t *testing.T) {
196184
require.Equal(t, 2, len(importedLibraries))
197185
require.Equal(t, "ANewLibrary-master", importedLibraries[0].Name)
198186
require.Equal(t, "IRremote", importedLibraries[1].Name)
199-
200-
libraryResolutionResults := ctx.LibrariesResolutionResults
201-
require.NotNil(t, libraryResolutionResults)
202-
require.False(t, libraryResolutionResults["anewlibrary.h"].IsLibraryFromPlatform)
203-
require.False(t, libraryResolutionResults["IRremote.h"].IsLibraryFromPlatform)
204187
}
205188

206189
func TestIncludesToIncludeFoldersDuplicateLibs(t *testing.T) {
@@ -238,10 +221,6 @@ func TestIncludesToIncludeFoldersDuplicateLibs(t *testing.T) {
238221
require.Equal(t, 1, len(importedLibraries))
239222
require.Equal(t, "SPI", importedLibraries[0].Name)
240223
require.Equal(t, Abs(t, filepath.Join("user_hardware", "my_avr_platform", "avr", "libraries", "SPI")), importedLibraries[0].SrcFolder)
241-
242-
libraryResolutionResults := ctx.LibrariesResolutionResults
243-
require.NotNil(t, libraryResolutionResults)
244-
require.True(t, libraryResolutionResults["SPI.h"].IsLibraryFromPlatform)
245224
}
246225

247226
func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatform(t *testing.T) {
@@ -280,10 +259,6 @@ func TestIncludesToIncludeFoldersDuplicateLibsWithConflictingLibsOutsideOfPlatfo
280259
require.Equal(t, 1, len(importedLibraries))
281260
require.Equal(t, "SPI", importedLibraries[0].Name)
282261
require.Equal(t, Abs(t, filepath.Join("libraries", "SPI")), importedLibraries[0].SrcFolder)
283-
284-
libraryResolutionResults := ctx.LibrariesResolutionResults
285-
require.NotNil(t, libraryResolutionResults)
286-
require.False(t, libraryResolutionResults["SPI.h"].IsLibraryFromPlatform)
287262
}
288263

289264
func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
@@ -322,8 +297,4 @@ func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
322297
require.Equal(t, 1, len(importedLibraries))
323298
require.Equal(t, "USBHost", importedLibraries[0].Name)
324299
require.Equal(t, Abs(t, filepath.Join("libraries", "USBHost", "src")), importedLibraries[0].SrcFolder)
325-
326-
libraryResolutionResults := ctx.LibrariesResolutionResults
327-
require.NotNil(t, libraryResolutionResults)
328-
require.False(t, libraryResolutionResults["Usb.h"].IsLibraryFromPlatform)
329300
}

src/arduino.cc/builder/types/types.go

-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@ type SourceFolder struct {
175175

176176
type LibraryResolutionResult struct {
177177
Library *Library
178-
IsLibraryFromPlatform bool
179178
NotUsedLibraries []*Library
180179
}
181180

0 commit comments

Comments
 (0)