@@ -500,63 +500,58 @@ def replace_anchors(source_file, dest_file, version_tag):
500500 debug ("" )
501501
502502 # Run param_parse.py tool from Autotest set in the desired commit id
503- try :
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 ]
503+ param_metadata_dir = os .path .join (BASEPATH , "Tools" , "autotest" , "param_metadata" )
504+ # Workaround the vehicle renaming (Rover, APMRover2 ArduRover...)
505+ if ('rover' in vehicle .lower ()) and ('v3.' not in version .lower ()) and ('v4.0' not in version .lower ()):
506+ vehicle_name = 'Rover'
507+ else :
508+ vehicle_name = vehicle_new_to_old_name [vehicle ]
510509
511- cmd = ["python3" , "./param_parse.py" , "--vehicle" , vehicle_name ]
510+ cmd = ["python3" , "./param_parse.py" , "--vehicle" , vehicle_name ]
512511
513- # Run with subprocess - use cwd parameter instead of os.chdir()
512+ try :
514513 result = subprocess .run (cmd , cwd = param_metadata_dir ,
515514 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 ]} " )
526-
527- # create a filename for new parameters file
528- filename = f"parameters-{ vehicle } "
529- if ("beta" in version or "rc" in version ): # Plane uses BETA, Copter and Rover uses RCn
530- filename += f"-{ version } .rst"
531- elif ("latest" in version ):
532- filename += f"-{ version } .rst"
533- else :
534- filename += f"-stable-{ version } .rst"
535-
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 )
539- # Generate new anchors names in files to avoid toctree problems and links in sphinx.
515+ except (subprocess .TimeoutExpired , OSError ) as e :
516+ error (f"param_parse.py execution failed for { vehicle } { version } : { e } " )
517+ return None
518+
519+ if result .returncode != 0 :
520+ error (f"param_parse.py failed for { vehicle } { version } : { result .stderr } " )
521+ return None
522+
523+ if result .stdout :
524+ debug (f"param_parse.py stdout for { vehicle } { version } : { result .stdout [:500 ]} " )
525+ if result .stderr :
526+ debug (f"param_parse.py stderr for { vehicle } { version } : { result .stderr [:500 ]} " )
527+
528+ # create a filename for new parameters file
529+ filename = f"parameters-{ vehicle } "
530+ if ("beta" in version or "rc" in version ): # Plane uses BETA, Copter and Rover uses RCn
531+ filename += f"-{ version } .rst"
532+ elif ("latest" in version ):
533+ filename += f"-{ version } .rst"
534+ else :
535+ filename += f"-stable-{ version } .rst"
536+
537+ parameters_rst_path = os .path .join (param_metadata_dir , "Parameters.rst" )
538+ output_file_path = os .path .join (param_metadata_dir , filename )
539+
540+ # Generate new anchors names in files to avoid toctree problems and links in sphinx.
541+ try :
540542 if os .path .exists (parameters_rst_path ):
541543 replace_anchors (parameters_rst_path , output_file_path , filename [10 :- 4 ])
542544 os .remove (parameters_rst_path )
543545 debug (f"File { filename } generated." )
544546 # Remove duplicate RNGFNDx_ Parameters sections before checking labels.
545- dedupe_rngfnd_parameters_sections (filename )
547+ dedupe_rngfnd_parameters_sections (output_file_path )
546548 # Check for duplicate RST labels in the generated file
547- if rst_has_duplicate_labels (filename ):
548- debug (f"RST duplicate labels detected in { filename } " )
549+ if rst_has_duplicate_labels (output_file_path ):
550+ debug (f"RST duplicate labels detected in { output_file_path } " )
549551 else :
550- # this was an error, but turns out we are missing a
551- # bunch of these, eg.
552- # [build_parameters.py][error]: Parameters.rst not found to rename to parameters-Copter-stable-V4.0.0.rst
553552 error (f"Parameters.rst not found for { vehicle } { version } " )
554-
555- except Exception as e :
556- error (f'Error while parsing "Parameters.rst" | details:\t { vehicle } \t { version } \t { commit_id } ' )
557- error (e )
558- # sys.exit(1)
559- debug ("" )
553+ except (OSError , IOError ) as e :
554+ error (f"Error while handling Parameters.rst for { vehicle } { version } : { e } " )
560555
561556 return 0
562557
0 commit comments