Subject: Re: [Boost-build] Documentation build error on trunk
From: Jurko GospodnetiÄ (jurko.gospodnetic_at_[hidden])
Date: 2012-08-11 18:40:11
>> doxygen.1.jam - minimal fix, same as the one sent earlier
>> doxygen.2.jam - fix for an obvious typo/bug in headers-to-doxyfile
>> doxygen.3.jam - stylistic cleanup
> I tried these with the accumulators documentation, which I think is
> the only thing which uses the code in question. Version 1 and 2 seemed
> fine. Version 3 was okay after I fixed a couple of semi-colons, I've
> attached that.
I've just looked a bit deeper into what boostbook.jam & doxygen.jam
modules are doing and it turns out they are not both written to hold up
to the same standards.
The boostbook.jam module knows what it's doing when it's creating its
xml-catalog file. It prepares a boostbook() rule for declaring built
boostbook targets, and creates the xml-catalog target in the Jamroot
project of the project owning those boostbook targets. Since Boost Build
requires that standalone & configuration module projects not declare
built targets - we know the project from which the boostbook() rule got
called has a direct or indirect parent Jamroot project.
The doxygen.jam module on the other hand seems not to have been
prepared so carefully. When it is not building a HTML target it wants to
call its check* actions to create targets containing vesion information
for its used latex/dvips/ps tools. However, related targets are created
directly in the doxygen.jam module's project - effectively breaking
Boost Build's rule about not declaring built targets in standalone
projects. The code tries to 'look correct' by attempting to reach the
'root project' for this project but such a root project does not exist,
as standalone projects do not have a parent project. Since the target is
declared in a standalone project the behaviour is undefined, but in all
my testing, the check* targets get built under the first built project's
folder, and do not honor the --build-dir command-line option.
I'd like to update the doxygen.jam module to use the same logic about
creating its check* targets as the boostbook.jam module does for its
xml-catalog target, but I do not have the necessary environment set up
to test this directly. I'll make the changes 'blind' again and send them
to the list.
Daniel, can you help me test/correct them then?
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk