From 00aeaf021d711fc6e19e8e9a1f7860ede7c722df Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 4 Oct 2016 01:24:38 +0300 Subject: [PATCH] Further work on PIO Remote --- HISTORY.rst | 25 +++++++++++++++++++++++++ docs/userguide/cmd_run.rst | 1 - platformio/builder/tools/pioupload.py | 4 +++- platformio/builder/tools/platformio.py | 12 +++++++----- platformio/commands/remote.py | 17 +++++++++++++++-- platformio/managers/platform.py | 2 +- 6 files changed, 51 insertions(+), 10 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 09fc7d43..a5f7ac83 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -12,15 +12,40 @@ PlatformIO 3.0 ------- +* Development platform `Atmel SAM `__ + + + Updated ARM mbed OS to 5.1.4/rev126 + * Development platform `Espressif 8266 `__ + Add support for ESPrectro board + Additional target "buildfs" to accompany "uploadfs" (`issue #6 `__) +* Development platform `Freescale Kinetis `__ + + + Updated ARM mbed OS to 5.1.4/rev126 + +* Development platform `Nordic nRF51 `__ + + + Updated ARM mbed OS to 5.1.4/rev126 + +* Development platform `NXP LPC `__ + + + Updated ARM mbed OS to 5.1.4/rev126 + +* Development platform `Silicon Labs EFM32 `__ + + + Updated ARM mbed OS to 5.1.4/rev126 + * Development platform `ST STM32 `__ + Added support for new boards: ST 32F769IDISCOVERY + + Updated ARM mbed OS to 5.1.4/rev126 + +* Development platform `Teensy `__ + + + Updated ARM mbed OS to 5.1.4/rev126 3.1.0 (2016-09-19) ~~~~~~~~~~~~~~~~~~ diff --git a/docs/userguide/cmd_run.rst b/docs/userguide/cmd_run.rst index 020c112a..5343578c 100644 --- a/docs/userguide/cmd_run.rst +++ b/docs/userguide/cmd_run.rst @@ -55,7 +55,6 @@ Pre-built targets: * ``upload`` firmware "auto-uploading" for embedded platforms * ``program`` firmware "auto-uploading" for embedded platforms using external programmer (available only for :ref:`platform_atmelavr`) -* ``uploadlazy`` upload existing firmware without project rebuilding * ``uploadfs`` :ref:`platform_espressif_uploadfs` * ``envdump`` dump current build environment * ``size`` print the size of the sections in a firmware/program diff --git a/platformio/builder/tools/pioupload.py b/platformio/builder/tools/pioupload.py index d0c54451..d1c5ff90 100644 --- a/platformio/builder/tools/pioupload.py +++ b/platformio/builder/tools/pioupload.py @@ -21,6 +21,7 @@ from platform import system from shutil import copyfile from time import sleep +from SCons.Node.Alias import Alias from serial import Serial from platformio import util @@ -160,7 +161,8 @@ def CheckUploadSize(_, target, source, env): # pylint: disable=W0613,W0621 sysenv = environ.copy() sysenv['PATH'] = str(env['ENV']['PATH']) - cmd = [env.subst("$SIZETOOL"), "-B", str(target[0])] + cmd = [env.subst("$SIZETOOL"), "-B", + str(source[0] if isinstance(target[0], Alias) else target[0])] result = util.exec_command(cmd, env=sysenv) if result['returncode'] != 0: return diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 3f56eebd..d17a205c 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -21,7 +21,8 @@ from os import sep, walk from os.path import basename, dirname, isdir, join, realpath from SCons.Action import Action -from SCons.Script import COMMAND_LINE_TARGETS, DefaultEnvironment, SConscript +from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild, + DefaultEnvironment, SConscript) from SCons.Util import case_sensitive_suffixes from platformio.util import pioversion_to_intstr @@ -97,9 +98,10 @@ def BuildProgram(env): program = env.Program( join("$BUILD_DIR", env.subst("$PROGNAME")), env['PIOBUILDFILES']) - if set(["upload", "uploadlazy", "program"]) & set(COMMAND_LINE_TARGETS): - env.AddPostAction(program, Action(env.CheckUploadSize, - "Checking program size $TARGET")) + checksize_action = Action(env.CheckUploadSize, "Checking program size") + AlwaysBuild(env.Alias("checkprogsize", program, checksize_action)) + if set(["upload", "program"]) & set(COMMAND_LINE_TARGETS): + env.AddPostAction(program, checksize_action) return program @@ -226,7 +228,7 @@ def CollectBuildFiles(env, def BuildFrameworks(env, frameworks): - if not frameworks or "uploadlazy" in COMMAND_LINE_TARGETS: + if not frameworks: return if "BOARD" not in env: diff --git a/platformio/commands/remote.py b/platformio/commands/remote.py index 93fe9b42..f1c03515 100644 --- a/platformio/commands/remote.py +++ b/platformio/commands/remote.py @@ -30,12 +30,25 @@ from platformio.pioplus import pioplus_call @click.group("remote", short_help="PIO Remote") -def cli(): +@click.option("-a", "--agent", multiple=True) +def cli(**kwargs): pass -@cli.command("agent", short_help="Host agent") +@cli.group("agent", short_help="Start new agent or list active") def remote_agent(): + pass + + +@remote_agent.command("start", short_help="Start agent") +@click.option("-n", "--name") +@click.option("-s", "--share") +def remote_agent_start(**kwargs): + pioplus_call(sys.argv[1:]) + + +@remote_agent.command("list", short_help="List active agents") +def remote_agent_list(): pioplus_call(sys.argv[1:]) diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index 48329197..2bf74a43 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -453,7 +453,7 @@ class PlatformBase(PlatformPackagesMixin, PlatformRunMixin): for _name, _opts in self.packages.iteritems(): if _opts.get("type") == "uploader": self.packages[_name]['optional'] = False - elif "uploadlazy" in targets: + elif "nobuild" in targets: # skip all packages, allow only upload tools self.packages[_name]['optional'] = True