Aircoookie / WLED

Control WS2812B and many more types of digital RGB LEDs with an ESP8266 or ESP32 over WiFi!
https://kno.wled.ge
MIT License
14.87k stars 3.21k forks source link

ArduinoFFT 2.0.0 release breaks audioreactive (even though build system should prevent it) #3803

Closed Xevel closed 7 months ago

Xevel commented 7 months ago

What happened?

3 days ago, kosme/ArdunioFFT released version 2.0.0. This is a breaking change in the API, but that is not the topic of this bug report.

The problem is that the line declaring the dependency in platformio.ini now causes (on a fresh install) the following error:

AR_lib_deps = https://github.com/kosme/arduinoFFT#develop @ ^1.9.2

PackageException: Package version 2.0.0+sha.909240f doesn't satisfy requirements ^1.9.2 based on PackageMetadata <type=library name=arduinoFFT version=2.0.0+sha.909240f spec={'owner': None, 'id': None, 'name': 'arduinoFFT', 'requirements': '^1.9.2', 'uri': 'git+https://github.com/kosme/arduinoFFT#develop'}

Looking at releases on kosme/ArdunioFFT, I do not understand why it used to work: there are no releases or tags between 1.6.2 and 2.0.0, be it on master or develop branches, so how did platformIO not complain when we previously asked for 1.9.2 or newer ? It did indeed find "arduinoFFT @ 1.9.2+sha.419d7b0" according to my other, older copy of wled repo where the .pio folder has not been fully cleaned...

How to get the 1.9.2 version that does not exist according to kosme/arduinoFFT back until(if) audioreactive is ported to 2.0.0?

What I have tried to fix: I tried removing the ^, thus theoretically forcing the specific version instead of "this version or newer that does not break API" but platformio still downloaded 2.0.0 then complained.

Misc questions And for my own curiosity: why on a new install it now cannot find it ? why does it download the 2.0.0 even if according to the platformio version requirement documentation it should not ?

To Reproduce Bug

Either start from a fresh clone of wled repo, or on an existing local copy, do a Full Clean. Build for target esp32dev_audioreactive

Expected Behavior

Release of newer (API breaking) ArduinoFFT versions should not break existing build system.

Install Method

Self-Compiled

What version of WLED?

v0.14.2-b1 d9b0df94e2a344b05bac88270a162b8e25f86ec5

Which microcontroller/board are you seeing the problem on?

ESP32

Relevant log/trace output

PackageException: Package version 2.0.0+sha.909240f doesn't satisfy requirements ^1.9.2 based on PackageMetadata <type=library name=arduinoFFT version=2.0.0+sha.909240f spec={'owner': None, 
id': None, 'name': 'arduinoFFT', 'requirements': '^1.9.2', 'uri': 'git+https://github.com/kosme/arduinoFFT#develop'}

Anything else?

No response

Code of Conduct

Xevel commented 7 months ago

Ok I found the fix:

AR_lib_deps = https://github.com/kosme/arduinoFFT#419d7b0

This will download and use the elusive 1.9.2 version (naming it by its commit instead of tag or release version...), same as before, and allow compilation to proceed normally.

My feeling is that this is a platformio bug (under no circumstance ^1.9.2 should ever result in 2.0.0 being installed), and I will try to file a bug report.

blazoncek commented 7 months ago

0.15 has that fixed. ATM We'll not be fixing for prior release.

FYI ^ means any greater version.

Xevel commented 7 months ago

Makes sense, thanks.

From the platformio version requirement documentation linked above:

^1.2.3 - any compatible version (new functionality in a backwards compatible manner and patches are allowed, 1.x.x).

You're confusing ^ with > :

>1.2.3 - any version greater than 1.2.3. >=, <, and <= are also possible