diff --git a/legacy/builder/phases/linker.go b/legacy/builder/phases/linker.go index 9c8fc15d98f..f42f431bfe9 100644 --- a/legacy/builder/phases/linker.go +++ b/legacy/builder/phases/linker.go @@ -78,6 +78,10 @@ func link(ctx *types.Context, objectFiles paths.PathList, coreDotARelPath *paths properties := buildProperties.Clone() archives := paths.NewPathList() for _, object := range objectFiles { + if object.HasSuffix(".a") { + archives.Add(object) + continue + } archive := object.Parent().Join("objs.a") if !archives.Contains(archive) { archives.Add(archive) diff --git a/test/test_compile.py b/test/test_compile.py index 0da154ca267..6d81615854e 100644 --- a/test/test_compile.py +++ b/test/test_compile.py @@ -594,3 +594,25 @@ def test_compile_with_custom_libraries(run_command, copy_sketch): # This compile command has been taken from this issue: # https://github.com/arduino/arduino-cli/issues/973 assert run_command(f"compile --libraries {first_lib},{second_lib} -b {fqbn} {sketch_path}") + + +def test_compile_with_archives_and_long_paths(run_command): + # Creates config with additional URL to install necessary core + url = "http://arduino.esp8266.com/stable/package_esp8266com_index.json" + assert run_command(f"config init --dest-dir . --additional-urls {url}") + + # Init the environment explicitly + assert run_command("update") + + # Install core to compile + assert run_command("core install esp8266:esp8266") + + # Install test library + assert run_command("lib install ArduinoIoTCloud") + + result = run_command("lib examples ArduinoIoTCloud --format json") + assert result.ok + lib_output = json.loads(result.stdout) + sketch_path = Path(lib_output[0]["library"]["install_dir"], "examples", "ArduinoIoTCloud-Advanced") + + assert run_command(f"compile -b esp8266:esp8266:huzzah {sketch_path}")
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: