Skip to content

Library fails to compile for boards of "Arduino AVR Boards" and "Arduino megaAVR Boards" platforms #39

@per1234

Description

@per1234

Describe the problem

The library's documentation and metadata make the following claims of compatibility:

This library is compatible with all Arduino boards that feature an I2C interface (`Wire`).

architectures=*

Since the "Arduino AVR Boards" and "Arduino megaAVR Boards" platforms do provide the sole stated requirement of a Wire library implementation, it is expected that the library is compatible with the boards of these platforms.

🐛 The library fails to compile for those boards.

To reproduce

  1. Create the following sketch:
    #include <Modulino.h>
    void setup() {}
    void loop() {}
  2. Select Tools > Boards > Arduino AVR Boards > Arduino Uno from the Arduino IDE menus.
  3. Select Sketch > Verify/Compile from the Arduino IDE menus.

🐛 The compilation fails:

In file included from c:\Users\per\Documents\Arduino\libraries\Modulino\src/Modulino.h:12:0,
                 from C:\Users\per\Documents\Arduino\sketch_jul20a\sketch_jul20a.ino:1:
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h: In member function 'bool Module::read(uint8_t*, int)':
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h:68:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^~~~~~~~~~~
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h:65:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
     uint8_t requestFrom(uint8_t, uint8_t);
             ^~~~~~~~~~~
In file included from c:\Users\per\Documents\Arduino\libraries\Modulino\src\Modulino.h:12:0,
                 from c:\Users\per\Documents\Arduino\libraries\Modulino\src\Modulino.cpp:4:
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h: In member function 'bool Module::read(uint8_t*, int)':
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h:68:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^~~~~~~~~~~
C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src/Wire.h:65:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
     uint8_t requestFrom(uint8_t, uint8_t);
             ^~~~~~~~~~~
c:\Users\per\Documents\Arduino\libraries\Modulino\src\Modulino.cpp: At global scope:
c:\Users\per\Documents\Arduino\libraries\Modulino\src\Modulino.cpp:8:60: error: 'init_priority' attribute is not supported on this platform
 ModulinoClass Modulino __attribute__ ((init_priority (101)));
                                                            ^
exit status 1

Compilation error: exit status 1

Expected behavior

Library compiles for all official boards for which the documentation and metadata claims compatibility.

Library version

0.5.1

Additional context

The "Compile Examples" workflow is intended to catch fundamental problems like this, but it did not because the workflow is only configured to compile for a single board 🤦.


Originally reported at https://forum.arduino.cc/t/compiler-error-for-modulino-distance/1399303

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions