diff --git a/platformio/builder/main.py b/platformio/builder/main.py index d384aa4a..587c0f21 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -52,7 +52,7 @@ commonvars.AddVariables( DefaultEnvironment( tools=[ "gcc", "g++", "as", "ar", "gnulink", - "platformio", "upload" + "platformio", "pioupload", "pioar" ], toolpath=[join("$PIOBUILDER_DIR", "tools")], variables=commonvars, diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index 9a483921..c32fe8b1 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -30,6 +30,7 @@ def BeforeUpload(target, source, env): # pylint: disable=W0613,W0621 env.AutodetectUploadPort() env.Append(UPLOADERFLAGS=["-P", "$UPLOAD_PORT"]) + if env.subst("$BOARD") == "raspduino": _rpi_sysgpio("/sys/class/gpio/export", 18) _rpi_sysgpio("/sys/class/gpio/gpio18/direction", "out") diff --git a/platformio/builder/tools/pioar.py b/platformio/builder/tools/pioar.py new file mode 100644 index 00000000..517e38ec --- /dev/null +++ b/platformio/builder/tools/pioar.py @@ -0,0 +1,35 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +import atexit +from os import remove +from tempfile import mkstemp + +MAX_SOURCES_LENGTH = 8000 # Windows CLI has limit with command length to 8192 + + +def _huge_sources_hook(sources): + if len(str(sources)) < MAX_SOURCES_LENGTH: + return sources + + _, tmp_file = mkstemp() + with open(tmp_file, "w") as f: + f.write(str(sources).replace("\\", "/")) + + atexit.register(remove, tmp_file) + + return "@%s" % tmp_file + + +def exists(_): + return True + + +def generate(env): + + env.Replace( + _huge_sources_hook=_huge_sources_hook, + ARCOM=env.get("ARCOM", "").replace( + "$SOURCES", "${_huge_sources_hook(SOURCES)}")) + + return env diff --git a/platformio/builder/tools/upload.py b/platformio/builder/tools/pioupload.py similarity index 100% rename from platformio/builder/tools/upload.py rename to platformio/builder/tools/pioupload.py