From 786d505ecb2d7dc5c57d4c496ab09dd166590c06 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sun, 10 Jun 2018 01:27:50 +0300 Subject: [PATCH] Isolate build environment for "BuildSources" nodes --- platformio/builder/tools/piomisc.py | 3 --- platformio/builder/tools/platformio.py | 32 +++++++++++++------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/platformio/builder/tools/piomisc.py b/platformio/builder/tools/piomisc.py index 373efbd3..4ac533cf 100644 --- a/platformio/builder/tools/piomisc.py +++ b/platformio/builder/tools/piomisc.py @@ -306,9 +306,6 @@ def ProcessTest(env): src_filter.append("+<%s%s>" % (env['PIOTEST'], sep)) env.Replace(PIOTEST_SRC_FILTER=src_filter) - return env.CollectBuildFiles("$BUILDTEST_DIR", "$PROJECTTEST_DIR", - "$PIOTEST_SRC_FILTER") - def GetExtraScripts(env, scope): items = [] diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 7b6e23ed..e60e41aa 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -43,33 +43,32 @@ def scons_patched_match_splitext(path, suffixes=None): def _build_project_deps(env): deps = env.BuildProjectLibraries() - srcnodes = None - if "__test" in COMMAND_LINE_TARGETS: - srcnodes = env.ProcessTest() - else: - srcnodes = env.CollectBuildFiles( - "$BUILDSRC_DIR", - "$PROJECTSRC_DIR", - src_filter=env.get("SRC_FILTER")) + # prepend dependent libs before built-in + env.Prepend(LIBS=deps['LIBS']) - projenv = env.Clone() - Export("projenv") + if "__test" in COMMAND_LINE_TARGETS: + env.ProcessTest() + projenv = env.Clone() + projenv.BuildSources("$BUILDTEST_DIR", "$PROJECTTEST_DIR", + "$PIOTEST_SRC_FILTER") + else: + projenv = env.Clone() + projenv.BuildSources("$BUILDSRC_DIR", "$PROJECTSRC_DIR", + env.get("SRC_FILTER")) # CPPPATH from dependencies projenv.PrependUnique(CPPPATH=deps['CPPPATH']) # extra build flags from `platformio.ini` projenv.ProcessFlags(env.get("SRC_BUILD_FLAGS")) - # prepend dependent libs before built-in - env.Prepend( - LIBS=deps['LIBS'], PIOBUILDFILES=[projenv.Object(n) for n in srcnodes]) - - if not env['PIOBUILDFILES'] and not COMMAND_LINE_TARGETS: + if not env.get("PIOBUILDFILES") and not COMMAND_LINE_TARGETS: sys.stderr.write( "Error: Nothing to build. Please put your source code files " "to '%s' folder\n" % env.subst("$PROJECTSRC_DIR")) env.Exit(1) + Export("projenv") + def BuildProgram(env): @@ -302,8 +301,9 @@ def BuildLibrary(env, variant_dir, src_dir, src_filter=None): def BuildSources(env, variant_dir, src_dir, src_filter=None): + nodes = env.CollectBuildFiles(variant_dir, src_dir, src_filter) DefaultEnvironment().Append( - PIOBUILDFILES=env.CollectBuildFiles(variant_dir, src_dir, src_filter)) + PIOBUILDFILES=[env.Object(node) for node in nodes]) def exists(_):