Add libraries super compatibility and explicit incompatibility in the spec #2149
Labels
phase: design
Work is in the design phase
status: waiting for information
More information must be provided before work can proceed
topic: code
Related to content of the project itself
topic: documentation
Related to documentation for the project
type: enhancement
Proposed improvement
Describe the request
Add support for a field named
supported
in thelibrary.properties
library metadata file. This field is a comma-separated list of patterns to match against an FQBN.This will allow library developers to define the supported boards for the library down to board-level granularity.
The result would be something like this in the
library.properties
file:This information could be used for applications such as:
Describe the current behavior
Library developers can only indicate compatibility at architecture-level granularity. A library may have dependencies on attributes that only present on a subset of boards of a given architecture.
This means it is not possible for tools to accurately determine whether a specific board is supported by a library.
For example, the "Keyboard" library specifies compatibility with the
avr
architecture:https://github.com/arduino-libraries/Keyboard/blob/1.0.4/library.properties#L9
However, not all AVR microcontrollers have the required native USB capability. This results in inaccurate information about the library's support for those boards.
The library is listed in
lib list
command output when the FQBN of an unsupported board (e.g., Uno) is specified via the--fqbn
flag:Unsupported boards are included in the automatically generated "Compatibility" list of the library's reference page:
https://www.arduino.cc/reference/en/libraries/keyboard/
Arduino CLI version
0.32.2
Operating system
N/A
Operating system version
N/A
Additional context
The newly added field should be ignored by versions of Arduino development tools that don't have support for the new field. If so, this change would not result in any backwards incompatibility of the libraries that use it.
Relevant code:
arduino-cli/arduino/libraries/libraries.go
Line 78 in 743c3e9
Related
Issue checklist
The text was updated successfully, but these errors were encountered: