When the compiled size of a sketch exceeds the available flash or RAM on the board, the error message includes a link to
a troubleshooting guide:
Sketch uses 16110 bytes (112%) of program storage space. Maximum is 14336 bytes.
Global variables use 685 bytes (66%) of dynamic memory, leaving 339 bytes for local variables. Maximum is 1024 bytes.
Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it.
When an upload fails, the error message includes a link to a troubleshooting guide:
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.
http://www.arduino.cc/en/Guide/Troubleshooting was recently replaced with the Arduino Help Center. Even though that URL
redirects to the Help Center, it only goes to the home page, leaving the user to hunt for the relevant article.
A better user experience is provided by linking directly to the relevant content in the Help Center.
This can happen happen in some unlikely cases (such as when renaming a
platform in a way that breaks the "select a board when none is selected
logic").
Even though a board should always be selected, code should still handle
no selected board gracefully (rather than raising a NullPointerException
like this used to do).
See #10887 for the underlying issue that caused no board to be selected.
Previously, the built-in examples assembly step of the build system set the
`final_folder` parameter of the `unzip` target to the true final
installation location of the examples.
The behavior of the `unzip` target is to only unzip the archive if
`final_folder` doesn't exist. Because that folder will exist any time a
previous build has been done and `ant clean` was not run, the archive will
not be unzipped. This causes the build to fail after an update to the
built-in examples version when it attempts to copy the examples from the
version-dependent extraction staging folder to the final location.
The fix is to set the `final_folder` parameter to the version-dependent
staging folder location, which will cause the extraction to happen every
time the examples version is updated, but to be skipped when there was no
update.
A dedicated repository for the examples will make it easier for them to be built in to arbitrary development tools. It will make it easier to use them for compilation testing of boards platforms. It provides a dedicated location for issue reports and pull requests that are specific to the examples. It continues the work done by moving the AVR and SAM boards platforms and built-in libraries towards making the arduino/Arduino repository solely a place to host the GUI code of the Arduino IDE.
Some platforms may not define directly 'build.core' because it may be defined
through a custom menu.
For example, the arduboy platform has in the boards.txt:
[...]
menu.core=Core
[...]
# core #
arduboy-homemade.menu.core.arduboy-core=Arduboy optimized core
arduboy-homemade.menu.core.arduboy-core.build.core=arduboy
arduboy-homemade.menu.core.arduino-core=Standard Arduino core
arduboy-homemade.menu.core.arduino-core.build.core=arduino:arduino
[...]
the build.core is determined only after applying the submenu options.
Previously changing "Category" would filter libraries by the selected
category but without applying the "Type" previously selected.
For instance selecting Type="Installed" and Category="Communication"
will display *all* the libraries belonging to "communication" instead of
the installed only.
This commit fix this behavior.
The filters content is unlikely to change, so just prevent it from live
updating it because it has some side effects:
- it's slow
- it changes the selection back to the default and it's very tricky to
make it re-select the previous selection.
Fixes#10439
Previously rescanLibraries() was automatically called internally in
setLibrariesFolder(). This lead to double calls to rescanLibraries()
when setLibrariesFolder() was used in combination with an explicit
call to rescanLibraries().
This commit adds a new method setLibrariesFoldersAndRescan(..) and
removes the internal call to rescanLibraries() from setLibrariesFolder().
The existing setLibrariesFolder()+rescanLibraries() combos have been
replaced with setLibrariesFoldersAndRescan().
Fix#10228