Skip to content

Commit 1ccc526

Browse files
committed
Revert "Revert back "Look firstly in built-in library storages""
This reverts commit 4ae3027.
1 parent 5338a9c commit 1ccc526

File tree

8 files changed

+49
-39
lines changed

8 files changed

+49
-39
lines changed

Diff for: HISTORY.rst

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ PlatformIO 4.0
2727
- Save libraries passed to `platformio lib install <http://docs.platformio.org/page/userguide/lib/cmd_install.html>`__ command into the project dependency list (`lib_deps <http://docs.platformio.org/page/projectconf/section_env_library.html#lib-deps>`__) with a new ``--save`` flag (`issue #1028 <https://github.com/platformio/platformio-core/issues/1028>`_)
2828
- Install all project dependencies declared via `lib_deps <http://docs.platformio.org/page/projectconf/section_env_library.html#lib-deps>`__ option using a simple `platformio lib install <http://docs.platformio.org/page/userguide/lib/cmd_install.html>`__ command (`issue #2147 <https://github.com/platformio/platformio-core/issues/2147>`_)
2929
- Use isolated library dependency storage per project build environment (`issue #1696 <https://github.com/platformio/platformio-core/issues/1696>`_)
30+
- Look firstly in built-in library storages for a missing dependency instead of PlatformIO Registry (`issue #1654 <https://github.com/platformio/platformio-core/issues/1654>`_)
3031
- Override default source and include directories for a library via `library.json <http://docs.platformio.org/page/librarymanager/config.html>`__ manifest using ``includeDir`` and ``srcDir`` fields
3132
- Fixed an issue when library keeps reinstalling for non-latin path (`issue #1252 <https://github.com/platformio/platformio-core/issues/1252>`_)
3233

Diff for: platformio/__main__.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import click
2020

21-
from platformio import __version__, exception, maintenance
21+
from platformio import __version__, exception, maintenance, util
2222
from platformio.commands import PlatformioCLI
2323
from platformio.compat import CYGWIN
2424

@@ -42,6 +42,7 @@ def process_result(ctx, result, force, caller): # pylint: disable=W0613
4242
maintenance.on_platformio_end(ctx, result)
4343

4444

45+
@util.memoized()
4546
def configure():
4647
if CYGWIN:
4748
raise exception.CygwinEnvDetected()
@@ -76,10 +77,17 @@ def _safe_echo(origin, *args, **kwargs):
7677
click.secho = lambda *args, **kwargs: _safe_echo(1, *args, **kwargs)
7778

7879

79-
def main():
80+
def main(argv=None):
81+
exit_code = 0
82+
prev_sys_argv = sys.argv[:]
83+
if argv:
84+
assert isinstance(argv, list)
85+
sys.argv = argv
8086
try:
8187
configure()
8288
cli(None, None, None)
89+
except SystemExit:
90+
pass
8391
except Exception as e: # pylint: disable=broad-except
8492
if not isinstance(e, exception.ReturnErrorCode):
8593
maintenance.on_platformio_exception(e)
@@ -105,8 +113,9 @@ def main():
105113
============================================================
106114
"""
107115
click.secho(error_str, fg="red", err=True)
108-
return int(str(e)) if str(e).isdigit() else 1
109-
return 0
116+
exit_code = int(str(e)) if str(e).isdigit() else 1
117+
sys.argv = prev_sys_argv
118+
return exit_code
110119

111120

112121
def debug_gdb_main():

Diff for: platformio/builder/main.py

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from os.path import join
1717
from time import time
1818

19+
import click
1920
from SCons.Script import ARGUMENTS # pylint: disable=import-error
2021
from SCons.Script import COMMAND_LINE_TARGETS # pylint: disable=import-error
2122
from SCons.Script import DEFAULT_TARGETS # pylint: disable=import-error
@@ -95,6 +96,10 @@
9596
for key in list(clivars.keys()) if key in env
9697
})
9798

99+
if int(ARGUMENTS.get("ISATTY", 0)):
100+
# pylint: disable=protected-access
101+
click._compat.isatty = lambda stream: True
102+
98103
if env.GetOption('clean'):
99104
env.PioClean(env.subst("$BUILD_DIR"))
100105
env.Exit(0)

Diff for: platformio/builder/tools/piolib.py

+24-10
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from os.path import (basename, commonprefix, dirname, expanduser, isdir,
2626
isfile, join, realpath, sep)
2727

28+
import click
2829
import SCons.Scanner # pylint: disable=import-error
2930
from SCons.Script import ARGUMENTS # pylint: disable=import-error
3031
from SCons.Script import COMMAND_LINE_TARGETS # pylint: disable=import-error
@@ -862,15 +863,15 @@ def process_extra_options(self):
862863
pass
863864

864865
def process_dependencies(self): # pylint: disable=too-many-branches
865-
uris = self.env.GetProjectOption("lib_deps", [])
866-
if not uris:
866+
lib_deps = self.env.GetProjectOption("lib_deps")
867+
if not lib_deps:
867868
return
868869
storage_dirs = []
869870
for lb in self.env.GetLibBuilders():
870871
if dirname(lb.path) not in storage_dirs:
871872
storage_dirs.append(dirname(lb.path))
872873

873-
for uri in uris:
874+
for uri in lib_deps:
874875
found = False
875876
for storage_dir in storage_dirs:
876877
if found:
@@ -888,12 +889,26 @@ def process_dependencies(self): # pylint: disable=too-many-branches
888889
break
889890

890891
if not found:
892+
# look for built-in libraries by a name
893+
# which don't have package manifest
891894
for lb in self.env.GetLibBuilders():
892-
if lb.name != uri:
893-
continue
894-
if lb not in self.depbuilders:
895-
self.depend_recursive(lb)
896-
break
895+
if lb.name == uri:
896+
if lb not in self.depbuilders:
897+
self.depend_recursive(lb)
898+
found = True
899+
break
900+
901+
if not found:
902+
lm = LibraryManager(
903+
self.env.subst(join("$PROJECTLIBDEPS_DIR", "$PIOENV")))
904+
try:
905+
lm.install(uri)
906+
# delete cached lib builders
907+
if "__PIO_LIB_BUILDERS" in DefaultEnvironment():
908+
del DefaultEnvironment()['__PIO_LIB_BUILDERS']
909+
except (exception.LibNotFound,
910+
exception.InternetIsOffline) as e:
911+
click.secho("Warning! %s" % e, fg="yellow")
897912

898913
def build(self):
899914
self._is_built = True # do not build Project now
@@ -917,8 +932,7 @@ def GetLibBuilders(env): # pylint: disable=too-many-branches
917932
key=lambda lb: 0 if lb.dependent else 1)
918933

919934
items = []
920-
verbose = int(ARGUMENTS.get("PIOVERBOSE",
921-
0)) and not env.GetOption('clean')
935+
verbose = int(ARGUMENTS.get("PIOVERBOSE", 0))
922936

923937
def _check_lib_builder(lb):
924938
compat_mode = lb.lib_compat_mode

Diff for: platformio/commands/run/helpers.py

+1-20
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818

1919
import click
2020

21-
from platformio import exception, util
22-
from platformio.commands.lib import (CTX_META_STORAGE_DIRS_KEY,
23-
CTX_META_STORAGE_LIBDEPS_KEY)
24-
from platformio.commands.lib import lib_install as cmd_lib_install
21+
from platformio import util
2522
from platformio.project.helpers import (calculate_project_hash,
2623
get_project_dir,
2724
get_project_libdeps_dir)
@@ -46,22 +43,6 @@ def handle_legacy_libdeps(project_dir, config):
4643
fg="yellow")
4744

4845

49-
def autoinstall_libdeps(ctx, envname, libraries, verbose=False):
50-
if not libraries:
51-
return
52-
libdeps_dir = join(get_project_libdeps_dir(), envname)
53-
ctx.meta.update({
54-
CTX_META_STORAGE_DIRS_KEY: [libdeps_dir],
55-
CTX_META_STORAGE_LIBDEPS_KEY: {
56-
libdeps_dir: libraries
57-
}
58-
})
59-
try:
60-
ctx.invoke(cmd_lib_install, silent=not verbose)
61-
except exception.InternetIsOffline as e:
62-
click.secho(str(e), fg="yellow")
63-
64-
6546
def clean_build_dir(build_dir):
6647
# remove legacy ".pioenvs" folder
6748
legacy_build_dir = join(get_project_dir(), ".pioenvs")

Diff for: platformio/commands/run/processor.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from platformio import exception, telemetry
2020
from platformio.commands.platform import \
2121
platform_install as cmd_platform_install
22-
from platformio.commands.run.helpers import autoinstall_libdeps, print_header
22+
from platformio.commands.run.helpers import print_header
2323
from platformio.commands.test.processor import (CTX_META_TEST_IS_RUNNING,
2424
CTX_META_TEST_RUNNING_NAME)
2525
from platformio.managers.platform import PlatformFactory
@@ -103,10 +103,6 @@ def _run_platform(self):
103103
# skip monitor target, we call it above
104104
if "monitor" in build_targets:
105105
build_targets.remove("monitor")
106-
if "nobuild" not in build_targets and "lib_deps" in self.options:
107-
autoinstall_libdeps(
108-
self.cmd_ctx, self.name,
109-
self.config.get("env:" + self.name, "lib_deps"), self.verbose)
110106

111107
try:
112108
p = PlatformFactory.newPlatform(self.options['platform'])

Diff for: platformio/managers/package.py

+1
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ def download(self, url, dest_dir, sha1=None):
171171
if fname and isfile(cache_path):
172172
dst_path = join(dest_dir, fname)
173173
shutil.copy(cache_path, dst_path)
174+
click.echo("Using cache: %s" % cache_path)
174175
return dst_path
175176

176177
with_progress = not app.is_disabled_progressbar()

Diff for: platformio/managers/platform.py

+3
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,9 @@ def _run_scons(self, variables, targets):
407407
join(util.get_source_dir(), "builder", "main.py")
408408
]
409409
cmd.append("PIOVERBOSE=%d" % (1 if self.verbose else 0))
410+
# pylint: disable=protected-access
411+
cmd.append("ISATTY=%d" %
412+
(1 if click._compat.isatty(sys.stdout) else 0))
410413
cmd += targets
411414

412415
# encode and append variables

0 commit comments

Comments
 (0)