Strange failure to build Quickbook, Doxygen and Autoindex and specialization std::numeric_limits

"Paul A. Bristow" <[email protected]> Wed, 11 Mar 2015 16:47:04 -0000
Newsgroups gmane.comp.lib.boost.documentation
Message-ID <[email protected]>
Short version:

I have been building a prototype documentation for a fixed-point library using Quickbook, Doxygen
and Autoindex enabled . It includes a specialization of std::numeric_limits.

It fails to build, but only if it includes a specialization of std::numeric_limits *and* index
enabled.

The most helpful message is from Doxygen:

"
error: Cannot open file
I:/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbo
se-on/auto-index-on/threading-multi/autodoc-xml/classstd_1_1numeric__limits_3_01boost_1_1math_1_1
fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6.xml for writing!
"

I can live with removing numeric_limits conditionally (it isn't terribly useful anyway).  

(I think have seen this problem, before but pushed it under the carpet ;-)

Any ideas?

(Place back under carpet?)

Paul

PS Long version - see attached.

---
Paul A. Bristow
Prizet Farmhouse
Kendal UK LA8 8AB
+44 (0) 1539 561830

_______________________________________________
Boost-docs mailing list
[email protected]
http://lists.boost.org/mailman/listinfo.cgi/boost-docs
doxerror.txt (text/plain, 5.2 KB)
I have been building a prototype documentation for a fixed-point library using Quickbook, Doxygen and Autoindex . It includes a specialization std::numeric_limits.

All works OK without an auto-index

>b2 -a > doc.log

Only if I add --enable-index

b2 -a --enable-index > doc_index.log

it fails to generate html correctly with two error reports:

Error report 1: doxywarning file (using <doxygen:param>WARN_LOGFILE=doxywarnings.log) says:

error: Cannot open file
I:/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/classstd_1_1numeric__limits_3_01boost_1_1math_1_1
fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6.xml for writing!

This does not exist in I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml

but lots of others do.

File namespacestd.xml contains a reference to this file that could not be written.

    <innerclass refid="classstd_1_1numeric__limits_3_01boost_1_1math_1_1fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6" prot="public">std::numeric_limits&lt; boost::math::fixed_point::negatable&lt; range, resolution, round_mode, overflow_mode &gt; &gt;</innerclass>
    
This looks as though it causes trouble later on using the autodoc-xml\index.xmlfile at line 408 
(see ...resolu7207871e2843a3ccd659eb78939f39a6 below in autodox-xml/index.xml)

Error report 2:  b2 log files says:

xslt-xsltproc.windows ..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen
file:///I%3A/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/index.xml:445: parser error : Opening and ending tag mismatch: compound line 408 and doxygenindex
</doxygenindex>
               ^
file:///I%3A/modular-boost/bin.v2/libs/fixed_point/doc/msvc-12.0/debug/auto-index-internal-on/auto-index-verbose-on/auto-index-on/threading-multi/autodoc-xml/index.xml:446: parser error : Premature end of data in tag doxygenindex line 2

^
unable to parse I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml

    set XML_CATALOG_FILES=../../../bin.v2/boostbook_catalog.xml
 "C:/Program Files (x86)/xsltproc_win32/xsltproc.exe" --stringparam doxygen.xml.path "I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml" --xinclude -o "..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen" "I:\modular-boost\tools\boostbook\xsl\doxygen\collect.xsl" "I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml"

...failed xslt-xsltproc.windows ..\..\..\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml.doxygen...

I:\modular-boost\bin.v2\libs\fixed_point\doc\msvc-12.0\debug\auto-index-internal-on\auto-index-verbose-on\auto-index-on\threading-multi\autodoc-xml\index.xml

autodoc-xml\index.xml
at error line 408 has

  <compound refid="classstd_1_1numeric__limits_3_01boost_1_1math_1_1fixed__point_1_1negatable_3_01range_00_01resolu7207871e2843a3ccd659eb78939f39a6" kind="class">
    <name>std::numeric_limits&lt; boost::math::fixed_point::negatable&lt; range, resolution, round_mode, overflow_mode &gt; &gt;
    </name>
    
but missing an expected ending tag   </compound>

* If exclude std namespace section with a doxygen \cond statement,

//! \cond STDLIMITS
  // Provide a specialization of std::numeric_limits<negatable>.
  namespace std
  {
    template<const int range,
             const int resolution,
             const boost::math::fixed_point::round::round_type round_mode,
             const boost::math::fixed_point::overflow::overflow_type overflow_mode>
    class numeric_limits<boost::math::fixed_point::negatable<range, resolution, round_mode, overflow_mode> >
//! \endcond

then it builds OK, including the index.
 
* If I exclude the template class numeric_limits using \cond \endcond, then it builds OK.
* If I exclude just the static functions, it fails.
* If I exclude all the private and public, or just private, it fails.
* If provide just a forward declaration of class numeric_limits<fixed_point_negatable_type>, it builds OK.

* If I use the Doxygen doxywizard to build standalone doxygen html, all goes as expected, with no warnings.

So the problem would seem to lie with the first warning from doxygen that it is unable to write to a file.

Is this because something is still open from preparing auto-index?

(Reminder: without enable-index, it builds doxygen C++ reference OK).

I can live with removing numeric_limits conditionally (it isn't very useful).  

(I think have seen this problem before but pushed it under the carpet ;-)

Any ideas?

(Place back under carpet?)

Paul