From 5a18e4476f2808f879abedafd64df2b8c34a2f0d Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Thu, 21 Feb 2019 12:46:40 -0800 Subject: [PATCH] Clean up uploader.py, use implied paths No need to explicitly send in full paths for esptool and pyserial Python libs because they're in well known locations relative to upload.py. Make upload.py calculate these on-the-fly and clean up platform.txt. --- platform.txt | 2 +- tools/upload.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index 8d06665a3e..c82f4ab910 100644 --- a/platform.txt +++ b/platform.txt @@ -137,7 +137,7 @@ tools.esptool.upload.params.quiet= # First, potentially perform an erase or nothing # Next, do the binary upload # Combined in one rule because Arduino doesn't suport upload.1.pattern/upload.3.pattern -tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" "{runtime.platform.path}/tools/pyserial" "{runtime.platform.path}/tools/esptool" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end +tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" diff --git a/tools/upload.py b/tools/upload.py index d2ec57f3b3..5cbe647018 100755 --- a/tools/upload.py +++ b/tools/upload.py @@ -7,11 +7,13 @@ # i.e. upload.py tools/pyserial tools/esptool erase_flash --end write_flash file 0x0 --end import sys +import os sys.argv.pop(0) # Remove executable name +toolspath = os.path.dirname(os.path.realpath(__file__)).replace('\\', '/') # CWD in UNIX format try: - sys.path.append(sys.argv.pop(0).replace('\\', '/')) # Add pyserial dir to search path, in UNIX format - sys.path.append(sys.argv.pop(0).replace('\\', '/')) # Add esptool dir to search path, in UNIX format + sys.path.append(toolspath + "/pyserial") # Add pyserial dir to search path + sys.path.append(toolspath + "/esptool") # Add esptool dir to search path import esptool # If this fails, we can't continue and will bomb below except: sys.stderr.write("Error in command line, need pyserial path as 1st arg and esptool path as 2nd.\n")