From 4ae302762a18419253bbbd66141b450d7ddd8669 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 13 Jun 2019 00:42:10 +0300 Subject: [PATCH] Revert back "Look firstly in built-in library storages" --- HISTORY.rst | 1 - platformio/__main__.py | 17 ++++---------- platformio/builder/main.py | 5 ---- platformio/builder/tools/piolib.py | 34 ++++++++-------------------- platformio/commands/run/helpers.py | 21 ++++++++++++++++- platformio/commands/run/processor.py | 6 ++++- platformio/managers/package.py | 1 - platformio/managers/platform.py | 3 --- 8 files changed, 39 insertions(+), 49 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index e5f4e304..34c2cd80 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -27,7 +27,6 @@ PlatformIO 4.0 - Save libraries passed to `platformio lib install `__ command into the project dependency list (`lib_deps `__) with a new ``--save`` flag (`issue #1028 `_) - Install all project dependencies declared via `lib_deps `__ option using a simple `platformio lib install `__ command (`issue #2147 `_) - Use isolated library dependency storage per project build environment (`issue #1696 `_) - - Look firstly in built-in library storages for a missing dependency instead of PlatformIO Registry (`issue #1654 `_) - Override default source and include directories for a library via `library.json `__ manifest using ``includeDir`` and ``srcDir`` fields - Fixed an issue when library keeps reinstalling for non-latin path (`issue #1252 `_) diff --git a/platformio/__main__.py b/platformio/__main__.py index 8b1ab093..f8358867 100644 --- a/platformio/__main__.py +++ b/platformio/__main__.py @@ -18,7 +18,7 @@ from traceback import format_exc import click -from platformio import __version__, exception, maintenance, util +from platformio import __version__, exception, maintenance from platformio.commands import PlatformioCLI from platformio.compat import CYGWIN @@ -42,7 +42,6 @@ def process_result(ctx, result, force, caller): # pylint: disable=W0613 maintenance.on_platformio_end(ctx, result) -@util.memoized() def configure(): if CYGWIN: raise exception.CygwinEnvDetected() @@ -77,17 +76,10 @@ def configure(): click.secho = lambda *args, **kwargs: _safe_echo(1, *args, **kwargs) -def main(argv=None): - exit_code = 0 - prev_sys_argv = sys.argv[:] - if argv: - assert isinstance(argv, list) - sys.argv = argv +def main(): try: configure() cli(None, None, None) - except SystemExit: - pass except Exception as e: # pylint: disable=broad-except if not isinstance(e, exception.ReturnErrorCode): maintenance.on_platformio_exception(e) @@ -113,9 +105,8 @@ An unexpected error occurred. Further steps: ============================================================ """ click.secho(error_str, fg="red", err=True) - exit_code = int(str(e)) if str(e).isdigit() else 1 - sys.argv = prev_sys_argv - return exit_code + return int(str(e)) if str(e).isdigit() else 1 + return 0 def debug_gdb_main(): diff --git a/platformio/builder/main.py b/platformio/builder/main.py index e1ac0bd0..70f71ad6 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -16,7 +16,6 @@ from os import environ from os.path import join from time import time -import click from SCons.Script import ARGUMENTS # pylint: disable=import-error from SCons.Script import COMMAND_LINE_TARGETS # pylint: disable=import-error from SCons.Script import DEFAULT_TARGETS # pylint: disable=import-error @@ -96,10 +95,6 @@ env.Replace( for key in list(clivars.keys()) if key in env }) -if int(ARGUMENTS.get("ISATTY", 0)): - # pylint: disable=protected-access - click._compat.isatty = lambda stream: True - if env.GetOption('clean'): env.PioClean(env.subst("$BUILD_DIR")) env.Exit(0) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index 0abc856a..b9855411 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -25,7 +25,6 @@ import sys from os.path import (basename, commonprefix, dirname, expanduser, isdir, isfile, join, realpath, sep) -import click import SCons.Scanner # pylint: disable=import-error from SCons.Script import ARGUMENTS # pylint: disable=import-error from SCons.Script import COMMAND_LINE_TARGETS # pylint: disable=import-error @@ -863,15 +862,15 @@ class ProjectAsLibBuilder(LibBuilderBase): pass def process_dependencies(self): # pylint: disable=too-many-branches - lib_deps = self.env.GetProjectOption("lib_deps") - if not lib_deps: + uris = self.env.GetProjectOption("lib_deps", []) + if not uris: return storage_dirs = [] for lb in self.env.GetLibBuilders(): if dirname(lb.path) not in storage_dirs: storage_dirs.append(dirname(lb.path)) - for uri in lib_deps: + for uri in uris: found = False for storage_dir in storage_dirs: if found: @@ -889,26 +888,12 @@ class ProjectAsLibBuilder(LibBuilderBase): break if not found: - # look for built-in libraries by a name - # which don't have package manifest for lb in self.env.GetLibBuilders(): - if lb.name == uri: - if lb not in self.depbuilders: - self.depend_recursive(lb) - found = True - break - - if not found: - lm = LibraryManager( - self.env.subst(join("$PROJECTLIBDEPS_DIR", "$PIOENV"))) - try: - lm.install(uri) - # delete cached lib builders - if "__PIO_LIB_BUILDERS" in DefaultEnvironment(): - del DefaultEnvironment()['__PIO_LIB_BUILDERS'] - except (exception.LibNotFound, - exception.InternetIsOffline) as e: - click.secho("Warning! %s" % e, fg="yellow") + if lb.name != uri: + continue + if lb not in self.depbuilders: + self.depend_recursive(lb) + break def build(self): self._is_built = True # do not build Project now @@ -932,7 +917,8 @@ def GetLibBuilders(env): # pylint: disable=too-many-branches key=lambda lb: 0 if lb.dependent else 1) items = [] - verbose = int(ARGUMENTS.get("PIOVERBOSE", 0)) + verbose = int(ARGUMENTS.get("PIOVERBOSE", + 0)) and not env.GetOption('clean') def _check_lib_builder(lb): compat_mode = lb.lib_compat_mode diff --git a/platformio/commands/run/helpers.py b/platformio/commands/run/helpers.py index 0c51012b..ddb1fb9d 100644 --- a/platformio/commands/run/helpers.py +++ b/platformio/commands/run/helpers.py @@ -18,7 +18,10 @@ from time import time import click -from platformio import util +from platformio import exception, util +from platformio.commands.lib import (CTX_META_STORAGE_DIRS_KEY, + CTX_META_STORAGE_LIBDEPS_KEY) +from platformio.commands.lib import lib_install as cmd_lib_install from platformio.project.helpers import (calculate_project_hash, get_project_dir, get_project_libdeps_dir) @@ -43,6 +46,22 @@ def handle_legacy_libdeps(project_dir, config): fg="yellow") +def autoinstall_libdeps(ctx, envname, libraries, verbose=False): + if not libraries: + return + libdeps_dir = join(get_project_libdeps_dir(), envname) + ctx.meta.update({ + CTX_META_STORAGE_DIRS_KEY: [libdeps_dir], + CTX_META_STORAGE_LIBDEPS_KEY: { + libdeps_dir: libraries + } + }) + try: + ctx.invoke(cmd_lib_install, silent=not verbose) + except exception.InternetIsOffline as e: + click.secho(str(e), fg="yellow") + + def clean_build_dir(build_dir): # remove legacy ".pioenvs" folder legacy_build_dir = join(get_project_dir(), ".pioenvs") diff --git a/platformio/commands/run/processor.py b/platformio/commands/run/processor.py index 4f495298..2fbba4be 100644 --- a/platformio/commands/run/processor.py +++ b/platformio/commands/run/processor.py @@ -19,7 +19,7 @@ import click from platformio import exception, telemetry from platformio.commands.platform import \ platform_install as cmd_platform_install -from platformio.commands.run.helpers import print_header +from platformio.commands.run.helpers import autoinstall_libdeps, print_header from platformio.commands.test.processor import (CTX_META_TEST_IS_RUNNING, CTX_META_TEST_RUNNING_NAME) from platformio.managers.platform import PlatformFactory @@ -103,6 +103,10 @@ class EnvironmentProcessor(object): # skip monitor target, we call it above if "monitor" in build_targets: build_targets.remove("monitor") + if "nobuild" not in build_targets and "lib_deps" in self.options: + autoinstall_libdeps( + self.cmd_ctx, self.name, + self.config.get("env:" + self.name, "lib_deps"), self.verbose) try: p = PlatformFactory.newPlatform(self.options['platform']) diff --git a/platformio/managers/package.py b/platformio/managers/package.py index 82043114..4bbdca9c 100644 --- a/platformio/managers/package.py +++ b/platformio/managers/package.py @@ -171,7 +171,6 @@ class PkgInstallerMixin(object): if fname and isfile(cache_path): dst_path = join(dest_dir, fname) shutil.copy(cache_path, dst_path) - click.echo("Using cache: %s" % cache_path) return dst_path with_progress = not app.is_disabled_progressbar() diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index 8cb07223..75b24417 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -407,9 +407,6 @@ class PlatformRunMixin(object): join(util.get_source_dir(), "builder", "main.py") ] cmd.append("PIOVERBOSE=%d" % (1 if self.verbose else 0)) - # pylint: disable=protected-access - cmd.append("ISATTY=%d" % - (1 if click._compat.isatty(sys.stdout) else 0)) cmd += targets # encode and append variables