|
4 | 4 | fromdatetimeimporttimedelta
|
5 | 5 | importjson
|
6 | 6 | importos
|
| 7 | +frompackagingimportversion |
7 | 8 | importre
|
8 | 9 | importshutil
|
9 | 10 | importsubprocess
|
|
52 | 53 | arch=arch_default
|
53 | 54 | arduino_platform=arduino_platform_default
|
54 | 55 | arduino_cli=""
|
| 56 | +arduino_cli_default_version="0.10.0" |
| 57 | +arduino_cli_version=arduino_cli_default_version |
55 | 58 |
|
56 | 59 | # List
|
57 | 60 | sketch_list= []
|
@@ -117,6 +120,7 @@ def create_output_log_tree():
|
117 | 120 | file.write(build_separator+"\n")
|
118 | 121 | # Folders
|
119 | 122 | forboardinboard_fqbn:
|
| 123 | +createFolder(os.path.join(output_dir,board,bin_dir)) |
120 | 124 | createFolder(os.path.join(output_dir,board))
|
121 | 125 | createFolder(os.path.join(build_output_dir,board))
|
122 | 126 |
|
@@ -150,6 +154,7 @@ def create_config():
|
150 | 154 |
|
151 | 155 | defcheck_config():
|
152 | 156 | globalarduino_cli
|
| 157 | +globalarduino_cli_version |
153 | 158 | globalarduino_cli_path
|
154 | 159 | globalsketches_path_list
|
155 | 160 | globalbuild_output_dir
|
@@ -191,6 +196,23 @@ def check_config():
|
191 | 196 | else:
|
192 | 197 | arduino_cli="arduino-cli"
|
193 | 198 |
|
| 199 | +try: |
| 200 | +output=subprocess.check_output( |
| 201 | + [arduino_cli,"version"],stderr=subprocess.DEVNULL, |
| 202 | + ) |
| 203 | +res=re.match(r".*Version:\s+(\d+\.\d+\.\d+).*",output.decode("utf-8")) |
| 204 | + |
| 205 | +ifres: |
| 206 | +arduino_cli_version=res.group(1) |
| 207 | +print("Arduino CLI version used: "+arduino_cli_version) |
| 208 | +else: |
| 209 | +raisesubprocess.CalledProcessError(1,"re") |
| 210 | +exceptsubprocess.CalledProcessError: |
| 211 | +print( |
| 212 | +"Unable to define Arduino CLI version, use default: " |
| 213 | ++arduino_cli_default_version |
| 214 | + ) |
| 215 | + |
194 | 216 | try:
|
195 | 217 | output=subprocess.check_output(
|
196 | 218 | [arduino_cli,"core","search","stm32","--additional-urls",stm32_url],
|
@@ -466,7 +488,7 @@ def find_board():
|
466 | 488 | else:
|
467 | 489 | raisesubprocess.CalledProcessError(1,"No fqbn")
|
468 | 490 | exceptsubprocess.CalledProcessErrorase:
|
469 |
| -print("No fqbn detail found for:\""+" ".join(e.cmd)+"\"!") |
| 491 | +print('No fqbn detail found for:"'+" ".join(e.cmd)+'"!') |
470 | 492 | ifboard_found:
|
471 | 493 | board_fqbn=collections.OrderedDict(sorted(board_found.items()))
|
472 | 494 | else:
|
@@ -662,8 +684,12 @@ def genBasicCommand(b_name):
|
662 | 684 | cmd.append(build_output_cache_dir)
|
663 | 685 | ifargs.verbose:
|
664 | 686 | cmd.append("--verbose")
|
665 |
| -cmd.append("--output-dir") |
666 |
| -cmd.append(os.path.join(output_dir,b_name,bin_dir)) |
| 687 | +ifversion.parse(arduino_cli_version)<=version.parse(arduino_cli_default_version): |
| 688 | +cmd.append("--output") |
| 689 | +cmd.append(os.path.join(output_dir,b_name,bin_dir,"dummy_sketch")) |
| 690 | +else: |
| 691 | +cmd.append("--output-dir") |
| 692 | +cmd.append(os.path.join(output_dir,b_name,bin_dir)) |
667 | 693 | cmd.append("--fqbn")
|
668 | 694 | cmd.append(get_fqbn(b_name))
|
669 | 695 | cmd.append("dummy_sketch")
|
@@ -693,6 +719,9 @@ def build_config(sketch, boardSkipped):
|
693 | 719 |
|
694 | 720 | foridxinreversed(range(len(build_conf_list))):
|
695 | 721 | build_conf_list[idx][4][-1]=sketch
|
| 722 | +build_conf_list[idx][4][-4]=build_conf_list[idx][4][-4].replace( |
| 723 | +"dummy_sketch",os.path.basename(sketch) |
| 724 | + ) |
696 | 725 | ifna_sketch_pattern:
|
697 | 726 | ifbuild_conf_list[idx][0]inna_sketch_pattern:
|
698 | 727 | forpatterninna_sketch_pattern[build_conf_list[idx][0]]:
|
|