Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 051bf77

Browse files
khancyrpeterbarker
authored andcommitted
build_parameters.py: use subprocess to call param_parse.py
1 parent 377d3df commit 051bf77

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

build_parameters.py

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import os
3333
import re
3434
import shutil # noqa: F401
35+
import subprocess
3536
import sys
3637
import time # noqa: F401
3738
from html.parser import HTMLParser
@@ -250,6 +251,7 @@ def setup():
250251
global BASEPATH
251252
BASEPATH = os.getcwd()
252253
check_temp_folders()
254+
os.chdir(BASEPATH) # Need to call git command correctly
253255
except Exception as e:
254256
error(f"ArduPilot Repo folder not found (cd {args.gitFolder} failed)")
255257
error(e)
@@ -499,11 +501,28 @@ def replace_anchors(source_file, dest_file, version_tag):
499501

500502
# Run param_parse.py tool from Autotest set in the desired commit id
501503
try:
502-
os.chdir(f"{BASEPATH}/Tools/autotest/param_metadata")
503-
if ('rover' in vehicle.lower()) and ('v3.' not in version.lower()) and ('v4.0' not in version.lower()): # Workaround the vehicle renaming (Rover, APMRover2 ArduRover...) # noqa: E501
504-
os.system("python3 ./param_parse.py --vehicle Rover")
505-
else: # regular case
506-
os.system(f"python3 ./param_parse.py --vehicle {vehicle_new_to_old_name[vehicle]}") # option "param_parse.py --format rst" is not available in all commits where param_parse.py is found # noqa: E501
504+
param_metadata_dir = os.path.join(BASEPATH, "Tools", "autotest", "param_metadata")
505+
# Workaround the vehicle renaming (Rover, APMRover2 ArduRover...)
506+
if ('rover' in vehicle.lower()) and ('v3.' not in version.lower()) and ('v4.0' not in version.lower()):
507+
vehicle_name = 'Rover'
508+
else:
509+
vehicle_name = vehicle_new_to_old_name[vehicle]
510+
511+
cmd = ["python3", "./param_parse.py", "--vehicle", vehicle_name]
512+
513+
# Run with subprocess - use cwd parameter instead of os.chdir()
514+
result = subprocess.run(cmd, cwd=param_metadata_dir,
515+
capture_output=True, text=True, timeout=300)
516+
517+
if result.returncode != 0:
518+
error(f"param_parse.py failed for {vehicle} {version}: {result.stderr}")
519+
return None
520+
521+
# Log param_parse.py output for debugging
522+
if result.stdout:
523+
debug(f"param_parse.py stdout for {vehicle} {version}: {result.stdout[:500]}")
524+
if result.stderr:
525+
debug(f"param_parse.py stderr for {vehicle} {version}: {result.stderr[:500]}")
507526

508527
# create a filename for new parameters file
509528
filename = f"parameters-{vehicle}"
@@ -514,24 +533,25 @@ def replace_anchors(source_file, dest_file, version_tag):
514533
else:
515534
filename += f"-stable-{version}.rst"
516535

536+
# Use absolute paths for file operations
537+
parameters_rst_path = os.path.join(param_metadata_dir, "Parameters.rst")
538+
output_file_path = os.path.join(param_metadata_dir, filename)
517539
# Generate new anchors names in files to avoid toctree problems and links in sphinx.
518-
if os.path.exists("Parameters.rst"):
519-
replace_anchors("Parameters.rst", filename, filename[10:-4])
520-
os.remove("Parameters.rst")
521-
debug(f"File {filename} generated. ")
540+
if os.path.exists(parameters_rst_path):
541+
replace_anchors(parameters_rst_path, output_file_path, filename[10:-4])
542+
os.remove(parameters_rst_path)
543+
debug(f"File {filename} generated.")
522544
# Remove duplicate RNGFNDx_ Parameters sections before checking labels.
523545
dedupe_rngfnd_parameters_sections(filename)
524546
# Check for duplicate RST labels in the generated file
525547
if rst_has_duplicate_labels(filename):
526548
debug(f"RST duplicate labels detected in {filename}")
527-
528549
else:
529550
# this was an error, but turns out we are missing a
530551
# bunch of these, eg.
531552
# [build_parameters.py][error]: Parameters.rst not found to rename to parameters-Copter-stable-V4.0.0.rst
532-
progress(f"Parameters.rst not found to rename to {filename}")
553+
error(f"Parameters.rst not found for {vehicle} {version}")
533554

534-
os.chdir(BASEPATH)
535555
except Exception as e:
536556
error(f'Error while parsing "Parameters.rst" | details:\t{vehicle}\t{version}\t{commit_id}')
537557
error(e)

0 commit comments

Comments
 (0)