Skip to content

lib_deps registry entries are never fetched: fbuild sync writes status "unresolved" and the build fails on a missing header #1276

Description

@stevenmunn312-tech

On fbuild 2.5.15, a registry lib_deps entry resolves to "status": "unresolved" in platformio.lock and the build then fails because the header was never fetched. Not sure whether registry fetching is simply not implemented yet (the status field reads like it anticipates this) or whether this is a resolver bug — happy to be pointed at the right issue if it's tracked elsewhere.

Repro

platformio.ini:

[env:arduino_avr_uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps = fastled/FastLED@^3.10.3

src/main.cpp:

#include <Arduino.h>
#include <FastLED.h>
CRGB leds[8];
void setup(){ FastLED.addLeds<WS2812B,6,GRB>(leds,8); }
void loop(){ leds[0]=CRGB::Red; FastLED.show(); }

Result

fbuild <dir> sync succeeds and writes:

{
  "name": "FastLED",
  "source_type": "registry",
  "raw": "fastled/FastLED@^3.10.3",
  "owner": "fastled",
  "version_spec": "^3.10.3",
  "status": "unresolved"
}

fbuild <dir> build -e arduino_avr_uno then fails:

src/main.cpp:2:10: fatal error: FastLED.h: No such file or directory

Nothing is downloaded into the project and the build has no way to find the library.

Workaround in use

Design Studio for FastLED git clones FastLED (and ESP32-audioI2S for its SD-card audio player) directly into <project>/lib/ on first build rather than declaring them in lib_deps. That works reliably, but it means our helper carries its own vendoring, pinning and update path for libraries the build tool would otherwise manage.

Why it matters here

This is the workaround with the largest surface for us — it's the difference between declaring a dependency and shipping a package manager. If registry resolution is planned, knowing roughly where it sits would help us decide whether to keep investing in the vendoring path.

Also noting for completeness: source_type: "registry" is the only case tested here. Local paths and vendored lib/ both work fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions