diff options
Diffstat (limited to 'docs/doxygen/swig_doc.py')
-rw-r--r-- | docs/doxygen/swig_doc.py | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/docs/doxygen/swig_doc.py b/docs/doxygen/swig_doc.py index 7b34a523e..95d143aab 100644 --- a/docs/doxygen/swig_doc.py +++ b/docs/doxygen/swig_doc.py @@ -219,7 +219,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): make_funcs.add(make_func.name()) output.append(make_block_entry(di, block)) except block.ParsingError: - print('Parsing error for block %s' % block.name()) + sys.stderr.write('Parsing error for block {0}'.format(block.name())) # Create docstrings for functions # Don't include the make functions since they have already been dealt with. @@ -228,7 +228,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): try: output.append(make_func_entry(f)) except f.ParsingError: - print('Parsing error for function %s' % f.name()) + sys.stderr.write('Parsing error for function {0}'.format(f.name())) # Create docstrings for classes block_names = [block.name() for block in blocks] @@ -237,7 +237,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): try: output.append(make_class_entry(k)) except k.ParsingError: - print('Parsing error for class %s' % k.name()) + sys.stderr.write('Parsing error for class {0}'.format(k.name())) # Docstrings are not created for anything that is not a function or a class. # If this excludes anything important please add it here. @@ -268,4 +268,24 @@ if __name__ == "__main__": custom_output = "\n\n".join(output) # Generate the docstrings interface file. - make_swig_interface_file(di, swigdocfilename, custom_output=custom_output) + # If parsing error on NoSuchMember, try again by rereading everything. + # Give up after 3 tries. + tries = 0 + while(1): + try: + make_swig_interface_file(di, swigdocfilename, custom_output=custom_output) + except base.Base.NoSuchMember: + if(tries < 3): + # May not be built just yet; sleep and try again + sys.stderr.write("XML parsing problem with file {0}, retrying.\n".format( + swigdocfilename)) + time.sleep(1) + tries += 1 + else: + # if we've given it three tries, give up and raise an error + sys.stderr.write("XML parsing error with file {0}. giving up.\n".format( + swigdocfilename)) + raise + else: + break + |