From c475578db698fe2828b5a602af08d4e062145137 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 26 Mar 2024 13:44:26 +0200 Subject: [PATCH] Resolved an issue where the |LDF| couldn't locate a library dependency declared via version control system repository // Resolve #4885 --- HISTORY.rst | 5 +++++ platformio/builder/tools/piolib.py | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 6c83cbb591..4013392e16 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,6 +18,11 @@ Unlock the true potential of embedded software development with PlatformIO's collaborative ecosystem, embracing declarative principles, test-driven methodologies, and modern toolchains for unrivaled success. +6.1.15 (2024-??-??) +~~~~~~~~~~~~~~~~~~~ + +* Resolved an issue where the |LDF| couldn't locate a library dependency declared via version control system repository (`issue #4885 `_) + 6.1.14 (2024-03-21) ~~~~~~~~~~~~~~~~~~~ diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index d970344e68..ca9c9f1e04 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -39,7 +39,7 @@ ManifestParserError, ManifestParserFactory, ) -from platformio.package.meta import PackageCompatibility, PackageItem +from platformio.package.meta import PackageCompatibility, PackageItem, PackageSpec from platformio.project.options import ProjectOptions @@ -332,9 +332,17 @@ def is_dependency_compatible(self, dependency): qualifiers = {"name": pkg.metadata.name, "version": pkg.metadata.version} if pkg.metadata.spec and pkg.metadata.spec.owner: qualifiers["owner"] = pkg.metadata.spec.owner - return PackageCompatibility.from_dependency( - {k: v for k, v in dependency.items() if k in ("owner", "name", "version")} - ).is_compatible(PackageCompatibility(**qualifiers)) + dep_qualifiers = { + k: v for k, v in dependency.items() if k in ("owner", "name", "version") + } + if ( + "version" in dep_qualifiers + and not PackageSpec(dep_qualifiers["version"]).requirements + ): + del dep_qualifiers["version"] + return PackageCompatibility.from_dependency(dep_qualifiers).is_compatible( + PackageCompatibility(**qualifiers) + ) def get_search_files(self): return [