Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deal with issues exposed/caused by Arduino AVR Boards 1.6.12 #10

Merged
merged 2 commits into from
Aug 15, 2016
Merged

Deal with issues exposed/caused by Arduino AVR Boards 1.6.12 #10

merged 2 commits into from
Aug 15, 2016

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Aug 9, 2016

Removing toolsDependencies entries from package_zevero_avr_boot_index.json is required due to a bug in the Arduino IDE which causes the tool versions specified by avr_boot to be used by other platforms such as Arduino AVR Boards after Boards Manager installation of avr_boot(see
https://github.com/arduino/Arduino/issues/5168). An example of a specific issue caused by this is that Arduino AVR Boards 1.6.12 requires LTO support, which avr-gcc does not have. This will cause Arduino AVR Boards to no longer compile when the previous version of package_zevero_avr_boot_index.json was used to install avr_boot.

Removing the toolsDependencies entries causes avr_boot to use whatever tool versions were previously installed.

The disadvantages of this solution are:

There is an additional issue caused by the upgrade to avrdude 6.3.0-arduino2 in Arduino AVR Boards 1.6.12. avrdude's handling of unused fuse bits has changed since the previous version Arduino used(6.0.1-arduino5) which causes the ATmega328P extended_fuses value to fail verification(see arduino/Arduino#5175) and the unlock_bits and lock_bits values to fail verification when used with Atmel AVRISP mkII and likely any other stk500v2 based programmer(see arduino/avrdude-build-script#2). Fixing these issues while maintaining backwards compatibility with previous Arduino AVR Boards versions would be possible by adding an avrdude tool to avr_boot but the Arduino developers have decided to revert to the previous avrdude version on the soon to be released Arduino AVR Boards 1.6.13 and only upgrade to a new avrdude version once it has been modified to work with the traditional Arduino fuse values(see arduino/Arduino#5021 and arduino/Arduino#5202). This makes me think that the extra complexity of adding an avrdude tool is not worth the benefit of providing compatibility with a single buggy Arduino AVR Boards version and so have added a warning message to the installation instructions about the incompatibility. I've identified what needs to be done to add an avrdude tool and I'm willing to consider that alternative if maximum compatibility or the newer avrdude version is considered important. There is another issue caused by the avrdude 6.3.0-arduino2 build(arduino/Arduino#5173) which may affect avr_boot if that version was added as a tool. So far I've been unable to reproduce this but if so it would negate any advantages gained by the addition of the new avrdude version as an avr_dude tool.

per1234 added 2 commits August 8, 2016 21:34
This change is required due to a bug in the Arduino IDE which causes the
tool versions specified by avr_boot to be used by other platforms such
as Arduino AVR Boards after Boards Manager installation of avr_boot(see
https://github.com/arduino/Arduino/issues/5168). A specific issue caused
by this is that Arduino AVR Boards 1.6.12  requires LTO support, which
avr-gcc does not have. This will cause Arduino AVR Boards to no longer
compile when the previous version of package_zevero_avr_boot_index.json
was used to install avr_boot.

Removing the toolsDependencies entries causes avr_boot to use whatever
tool versions were previously installed.

The disadvantages of this solution are:

- Breaks compatibility with the Eclipse Arduino plugin(see
Sloeber/arduino-eclipse-plugin#516), which
requires these entries.

- Loss of control over the specific toolchain used.
Arduino AVR Boards 1.6.12 upgraded avrdude to avrdude 6.3.0-arduino2.
avrdude's handling of unused fuse bits has changed since the previous
version Arduino used(6.0.1-arduino5) which causes the ATmega328P
extended_fuses value to fail verification(see
arduino/Arduino#5175) and the unlock_bits and
lock_bits values to fail verification when used with Atmel AVRISP mkII
and likely any other stk500v2 based programmer(see
arduino/avrdude-build-script#2). Fixing these
issues while maintaining backwards compatibility with previous Arduino
AVR Boards versions would be possible by adding an avrdude tool to
avr_boot but the Arduino developers have decided to revert to the
previous avrdude version on the soon to be released Arduino AVR Boards
1.6.13 and only upgrade to a new avrdude version once it has been
modified to work with the traditional Arduino fuse values(see
arduino/Arduino#5161 and
arduino/Arduino#5202). This makes me think that
the extra complexity of adding an avrdude tool is not worth the benefit
of providing compatibility with a single buggy Arduino AVR Boards
version.
@per1234
Copy link
Contributor Author

per1234 commented Aug 12, 2016

@zevero have you had a chance to look at this? When you get a chance please take a look and let me know if you have any questions or want me to make any changes. I've been working towards adding Boards Manager support for the 1.2.0 release, including a bunch of improvements to my build system and boards files, but the final implementation will depend on whether this proposal to solving the issue is accepted or if I need to pursue an alternative solution.

@zevero zevero merged commit 9970c22 into zevero:gh-pages Aug 15, 2016
@zevero
Copy link
Owner

zevero commented Aug 15, 2016

Thank you a lot! I think your decision is appropriate!

@per1234 per1234 deleted the remove-toolsdependencies branch August 17, 2016 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants