IDE v1.6.5 incompatible with boards v1.6.9, -> core.a no such file or directory

After updating the standard Arduino AVR Boards (via board manager), v1.6.5 can no longer compile for the standard boards.

At issue is the change from {build.path}/{archive_file} to {archive_file_path} in platform.txt - since {archive_file_path} doesn't exist in 1.6.5, the compiler dies with

Arduino: 1.6.5 (Windows 8.1), Board: "Arduino/Genuino Uno"

Build options changed, rebuilding all

(snip)

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-g++ -c -g -Os -Wall -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\a2\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.9\cores\arduino -IC:\Users\a2\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.9\variants\standard C:\Users\a2\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.9\cores\arduino\WString.cpp -o C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\WString.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring_pulse.S.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\hooks.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\WInterrupts.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring_analog.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring_digital.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring_pulse.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\wiring_shift.c.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\abi.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\CDC.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\HardwareSerial.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\HardwareSerial0.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\HardwareSerial1.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\HardwareSerial2.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\HardwareSerial3.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\IPAddress.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\main.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\new.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\PluggableUSB.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\Print.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\Stream.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\Tone.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\USBCore.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\WMath.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-ar rcs {archive_file_path} C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\WString.cpp.o

C:\arduino-1.6.5-r2\hardware\tools\avr/bin/avr-gcc -Wall -Os -Wl,--gc-sections -mmcu=atmega328p -o C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp/BareMinimum.cpp.elf C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp\BareMinimum.cpp.o C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp/core.a -LC:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp -lm

avr-gcc: error: C:\Users\a2\AppData\Local\Temp\build859542859958490258.tmp/core.a: No such file or directory
Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

I've seen several people on the forums complaining about this issue here.

The solution is:

Of course - I'm mostly trying to get the word out by posting this, since I'm sure others are tripping over this!

Great idea to post a warning. I tried to help one user with this problem yesterday and the only solution we came up with was to upgrade to 1.6.6. It wasn't until I ran into that stray {archive_file_path} in your platform.txt today and got the same error message that I realized what the problem was!

Arduino SAM Boards 1.6.6 is also incompatible with all Arduino IDE versions previous to 1.6.6 for the same reason.

I got the same error and I had the same suspect.
Thanks for sharing this!

boards 1.6.10 have been released a while ago, and the problem/bug from boards 1.6.9 remains...
anyone knows if it's reported as a bug yet ?

I reported it 3.5 months ago Arduino AVR Boards 1.6.9 and Arduino SAM Boards 1.6.6 incompatible with IDE<1.6.6 · Issue #4114 · arduino/Arduino · GitHub and it was completely ignored. As well as being incompatible with Arduino IDE 1.6.5 and previous, Arduino AVR Boards 1.6.10 also breaks backwards compatibility with Arduino IDE 1.6.6, which the developers are aware of and apparently just don't care. The worst thing is that I, a complete amateur, was able to easily fix the backwards incompatibility by adding only 2 lines to platform.txt. The IDE is getting so buggy it's sad. The whole point of Arduino is beginner friendliness but it's getting so that you have to be an expert in the inner workings of the IDE just to make it work. Boards Manager is an excellent feature in theory but apparently the Arduino developers are incapable of considering the impacts of their changes on anyone not using the latest IDE version. The extreme buggyness of the last 3 IDE versions have guaranteed that there are a lot of users who won't want to update.

So the message they are sending is
"avoid upgrading if offered upgrades"
and
"do not go for the new boards, to avoid mess with your older devices/applications that need older IDE"
?

I simply believe that the new cores don't work with the IDE 1.6.5. If you want to use the new cores you have to use the new IDE.

zoomx:
I simply believe that the new cores don't work with the IDE 1.6.5. If you want to use the new cores you have to use the new IDE.

The problem is that Boards Manager doesn't tell you that. There's a big "Update" button and it's reasonable to expect that clicking that button would be a good thing, but in the world of Arduino it means you just broke your IDE. It's even worse with Arduino IDE 1.6.6 where you get constant pop up notifications telling you to update to the incompatible version. The issue described here could have been easily avoided by the developers, see AVR recipe.ar.pattern backwards compatibility by per1234 · Pull Request #4737 · arduino/Arduino · GitHub. There will probably be other changes later that will not be so easy to make backwards compatible and that's why the developers should have added dependency checking for the IDE version to Boards Manager before ever releasing that feature.

zoomx:
I simply believe that the new cores don't work with the IDE 1.6.5. If you want to use the new cores you have to use the new IDE.

Yes, the truth is that I rely on both 1.6.5.r4 and 1.6.7 - the first one for older projects with alternative Serial libraries, that won't compile due to changes after 1.6.5r4 - and the later for newer stuff.

So the conclusion is that I rely too much on Arduino.

pert:
The problem is that Boards Manager doesn't tell you that.

You're absolutely right!