MrY
June 27, 2023, 5:51pm
1
When I compile a program with Servo.h included, I get the following warning:
WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
Running the "Sweep" servo example, the servo seems to run correctly.
Thanks for bringing this to our attention @MrY ! I submitted a formal report to the developers on your behalf:
opened 09:06PM - 27 Jun 23 UTC
type: imperfection
topic: infrastructure
The `architectures` field of [the `library.properties` metadata file](https://arโฆ duino.github.io/arduino-cli/dev/library-specification/#library-metadata) is a list of identifiers of platform architectures the library is compatible with.
A single repository is used to host the codebase of the platform used by the Renesas microcontroller-based UNO R4 and Portenta C33 boards. During the initial development of the platform, it was distributed as a single `arduino:renesas` platform, meaning the architecture ID was `renesas`. When support for the boards of that architecture was added to the library, this architecture ID was added to the library metadata.
Since that time, the distribution approach has changed to providing a separate platform for each of the board series, each with its own architecture ID:
| Platform | Architecture ID |
|-|-|
|**Arduino UNO R4 Boards**| `renesas_uno`|
|**Arduino Renesas Portenta Boards**| `renesas_portenta`|
๐ The library metadata was not updated to use the new architecture IDs. This causes a warning to be shown in the verbose compilation output when the library is compiled for one of the Renesas microcontroller-based boards:
```text
WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
```
๐ This architecture ID mismatch can also impact dependency resolution because the match between the `architectures` field and the architecture ID of the board being compiled for [is used as a factor by the sketch build system](https://arduino.github.io/arduino-cli/dev/sketch-build-process/#architecture-matching).
### To reproduce
1. Select one of Arduino's Renesas microcontroller-based boards that are compatible with the Servo library from the **Tools > Board** menu in Arduino IDE.
1. Select **File > Preferences** from the Arduino IDE menus (**Arduino IDE > Settings** for macOS users).
1. Check the box next to "**Show verbose output during: โ compilation**" in the "**Preferences**" dialog.
1. Click the **<kbd>OK</kbd>** button.
1. Compile the following sketch:
```cpp
#include <Servo.h>
void setup() {}
void loop() {}
```
1. Wait for the compilation to finish.
1. Examine the contents of the "Output" panel at the bottom of the Arduino IDE window.
๐ A spurious warning is shown, something like:
```text
WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
```
### Expected behavior
Library metadata contains the architecture IDs of all compatible platforms.
### Library version
1.2.0
### Additional context
Originally reported by @MrYsLab at https://forum.arduino.cc/t/is-this-compilation-warning-valid/1142307
v205
June 28, 2023, 8:26pm
6
MrY:
renesas architecture(s)
I though the r4 uses renesas.
v205
June 28, 2023, 8:27pm
7
The Arduino UNO R4 WiFi combines the processing power and exciting new peripherals of the RA4M1 microcontroller from Renesas with the wireless connectivity power of the ESP32-S3 from Espressif. On top of this, the UNO R4 WiFi offers an on-board 12x8 LED matrix, Qwiic connector, VRTC, and OFF pin, covering all potential needs makers will have for their next project.
That was from the Arduino store.
@v205 there is a detailed explanation of the problem in the pull request I linked above:
opened 09:06PM - 27 Jun 23 UTC
closed 03:05PM - 28 Jun 23 UTC
type: imperfection
topic: infrastructure
conclusion: resolved
The `architectures` field of [the `library.properties` metadata file](https://arโฆ duino.github.io/arduino-cli/dev/library-specification/#library-metadata) is a list of identifiers of platform architectures the library is compatible with.
A single repository is used to host the codebase of the platform used by the Renesas microcontroller-based UNO R4 and Portenta C33 boards. During the initial development of the platform, it was distributed as a single `arduino:renesas` platform, meaning the architecture ID was `renesas`. When support for the boards of that architecture was added to the library, this architecture ID was added to the library metadata.
Since that time, the distribution approach has changed to providing a separate platform for each of the board series, each with its own architecture ID:
| Platform | Architecture ID |
|-|-|
|**Arduino UNO R4 Boards**| `renesas_uno`|
|**Arduino Renesas Portenta Boards**| `renesas_portenta`|
๐ The library metadata was not updated to use the new architecture IDs. This causes a warning to be shown in the verbose compilation output when the library is compiled for one of the Renesas microcontroller-based boards:
```text
WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
```
๐ This architecture ID mismatch can also impact dependency resolution because the match between the `architectures` field and the architecture ID of the board being compiled for [is used as a factor by the sketch build system](https://arduino.github.io/arduino-cli/dev/sketch-build-process/#architecture-matching).
### To reproduce
1. Select one of Arduino's Renesas microcontroller-based boards that are compatible with the Servo library from the **Tools > Board** menu in Arduino IDE.
1. Select **File > Preferences** from the Arduino IDE menus (**Arduino IDE > Settings** for macOS users).
1. Check the box next to "**Show verbose output during: โ compilation**" in the "**Preferences**" dialog.
1. Click the **<kbd>OK</kbd>** button.
1. Compile the following sketch:
```cpp
#include <Servo.h>
void setup() {}
void loop() {}
```
1. Wait for the compilation to finish.
1. Examine the contents of the "Output" panel at the bottom of the Arduino IDE window.
๐ A spurious warning is shown, something like:
```text
WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s).
```
### Expected behavior
Library metadata contains the architecture IDs of all compatible platforms.
### Library version
1.2.0
### Additional context
Originally reported by @MrYsLab at https://forum.arduino.cc/t/is-this-compilation-warning-valid/1142307
Please give that a read for an answer to your question. After that, if anything is still unclear I'll be happy to provide more information.
1 Like