Do not install dependencies that are built-in libraries

This commit is contained in:
Ivan Kravets
2022-03-23 18:01:23 +02:00
parent 95604ff66a
commit 53753c0127
2 changed files with 15 additions and 2 deletions

View File

@ -14,6 +14,7 @@
import os
from platformio import util
from platformio.compat import ci_strings_are_equal
from platformio.package.manager.platform import PlatformPackageManager
from platformio.package.meta import PackageSpec
@ -22,6 +23,7 @@ from platformio.project.config import ProjectConfig
from platformio.project.exception import InvalidProjectConfError
@util.memoized(expire="60s")
def get_builtin_libs(storage_names=None):
# pylint: disable=import-outside-toplevel
from platformio.package.manager.library import LibraryPackageManager
@ -45,8 +47,8 @@ def get_builtin_libs(storage_names=None):
return items
def is_builtin_lib(name, storages=None):
for storage in storages or get_builtin_libs():
def is_builtin_lib(name):
for storage in get_builtin_libs():
for lib in storage["items"]:
if lib.get("name") == name:
return True

View File

@ -15,6 +15,7 @@
import json
import os
from platformio.commands.lib.helpers import is_builtin_lib
from platformio.package.exception import MissingPackageManifestError
from platformio.package.manager.base import BasePackageManager
from platformio.package.meta import PackageSpec, PackageType
@ -77,3 +78,13 @@ class LibraryPackageManager(BasePackageManager): # pylint: disable=too-many-anc
if fname.endswith((".c", ".cpp", ".h", ".hpp", ".S")):
return root
return path
def install_dependency(self, dependency):
spec = self.dependency_to_spec(dependency)
# skip built-in dependencies
not_builtin_conds = [spec.external, spec.owner]
if not any(not_builtin_conds):
not_builtin_conds.append(not is_builtin_lib(spec.name))
if any(not_builtin_conds):
return super(LibraryPackageManager, self).install_dependency(dependency)
return None