Movatterモバイル変換


[0]ホーム

URL:


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

Commitd89b51e

Browse files
author
Federico Fissore
committed
Source files were recursively collected despite target library was layout was
FLAT.Fixes#41Signed-off-by: Federico Fissore <f.fissore@arduino.cc>
1 parent8c1b2d8 commitd89b51e

18 files changed

+182
-30
lines changed

‎src/arduino.cc/builder/add_additional_entries_to_context.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (s *AddAdditionalEntriesToContext) Run(context map[string]interface{}) erro
8282

8383
sourceFiles:=&types.UniqueStringQueue{}
8484
context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE]=sourceFiles
85-
foldersWithSources:=&types.UniqueStringQueue{}
85+
foldersWithSources:=&types.UniqueSourceFolderQueue{}
8686
context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE]=foldersWithSources
8787

8888
context[constants.CTX_LIBRARY_RESOLUTION_RESULTS]=make(map[string]types.LibraryResolutionResult)

‎src/arduino.cc/builder/collect_all_source_files_from_folders_with_sources.go‎

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,27 @@ import (
3434
"arduino.cc/builder/gohasissues"
3535
"arduino.cc/builder/types"
3636
"arduino.cc/builder/utils"
37+
"io/ioutil"
38+
"os"
39+
"path/filepath"
40+
"strings"
3741
)
3842

3943
typeCollectAllSourceFilesFromFoldersWithSourcesstruct{}
4044

4145
func (s*CollectAllSourceFilesFromFoldersWithSources)Run(contextmap[string]interface{})error {
42-
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueStringQueue)
46+
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueSourceFolderQueue)
4347
sourceFiles:=context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE].(*types.UniqueStringQueue)
4448

4549
filePaths:= []string{}
4650
for!foldersWithSources.Empty() {
47-
checkExtensionFunc:=func(extstring)bool {
48-
returnADDITIONAL_FILE_VALID_EXTENSIONS_NO_HEADERS[ext]
51+
sourceFolder:=foldersWithSources.Pop().(types.SourceFolder)
52+
varerrerror
53+
ifsourceFolder.Recurse {
54+
err=collectByWalk(&filePaths,sourceFolder.Folder)
55+
}else {
56+
err=collectByReadDir(&filePaths,sourceFolder.Folder)
4957
}
50-
walkFunc:=utils.CollectAllReadableFiles(&filePaths,checkExtensionFunc)
51-
err:=gohasissues.Walk(foldersWithSources.Pop().(string),walkFunc)
5258
iferr!=nil {
5359
returnutils.WrapError(err)
5460
}
@@ -60,3 +66,30 @@ func (s *CollectAllSourceFilesFromFoldersWithSources) Run(context map[string]int
6066

6167
returnnil
6268
}
69+
70+
funccollectByWalk(filePaths*[]string,folderstring)error {
71+
checkExtensionFunc:=func(extstring)bool {
72+
returnADDITIONAL_FILE_VALID_EXTENSIONS_NO_HEADERS[ext]
73+
}
74+
walkFunc:=utils.CollectAllReadableFiles(filePaths,checkExtensionFunc)
75+
err:=gohasissues.Walk(folder,walkFunc)
76+
returnutils.WrapError(err)
77+
}
78+
79+
funccollectByReadDir(filePaths*[]string,folderstring)error {
80+
if_,err:=os.Stat(folder);err!=nil&&os.IsNotExist(err) {
81+
returnnil
82+
}
83+
84+
files,err:=ioutil.ReadDir(folder)
85+
iferr!=nil {
86+
returnutils.WrapError(err)
87+
}
88+
for_,file:=rangefiles {
89+
ext:=strings.ToLower(filepath.Ext(file.Name()))
90+
ifADDITIONAL_FILE_VALID_EXTENSIONS_NO_HEADERS[ext] {
91+
*filePaths=append(*filePaths,filepath.Join(folder,file.Name()))
92+
}
93+
}
94+
returnnil
95+
}

‎src/arduino.cc/builder/container_find_includes.go‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,14 @@ func (s *ContainerFindIncludes) Run(context map[string]interface{}) error {
6262
}
6363
}
6464

65-
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueStringQueue)
66-
foldersWithSources.Push(context[constants.CTX_SKETCH_BUILD_PATH])
65+
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueSourceFolderQueue)
66+
foldersWithSources.Push(types.SourceFolder{Folder:context[constants.CTX_SKETCH_BUILD_PATH].(string),Recurse:true})
6767
ifutils.MapHas(context,constants.CTX_IMPORTED_LIBRARIES) {
6868
for_,library:=rangecontext[constants.CTX_IMPORTED_LIBRARIES].([]*types.Library) {
69-
foldersWithSources.Push(library.SrcFolder)
69+
sourceFolders:=utils.LibraryToSourceFolder(library)
70+
for_,sourceFolder:=rangesourceFolders {
71+
foldersWithSources.Push(sourceFolder)
72+
}
7073
}
7174
}
7275

‎src/arduino.cc/builder/includes_to_include_folders.go‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,15 @@ func (s *IncludesToIncludeFolders) Run(context map[string]interface{}) error {
6262
returnutils.WrapError(err)
6363
}
6464

65-
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueStringQueue)
65+
foldersWithSources:=context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueSourceFolderQueue)
6666

6767
for_,newlyImportedLibrary:=rangenewlyImportedLibraries {
6868
if!sliceContainsLibrary(importedLibraries,newlyImportedLibrary) {
6969
importedLibraries=append(importedLibraries,newlyImportedLibrary)
70-
foldersWithSources.Push(newlyImportedLibrary.SrcFolder)
70+
sourceFolders:=utils.LibraryToSourceFolder(newlyImportedLibrary)
71+
for_,sourceFolder:=rangesourceFolders {
72+
foldersWithSources.Push(sourceFolder)
73+
}
7174
}
7275
}
7376

‎src/arduino.cc/builder/test/add_additional_entries_to_context_test.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func TestAddAdditionalEntriesToContextNoBuildPath(t *testing.T) {
5555
require.NotNil(t,context[constants.CTX_LIBRARY_DISCOVERY_RECURSION_DEPTH])
5656

5757
require.True(t,context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE].(*types.UniqueStringQueue).Empty())
58-
require.True(t,context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueStringQueue).Empty())
58+
require.True(t,context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueSourceFolderQueue).Empty())
5959

6060
require.Equal(t,0,len(context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)))
6161
}
@@ -79,7 +79,7 @@ func TestAddAdditionalEntriesToContextWithBuildPath(t *testing.T) {
7979
require.NotNil(t,context[constants.CTX_LIBRARY_DISCOVERY_RECURSION_DEPTH])
8080

8181
require.True(t,context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE].(*types.UniqueStringQueue).Empty())
82-
require.True(t,context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueStringQueue).Empty())
82+
require.True(t,context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE].(*types.UniqueSourceFolderQueue).Empty())
8383

8484
require.Equal(t,0,len(context[constants.CTX_LIBRARY_RESOLUTION_RESULTS].(map[string]types.LibraryResolutionResult)))
8585
}

‎src/arduino.cc/builder/test/builder_test.go‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,3 +292,24 @@ func TestBuilderSketchWithBackup(t *testing.T) {
292292
err:=command.Run(context)
293293
NoError(t,err)
294294
}
295+
296+
funcTestBuilderSketchWithOldLib(t*testing.T) {
297+
DownloadCoresAndToolsAndLibraries(t)
298+
299+
context:=make(map[string]interface{})
300+
301+
buildPath:=SetupBuildPath(t,context)
302+
deferos.RemoveAll(buildPath)
303+
304+
context[constants.CTX_HARDWARE_FOLDERS]= []string{filepath.Join("..","hardware"),"hardware","downloaded_hardware"}
305+
context[constants.CTX_TOOLS_FOLDERS]= []string{"downloaded_tools"}
306+
context[constants.CTX_FQBN]="arduino:avr:uno"
307+
context[constants.CTX_SKETCH_LOCATION]=filepath.Join("sketch_with_old_lib","sketch.ino")
308+
context[constants.CTX_BUILT_IN_LIBRARIES_FOLDERS]= []string{"downloaded_libraries"}
309+
context[constants.CTX_OTHER_LIBRARIES_FOLDERS]= []string{"libraries"}
310+
context[constants.CTX_BUILD_PROPERTIES_RUNTIME_IDE_VERSION]="10600"
311+
312+
command:= builder.Builder{}
313+
err:=command.Run(context)
314+
NoError(t,err)
315+
}

‎src/arduino.cc/builder/test/collect_all_source_files_from_folders_with_sources_test.go‎

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ func TestCollectAllSourceFilesFromFoldersWithSources(t *testing.T) {
4444

4545
sourceFiles:=&types.UniqueStringQueue{}
4646
context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE]=sourceFiles
47-
foldersWithSources:=&types.UniqueStringQueue{}
48-
foldersWithSources.Push(Abs(t,"sketch_with_config"))
47+
foldersWithSources:=&types.UniqueSourceFolderQueue{}
48+
foldersWithSources.Push(types.SourceFolder{Folder:Abs(t,"sketch_with_config"),Recurse:true})
4949
context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE]=foldersWithSources
5050

5151
commands:= []types.Command{
@@ -71,8 +71,8 @@ func TestCollectAllSourceFilesFromFoldersWithSourcesOfLibrary(t *testing.T) {
7171

7272
sourceFiles:=&types.UniqueStringQueue{}
7373
context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE]=sourceFiles
74-
foldersWithSources:=&types.UniqueStringQueue{}
75-
foldersWithSources.Push(Abs(t,filepath.Join("downloaded_libraries","Bridge")))
74+
foldersWithSources:=&types.UniqueSourceFolderQueue{}
75+
foldersWithSources.Push(types.SourceFolder{Folder:Abs(t,filepath.Join("downloaded_libraries","Bridge")),Recurse:true})
7676
context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE]=foldersWithSources
7777

7878
commands:= []types.Command{
@@ -100,3 +100,33 @@ func TestCollectAllSourceFilesFromFoldersWithSourcesOfLibrary(t *testing.T) {
100100
require.Equal(t,Abs(t,filepath.Join("downloaded_libraries","Bridge","src","Process.cpp")),sourceFiles.Pop())
101101
require.Equal(t,0,len(*sourceFiles))
102102
}
103+
104+
funcTestCollectAllSourceFilesFromFoldersWithSourcesOfOldLibrary(t*testing.T) {
105+
context:=make(map[string]interface{})
106+
107+
sourceFiles:=&types.UniqueStringQueue{}
108+
context[constants.CTX_COLLECTED_SOURCE_FILES_QUEUE]=sourceFiles
109+
foldersWithSources:=&types.UniqueSourceFolderQueue{}
110+
foldersWithSources.Push(types.SourceFolder{Folder:Abs(t,filepath.Join("libraries","ShouldNotRecurseWithOldLibs")),Recurse:false})
111+
foldersWithSources.Push(types.SourceFolder{Folder:Abs(t,filepath.Join("libraries","ShouldNotRecurseWithOldLibs","utility")),Recurse:false})
112+
foldersWithSources.Push(types.SourceFolder{Folder:Abs(t,"non existent folder"),Recurse:false})
113+
context[constants.CTX_FOLDERS_WITH_SOURCES_QUEUE]=foldersWithSources
114+
115+
commands:= []types.Command{
116+
&builder.SetupHumanLoggerIfMissing{},
117+
&builder.CollectAllSourceFilesFromFoldersWithSources{},
118+
}
119+
120+
for_,command:=rangecommands {
121+
err:=command.Run(context)
122+
NoError(t,err)
123+
}
124+
125+
require.Equal(t,2,len(*sourceFiles))
126+
require.Equal(t,0,len(*foldersWithSources))
127+
sort.Strings(*sourceFiles)
128+
129+
require.Equal(t,Abs(t,filepath.Join("libraries","ShouldNotRecurseWithOldLibs","ShouldNotRecurseWithOldLibs.cpp")),sourceFiles.Pop())
130+
require.Equal(t,Abs(t,filepath.Join("libraries","ShouldNotRecurseWithOldLibs","utility","utils.cpp")),sourceFiles.Pop())
131+
require.Equal(t,0,len(*sourceFiles))
132+
}

‎src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.cpp‎

Whitespace-only changes.

‎src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.h‎

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#error "This file is never supposed to be compiled"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp