From 2cbd7535b83503797f20f2af018125748b6bf8c4 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 13 Jan 2021 15:10:48 +0100 Subject: [PATCH 1/5] Precompiled libraries: only select a folder if it contains files --- legacy/builder/phases/libraries_builder.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/legacy/builder/phases/libraries_builder.go b/legacy/builder/phases/libraries_builder.go index 398cc9b3e79..b0266f20b69 100644 --- a/legacy/builder/phases/libraries_builder.go +++ b/legacy/builder/phases/libraries_builder.go @@ -53,6 +53,18 @@ func (s *LibrariesBuilder) Run(ctx *types.Context) error { return nil } +func containsFile(folder *paths.Path) bool { + res, _ := folder.ReadDir() + hasfiles := false + for _, el := range res { + if !el.IsDir() { + hasfiles = true + break + } + } + return hasfiles +} + func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Library) *paths.Path { mcu := ctx.BuildProperties.Get(constants.BUILD_PROPERTIES_BUILD_MCU) // Add fpu specifications if they exist @@ -86,7 +98,7 @@ func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Lib if len(fpuSpecs) > 0 { fpuSpecs = strings.TrimRight(fpuSpecs, "-") fullPrecompDir := library.SourceDir.Join(mcu).Join(fpuSpecs) - if fullPrecompDir.Exist() { + if fullPrecompDir.Exist() && containsFile(fullPrecompDir) { logger.Fprintln(os.Stdout, constants.LOG_LEVEL_INFO, "Using precompiled library in {0}", fullPrecompDir) return fullPrecompDir } @@ -94,7 +106,7 @@ func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Lib } precompDir := library.SourceDir.Join(mcu) - if precompDir.Exist() { + if precompDir.Exist() && containsFile(precompDir) { logger.Fprintln(os.Stdout, constants.LOG_LEVEL_INFO, "Using precompiled library in {0}", precompDir) return precompDir } From 39a1b2bcac2d50efda8361c32c01430ab05e409a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 15 Jan 2021 10:02:20 +0100 Subject: [PATCH 2/5] Restore precompiled tests --- test/test_compile.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/test/test_compile.py b/test/test_compile.py index 0da154ca267..2373be2a462 100644 --- a/test/test_compile.py +++ b/test/test_compile.py @@ -181,33 +181,26 @@ def test_compile_blacklisted_sketchname(run_command, data_dir): assert result.ok -@pytest.mark.skip() def test_compile_without_precompiled_libraries(run_command, data_dir): # Init the environment explicitly url = "https://adafruit.github.io/arduino-board-index/package_adafruit_index.json" result = run_command("core update-index --additional-urls={}".format(url)) assert result.ok - # arduino:mbed 1.1.5 is incompatible with the Arduino_TensorFlowLite library - # see: https://github.com/arduino/ArduinoCore-nRF528x-mbedos/issues/93 - result = run_command("core install arduino:mbed@1.1.4 --additional-urls={}".format(url)) + result = run_command("core install arduino:mbed@1.3.1 --additional-urls={}".format(url)) assert result.ok result = run_command("core install arduino:samd@1.8.7 --additional-urls={}".format(url)) assert result.ok result = run_command("core install adafruit:samd@1.6.0 --additional-urls={}".format(url)) assert result.ok - # Install pre-release version of Arduino_TensorFlowLite (will be officially released - # via lib manager after https://github.com/arduino/arduino-builder/issues/353 is in) - import zipfile - - with zipfile.ZipFile("test/testdata/Arduino_TensorFlowLite.zip", "r") as zip_ref: - zip_ref.extractall("{}/libraries/".format(data_dir)) - result = run_command("lib install Arduino_LSM9DS1@1.1.0") + # Precompiled version of Arduino_TensorflowLite + result = run_command("lib install Arduino_TensorflowLite@2.1.1-ALPHA-precompiled") assert result.ok result = run_command( "compile -b arduino:mbed:nano33ble {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format(data_dir) ) assert result.ok + # should work on adafruit too after https://github.com/arduino/arduino-cli/pull/1134 result = run_command( "compile -b adafruit:samd:adafruit_feather_m4 {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format( data_dir @@ -216,7 +209,7 @@ def test_compile_without_precompiled_libraries(run_command, data_dir): assert result.ok # Non-precompiled version of Arduino_TensorflowLite - result = run_command("lib install Arduino_TensorflowLite@1.15.0-ALPHA") + result = run_command("lib install Arduino_TensorflowLite@2.1.0-ALPHA") assert result.ok result = run_command( "compile -b arduino:mbed:nano33ble {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format(data_dir) @@ -241,6 +234,12 @@ def test_compile_without_precompiled_libraries(run_command, data_dir): ) assert result.ok + # USBBlaster library + result = run_command('lib install "USBBlaster@1.0.0"') + assert result.ok + result = run_command( + "compile -b arduino:samd:mkrvidor4000 {}/libraries/USBBlaster/examples/USB_Blaster/".format(data_dir) + ) def test_compile_with_build_properties_flag(run_command, data_dir, copy_sketch): # Init the environment explicitly From 13fa7de53178afe7a8ddd402a2e7b10ff1cf95f7 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 15 Jan 2021 11:03:06 +0100 Subject: [PATCH 3/5] slightly refactored directoryContainsFile function --- legacy/builder/phases/libraries_builder.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/legacy/builder/phases/libraries_builder.go b/legacy/builder/phases/libraries_builder.go index b0266f20b69..ba8529d865e 100644 --- a/legacy/builder/phases/libraries_builder.go +++ b/legacy/builder/phases/libraries_builder.go @@ -53,16 +53,12 @@ func (s *LibrariesBuilder) Run(ctx *types.Context) error { return nil } -func containsFile(folder *paths.Path) bool { - res, _ := folder.ReadDir() - hasfiles := false - for _, el := range res { - if !el.IsDir() { - hasfiles = true - break - } +func directoryContainsFile(folder *paths.Path) bool { + if files, err := folder.ReadDir(); err == nil { + files.FilterOutDirs() + return len(files) > 0 } - return hasfiles + return false } func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Library) *paths.Path { @@ -98,7 +94,7 @@ func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Lib if len(fpuSpecs) > 0 { fpuSpecs = strings.TrimRight(fpuSpecs, "-") fullPrecompDir := library.SourceDir.Join(mcu).Join(fpuSpecs) - if fullPrecompDir.Exist() && containsFile(fullPrecompDir) { + if fullPrecompDir.Exist() && directoryContainsFile(fullPrecompDir) { logger.Fprintln(os.Stdout, constants.LOG_LEVEL_INFO, "Using precompiled library in {0}", fullPrecompDir) return fullPrecompDir } @@ -106,7 +102,7 @@ func findExpectedPrecompiledLibFolder(ctx *types.Context, library *libraries.Lib } precompDir := library.SourceDir.Join(mcu) - if precompDir.Exist() && containsFile(precompDir) { + if precompDir.Exist() && directoryContainsFile(precompDir) { logger.Fprintln(os.Stdout, constants.LOG_LEVEL_INFO, "Using precompiled library in {0}", precompDir) return precompDir } From 2abe447445d266b6e073e6facbac8aef5f1043d2 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Fri, 15 Jan 2021 11:08:12 +0100 Subject: [PATCH 4/5] [skip changelog] Fix compile tests --- test/test_compile.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/test_compile.py b/test/test_compile.py index 2373be2a462..53ffe89913e 100644 --- a/test/test_compile.py +++ b/test/test_compile.py @@ -237,9 +237,8 @@ def test_compile_without_precompiled_libraries(run_command, data_dir): # USBBlaster library result = run_command('lib install "USBBlaster@1.0.0"') assert result.ok - result = run_command( - "compile -b arduino:samd:mkrvidor4000 {}/libraries/USBBlaster/examples/USB_Blaster/".format(data_dir) - ) + result = run_command(f"compile -b arduino:samd:mkrvidor4000 {data_dir}/libraries/USBBlaster/examples/USB_Blaster/") + def test_compile_with_build_properties_flag(run_command, data_dir, copy_sketch): # Init the environment explicitly From e19b9ecb725b31114a87d1aa14e0ca48e2365f1b Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Fri, 15 Jan 2021 12:13:21 +0100 Subject: [PATCH 5/5] [skip changelog] Fix compile test --- test/test_compile.py | 66 ++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 45 deletions(-) diff --git a/test/test_compile.py b/test/test_compile.py index 53ffe89913e..c63556d33aa 100644 --- a/test/test_compile.py +++ b/test/test_compile.py @@ -184,60 +184,36 @@ def test_compile_blacklisted_sketchname(run_command, data_dir): def test_compile_without_precompiled_libraries(run_command, data_dir): # Init the environment explicitly url = "https://adafruit.github.io/arduino-board-index/package_adafruit_index.json" - result = run_command("core update-index --additional-urls={}".format(url)) - assert result.ok - result = run_command("core install arduino:mbed@1.3.1 --additional-urls={}".format(url)) - assert result.ok - result = run_command("core install arduino:samd@1.8.7 --additional-urls={}".format(url)) - assert result.ok - result = run_command("core install adafruit:samd@1.6.0 --additional-urls={}".format(url)) - assert result.ok + assert run_command(f"core update-index --additional-urls={url}") + assert run_command(f"core install arduino:mbed@1.3.1 --additional-urls={url}") # Precompiled version of Arduino_TensorflowLite - result = run_command("lib install Arduino_TensorflowLite@2.1.1-ALPHA-precompiled") - assert result.ok - result = run_command( - "compile -b arduino:mbed:nano33ble {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format(data_dir) - ) - assert result.ok + assert run_command("lib install Arduino_LSM9DS1") + assert run_command("lib install Arduino_TensorflowLite@2.1.1-ALPHA-precompiled") + + sketch_path = Path(data_dir, "libraries", "Arduino_TensorFlowLite", "examples", "hello_world") + assert run_command(f"compile -b arduino:mbed:nano33ble {sketch_path}") + + assert run_command(f"core install arduino:samd@1.8.7 --additional-urls={url}") + assert run_command(f"core install adafruit:samd@1.6.4 --additional-urls={url}") # should work on adafruit too after https://github.com/arduino/arduino-cli/pull/1134 - result = run_command( - "compile -b adafruit:samd:adafruit_feather_m4 {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format( - data_dir - ) - ) - assert result.ok + assert run_command(f"compile -b adafruit:samd:adafruit_feather_m4 {sketch_path}") # Non-precompiled version of Arduino_TensorflowLite - result = run_command("lib install Arduino_TensorflowLite@2.1.0-ALPHA") - assert result.ok - result = run_command( - "compile -b arduino:mbed:nano33ble {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format(data_dir) - ) - assert result.ok - result = run_command( - "compile -b adafruit:samd:adafruit_feather_m4 {}/libraries/Arduino_TensorFlowLite/examples/magic_wand/".format( - data_dir - ) - ) - assert result.ok + assert run_command("lib install Arduino_TensorflowLite@2.1.0-ALPHA") + assert run_command(f"compile -b arduino:mbed:nano33ble {sketch_path}") + assert run_command(f"compile -b adafruit:samd:adafruit_feather_m4 {sketch_path}") # Bosch sensor library - result = run_command('lib install "BSEC Software Library@1.5.1474"') - assert result.ok - result = run_command( - "compile -b arduino:samd:mkr1000 {}/libraries/BSEC_Software_Library/examples/basic/".format(data_dir) - ) - assert result.ok - result = run_command( - "compile -b arduino:mbed:nano33ble {}/libraries/BSEC_Software_Library/examples/basic/".format(data_dir) - ) - assert result.ok + assert run_command('lib install "BSEC Software Library@1.5.1474"') + sketch_path = Path(data_dir, "libraries", "BSEC_Software_Library", "examples", "basic") + assert run_command(f"compile -b arduino:samd:mkr1000 {sketch_path}") + assert run_command(f"compile -b arduino:mbed:nano33ble {sketch_path}") # USBBlaster library - result = run_command('lib install "USBBlaster@1.0.0"') - assert result.ok - result = run_command(f"compile -b arduino:samd:mkrvidor4000 {data_dir}/libraries/USBBlaster/examples/USB_Blaster/") + assert run_command('lib install "USBBlaster@1.0.0"') + sketch_path = Path(data_dir, "libraries", "USBBlaster", "examples", "USB_Blaster") + assert run_command(f"compile -b arduino:samd:mkrvidor4000 {sketch_path}") def test_compile_with_build_properties_flag(run_command, data_dir, copy_sketch):