-
-
Notifications
You must be signed in to change notification settings - Fork 789
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Library dependency resolution relies on lib_deps=... order #3598
Comments
Seems to be related to the #2115 |
I pushed another build, see https://github.com/mcspr/pio-poc-libdeps-order/runs/1095869624 pio system info
rm -rf .pio/build
rm -rf .pio/libdeps
pio run -e $1
As a sidenote about the screenshot error, is there a conflict with |
Could you reproduce this issue with the latest development branch? |
|
Is this is a bug of ESP8266 integration? PlatformIO Core processes dependencies in order as you declare them in |
edit: My proposal was to remove the confusion in the builder and override the library.json dependency with a matching name with the one in lib_deps. If we have both libraries at the same time, we can't guarantee things will work. There are different types in the resulting .o files. In one header it is declared as It is also technically a versioning issue with the ESPAsyncTCP, it should've bumped itself to 1.3.0 to avoid this breaking change :/ |
Thanks for the report! Please re-test with |
PoC repo works now, thanks!
|
Configuration
Operating system:
Fedora Server 32
PlatformIO Version (
platformio --version
):PlatformIO, version 4.4.0a5
(a2efd7f)Description of problem
Library specified in lib_deps, but also specified in other dependent library's library.json requirements gets detected twice after scanning for dependencies and also gets linked twice.
Project in question uses ESPAsyncTCP and async-mqtt-client. Depending on which one is specified first in the lib_deps, different versions of ESPAsyncTCP are installed.
Compilation issue comes from ESPAsyncTCP having slightly different signatures of onError(), where int8_t type is replaced with err_t. Main application uses the old version, while async-mqtt-client uses the 2nd b/c of the initial dependency scan, so linking with both libraries isn't possible.
Steps to Reproduce
With project structure as described below
pio run
Actual Results
See https://github.com/mcspr/pio-poc-libdeps-order/runs/875651792?check_suite_focus=true#step:5:1 (5th step, "Run without installing libs manually")
When ESPAsyncTCP comes before async-mqtt-client, it is installed first and async-mqtt-client dependency gets satisfied.
When async-mqtt-client comes before, PIO registry version gets installed first and lib_deps version second.
Having two libraries at the same time causes build process to try to include both at the same time.
Expected Results
(?) Not really sure about this one. Based on previous version of PIO, it worked fine with the stable release
If problems with PlatformIO Build System:
The content of
platformio.ini
:Source file to reproduce issue:
Additional info
The text was updated successfully, but these errors were encountered: