diff --git a/HISTORY.rst b/HISTORY.rst index 6c83cbb591..33301fca1e 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,6 +18,12 @@ 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-04-25) +~~~~~~~~~~~~~~~~~~~ + +* Resolved an issue where the |LDF| couldn't locate a library dependency declared via version control system repository (`issue #4885 `_) +* Resolved an issue related to the inaccurate detection of the Clang compiler (`pull #4897 `_) + 6.1.14 (2024-03-21) ~~~~~~~~~~~~~~~~~~~ diff --git a/docs b/docs index 670721e923..0125f8d5be 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 670721e9231cdedd1e28f9826759f7db70cab0e8 +Subproject commit 0125f8d5bec0e906ed04aba5dcd0d70ad794b30f diff --git a/examples b/examples index f06e9656a4..9b39344183 160000 --- a/examples +++ b/examples @@ -1 +1 @@ -Subproject commit f06e9656a490c17b9193ce78dca8df4c7a6cb82e +Subproject commit 9b3934418378480ee1f04cc99941e9d46b167bfa diff --git a/platformio/__init__.py b/platformio/__init__.py index 9bb65b5a4c..878e6329d7 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION = (6, 1, 14) +VERSION = (6, 1, 15) __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/assets/system/99-platformio-udev.rules b/platformio/assets/system/99-platformio-udev.rules index d17569e758..08817377b3 100644 --- a/platformio/assets/system/99-platformio-udev.rules +++ b/platformio/assets/system/99-platformio-udev.rules @@ -177,4 +177,4 @@ ATTRS{product}=="*CMSIS-DAP*", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1" # Espressif USB JTAG/serial debug unit -ATTRS{idVendor}=="303a", ATTR{idProduct}=="1001", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1" 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 [ diff --git a/platformio/builder/tools/piomisc.py b/platformio/builder/tools/piomisc.py index 47496fe546..9652c400d1 100644 --- a/platformio/builder/tools/piomisc.py +++ b/platformio/builder/tools/piomisc.py @@ -20,19 +20,23 @@ @util.memoized() -def GetCompilerType(env): - if env.subst("$CC").endswith("-gcc"): +def GetCompilerType(env): # pylint: disable=too-many-return-statements + CC = env.subst("$CC") + if CC.endswith("-gcc"): return "gcc" + if os.path.basename(CC) == "clang": + return "clang" try: + sysenv = os.environ.copy() sysenv["PATH"] = str(env["ENV"]["PATH"]) - result = exec_command([env.subst("$CC"), "-v"], env=sysenv) + result = exec_command([CC, "-v"], env=sysenv) except OSError: return None if result["returncode"] != 0: return None output = "".join([result["out"], result["err"]]).lower() - if "clang" in output and "LLVM" in output: + if "clang version" in output: return "clang" if "gcc" in output: return "gcc" diff --git a/scripts/docspregen.py b/scripts/docspregen.py index 1b595b3ff5..3693d9cb07 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -357,6 +357,8 @@ def generate_packages(platform, packages, is_embedded): - Description""" ) for name, options in dict(sorted(packages.items())).items(): + if name == "toolchain-gccarmnoneeab": # aceinna typo fix + name = name + "i" package = REGCLIENT.get_package( "tool", options.get("owner", "platformio"), name )