From 8c87df538ec31483520c68f5efa696b87574c24b Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 21 Jun 2018 15:22:47 +0800 Subject: [PATCH 1/2] docs: conf.py: check return code when calling os.system Several calls were made but results were not checked, obfuscating the errors. --- docs/conf_common.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/conf_common.py b/docs/conf_common.py index ed22db5452..4746532350 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -32,22 +32,28 @@ if 'BUILDDIR' in os.environ: # Call Doxygen to get XML files from the header files print("Calling Doxygen to generate latest XML files") -os.system("doxygen ../Doxyfile") +if os.system("doxygen ../Doxyfile") != 0: + raise RuntimeError('Doxygen call failed') + # Doxygen has generated XML files in 'xml' directory. # Copy them to 'xml_in', only touching the files which have changed. copy_if_modified('xml/', 'xml_in/') # Generate 'api_name.inc' files using the XML files by Doxygen -os.system('python ../gen-dxd.py') +if os.system('python ../gen-dxd.py') != 0: + raise RuntimeError('gen-dxd.py failed') # Generate 'kconfig.inc' file from components' Kconfig files kconfig_inc_path = '{}/inc/kconfig.inc'.format(builddir) -os.system('python ../gen-kconfig-doc.py > ' + kconfig_inc_path + '.in') +if os.system('python ../gen-kconfig-doc.py > ' + kconfig_inc_path + '.in') != 0: + raise RuntimeError('gen-kconfig-doc.py failed') + copy_if_modified(kconfig_inc_path + '.in', kconfig_inc_path) # Generate 'esp_err_defs.inc' file with ESP_ERR_ error code definitions esp_err_inc_path = '{}/inc/esp_err_defs.inc'.format(builddir) -os.system('python ../../tools/gen_esp_err_to_name.py --rst_output ' + esp_err_inc_path + '.in') +if os.system('python ../../tools/gen_esp_err_to_name.py --rst_output ' + esp_err_inc_path + '.in') != 0: + raise RuntimeError('gen_esp_err_to_name.py failed') copy_if_modified(esp_err_inc_path + '.in', esp_err_inc_path) # http://stackoverflow.com/questions/12772927/specifying-an-online-image-in-sphinx-restructuredtext-format From 858cfc2950adf499178f02f8cb3b7254dca877ac Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 21 Jun 2018 15:21:45 +0800 Subject: [PATCH 2/2] esp_err_to_name.py: guess IDF_PATH if not set in environement Fixes the issue that esp_err_to_name.py would fail when called in documentation build process, when there was no IDF_PATH set. --- tools/gen_esp_err_to_name.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/gen_esp_err_to_name.py b/tools/gen_esp_err_to_name.py index f72f865c6f..f2c648745e 100755 --- a/tools/gen_esp_err_to_name.py +++ b/tools/gen_esp_err_to_name.py @@ -277,24 +277,29 @@ def generate_rst_output(fout): fout.write('\n\n') def main(): + if 'IDF_PATH' in os.environ: + idf_path = os.environ['IDF_PATH'] + else: + idf_path = os.path.realpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) + parser = argparse.ArgumentParser(description='ESP32 esp_err_to_name lookup generator for esp_err_t') - parser.add_argument('--c_input', help='Path to the esp_err_to_name.c.in template input.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c.in') - parser.add_argument('--c_output', help='Path to the esp_err_to_name.c output.', default=os.environ['IDF_PATH'] + '/components/esp32/esp_err_to_name.c') + parser.add_argument('--c_input', help='Path to the esp_err_to_name.c.in template input.', default=idf_path + '/components/esp32/esp_err_to_name.c.in') + parser.add_argument('--c_output', help='Path to the esp_err_to_name.c output.', default=idf_path + '/components/esp32/esp_err_to_name.c') parser.add_argument('--rst_output', help='Generate .rst output and save it into this file') args = parser.parse_args() - for root, dirnames, filenames in os.walk(os.environ['IDF_PATH']): + for root, dirnames, filenames in os.walk(idf_path): for filename in fnmatch.filter(filenames, '*.[ch]'): full_path = os.path.join(root, filename) - idf_path = os.path.relpath(full_path, os.environ['IDF_PATH']) - if idf_path in ignore_files: + path_in_idf = os.path.relpath(full_path, idf_path) + if path_in_idf in ignore_files: continue with open(full_path, "r+") as f: for line in f: # match also ESP_OK and ESP_FAIL because some of ESP_ERRs are referencing them if re.match(r"\s*#define\s+(ESP_ERR_|ESP_OK|ESP_FAIL)", line): try: - process(str.strip(line), idf_path) + process(str.strip(line), path_in_idf) except InputError as e: print (e)