[1.56] Sorry but no PDF doc build (build script has been broken)

Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-( Each time I fix one Boost.Build error it just leads to another, and frankly at present I have neither time nor inclination to keep tracking these down. If anyone wants to experience some pain then trying to invoke bjam in /doc/pdf/ will give you an idea of some of the issues. Regards, John.

On 8/10/2014 1:25 PM, John Maddock wrote:
Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-(
Each time I fix one Boost.Build error it just leads to another, and frankly at present I have neither time nor inclination to keep tracking these down. If anyone wants to experience some pain then trying to invoke bjam in /doc/pdf/ will give you an idea of some of the issues.
You mean :
C:/Programming/VersionControl/modular-boost/tools/build/src/tools\boostbook.jam:704: in construct from module object(boostbook-target-class)@5223 error: Cannot build documentation type 'pdf'. C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1332: in class@basic-target.generate from module object(boostbook-target-class)@5223 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:757: in generate-really from module object(main-target)@5224 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:729: in class@main-target.generate from module object(main-target)@5224 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:874: in targets.generate-from-reference from module targets C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1245: in generate-dependencies from module object(install-target-class)@1987 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1302: in class@basic-target.generate from module object(install-target-class)@1987 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:757: in generate-really from module object(main-target)@2030 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:729: in class@main-target.generate from module object(main-target)@2030 C:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:272: in class@project-target.generate from module object(project-target)@1976 C:/Programming/VersionControl/modular-boost/tools/build/src\build-system.jam:707: in load from module build-system C:\Programming\VersionControl\modular-boost\tools\build\src/kernel\modules.jam:289: in import from module modules C:\Programming\VersionControl\modular-boost\tools\build\src/kernel/bootstrap.jam:139: in boost-build from module C:\Programming\VersionControl\modular-boost\boost-build.jam:17: in module scope from module
I would ask the Boost Build mavens on their mailing list. They rarely answer me <g> but I'll bet they will answer you.

Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-(
Each time I fix one Boost.Build error it just leads to another, and frankly at present I have neither time nor inclination to keep tracking these down. If anyone wants to experience some pain then trying to invoke bjam in /doc/pdf/ will give you an idea of some of the issues.
You mean :
Nope, I *think* that one is probably caused by you not having an FO processor registered in your user-config.jam, I get: error: at ..\..\libs\bind\doc\Jamfile.v2:6 error: Attempt to redeclare already registered project id '/boost/doc'. error: Original project: error: Name: Jamfile<M:\data\boost\boost-1_56_0\doc> error: Module: Jamfile<M:\data\boost\boost-1_56_0\doc> error: Main id: /boost/doc error: File: ..\Jamfile.v2 error: Location: .. error: New project: error: Module: Jamfile<M:\data\boost\boost-1_56_0\libs\bind\doc> error: File: ..\..\libs\bind\doc\Jamfile.v2 error: Location: ../../libs/bind/doc Which I can workaround, but then I get the same error from Boost.Context, work around that one as well and then I get: M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:397: in find-really *** argument error * rule project.is-registered-id ( id ) * called with: ( ) * missing argument id M:/data/boost/boost-1_56_0/tools/build/src/build\project.jam:600:see definition of rule 'project.is-registered-id' being called M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:457: in class@project-target.find M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:841: in resolve-reference M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:858: in targets.generate-from-reference M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:1245: in generate-dependencies M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:1302: in class@basic-target.generate M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:757: in generate-really M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:729: in class@main-target.generate M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:272: in class@project-target.generate M:/data/boost/boost-1_56_0/tools/build/src\build-system.jam:707: in load M:\data\boost\boost-1_56_0\tools\build\src/kernel\modules.jam:289: in import M:\data\boost\boost-1_56_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build M:\data\boost\boost-1_56_0\boost-build.jam:17: in module scope Which so freaking inscrutable that I'm pretty sure it's a Japanese translation of Klingon. I suspect the only proper solution is to have each library's Jamfile include an install rule to build the PDF and put it under dist/pdf. But with >60 libraries to patch and apparently the only way to submit a pull request for each (fork, clone, patch, test and submit), then do the same for master *and* develop branches, wait and hope that the maintainer is active and feeling favourable.... well you see my problem! Apologies for the rant, John.

On 11 Aug 2014 at 12:24, John Maddock wrote:
Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-(
Each time I fix one Boost.Build error it just leads to another, and frankly at present I have neither time nor inclination to keep tracking these down. If anyone wants to experience some pain then trying to invoke bjam in /doc/pdf/ will give you an idea of some of the issues. [snip] Which so freaking inscrutable that I'm pretty sure it's a Japanese translation of Klingon.
I suspect the only proper solution is to have each library's Jamfile include an install rule to build the PDF and put it under dist/pdf. But with >60 libraries to patch and apparently the only way to submit a pull request for each (fork, clone, patch, test and submit), then do the same for master *and* develop branches, wait and hope that the maintainer is active and feeling favourable.... well you see my problem!
Apologies for the rant, John.
No, you're spot on. I suspect the modularisation script didn't modularise PDF docs. I found a ton of path breakage. I did however eventually get PDF docs working for proposed Boost.AFIO and which you can witness at https://ci.nedprod.com/view/All/job/Boost.AFIO%20Build%20Documentation %20PDF/lastSuccessfulBuild/artifact/boost-local/bin.v2/libs/afio/doc/g cc-4.6/debug/afio.pdf. Getting docs working correctly was the hardest part of the modularisation effort :( Anyway, here is the PDF docs build script used by the CI, this might be helpful to you: cd boost-local/doc ../b2 -a ../libs/afio/doc pdf This produces an output into: boost-local/bin.v2/libs/afio/doc/gcc-4.6/debug/afio.pdf It won't generate without error into boost-local/docs/pdf for some reason. My user-config.jam contains nothing special. I did install all the docbook tools into PATH though. Finally, my doc/Jamfile.v2 for AFIO, this took quite a lot of trial and error before it worked right: # Boost.AFIO # # This documentation machinery is derived from Boost.Geometry # Use, modification and distribution is subject to the Boost Software License, # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) project afio/doc ; # Auto-index, experimental. Commented otherwise does not build without. #using auto-index ; using quickbook ; path-constant here : . ; boostbook afio : afio.qbk : <dependency>Jamfile.v2 <dependency>generated/class_async_file_io_dispatcher_base.qbk <xsl:param>chunk.section.depth=4 # <auto-index>off # <auto-index-internal>on # <auto-index-verbose>off # <xsl:param>index.on.type=1 # <format>html <xsl:param>chunk.first.sections=1 <xsl:param>toc.section.depth=4 <xsl:param>toc.max.depth=4 <xsl:param>generate.section.toc.level=4 <xsl:param>boost.root=../.. <format>onehtml:<xsl:param>img.src.path=../../../../libs/afio/doc/src/ images/a/b/ <format>html:<xsl:param>img.src.path=../../../../libs/afio/doc/src/ima ges/a/b/ <format>xhtml:<xsl:param>img.src.path=../../../../libs/afio/doc/src/im ages/a/b/ <format>pdf:<xsl:param>img.src.path=../../../../../../libs/afio/doc/sr c/images/ <xsl:param>root.filename=afio <xsl:param>html.stylesheet=../../libs/afio/doc/html/myboostbook.css <quickbook-define>enable_index <include>$(here) <format>pdf:<xsl:param>boost.url.prefix=https://ci.nedprod.com/ <xsl:param>fop1.extensions=0 #<format>pdf:<xsl:param>xep.extensions=1 # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! <format>pdf:<xsl:param>fop.extensions=0 # No indent on body text: <format>pdf:<xsl:param>body.start.indent=0pt # Margin size: <format>pdf:<xsl:param>page.margin.inner=0.5in # Margin size: <format>pdf:<xsl:param>page.margin.outer=0.5in ; install pdfinstall : afio/<format>pdf : <location>. <name>afio.pdf <install-type>PDF ; explicit pdfinstall ; Hopefully some of the above will be useful to you. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/

-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Niall Douglas Sent: 11 August 2014 12:59 To: boost@lists.boost.org Subject: Re: [boost] [1.56] Sorry but no PDF doc build (build script has been broken)
On 11 Aug 2014 at 12:24, John Maddock wrote:
Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-( [snip] Which so freaking inscrutable that I'm pretty sure it's a Japanese translation of Klingon.
I did however eventually get PDF docs working for proposed Boost.AFIO and which you can witness at https://ci.nedprod.com/view/All/job/Boost.AFIO%20Build%20Documentation %20PDF/lastSuccessfulBuild/artifact/boost-local/bin.v2/libs/afio/doc/g cc-4.6/debug/afio.pdf. Getting docs working correctly was the hardest part of
Ah - so that's why I can never understand bjam diagnostic output! Neither my Klingon nor Japanese is up to it. the
modularisation effort :(
Nice (but I note a very curious effect of 'fl' and 'fi' being elided into a bold 'f' - as in fags for flags...) Otherwise, I have had no problems with building pdf docs for several embryonic libraries, but I added stuff to the jamfile, so I suspect that John is correct in saying that changes to *all* the docs jamfiles will be needed. I personally like the PDF versions - because you can search through the 'whole' document, something you can't do beyond a single HTML pages. GIT has strengths, but here it is just getting in the way? :-) Paul PS Tell me if I can help. --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830

On 08/11/2014 03:24 PM, John Maddock wrote:
Sorry folks, but as things stand there will be no PDF build of the docs for 1.56 as the build script appears to be hopelessly broken :-(
Each time I fix one Boost.Build error it just leads to another, and frankly at present I have neither time nor inclination to keep tracking these down. If anyone wants to experience some pain then trying to invoke bjam in /doc/pdf/ will give you an idea of some of the issues.
You mean :
Nope, I *think* that one is probably caused by you not having an FO processor registered in your user-config.jam, I get:
error: at ..\..\libs\bind\doc\Jamfile.v2:6 error: Attempt to redeclare already registered project id '/boost/doc'. error: Original project: error: Name: Jamfile<M:\data\boost\boost-1_56_0\doc> error: Module: Jamfile<M:\data\boost\boost-1_56_0\doc> error: Main id: /boost/doc error: File: ..\Jamfile.v2 error: Location: .. error: New project: error: Module: Jamfile<M:\data\boost\boost-1_56_0\libs\bind\doc> error: File: ..\..\libs\bind\doc\Jamfile.v2 error: Location: ../../libs/bind/doc
Which I can workaround, but then I get the same error from Boost.Context, work around that one as well
I would say that's fixing an actual bug in these jamfiles? Could you push these to git?
and then I get:
M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:397: in find-really *** argument error * rule project.is-registered-id ( id ) * called with: ( ) * missing argument id M:/data/boost/boost-1_56_0/tools/build/src/build\project.jam:600:see definition of rule 'project.is-registered-id' being called M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:457: in class@project-target.find M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:841: in resolve-reference M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:858: in targets.generate-from-reference M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:1245: in generate-dependencies M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:1302: in class@basic-target.generate M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:757: in generate-really M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:729: in class@main-target.generate M:/data/boost/boost-1_56_0/tools/build/src/build\targets.jam:272: in class@project-target.generate M:/data/boost/boost-1_56_0/tools/build/src\build-system.jam:707: in load M:\data\boost\boost-1_56_0\tools\build\src/kernel\modules.jam:289: in import M:\data\boost\boost-1_56_0\tools\build\src/kernel/bootstrap.jam:139: in boost-build M:\data\boost\boost-1_56_0\boost-build.jam:17: in module scope
Which so freaking inscrutable that I'm pretty sure it's a Japanese translation of Klingon.
Does the patch below make for a more readable complaint? diff --git a/src/build/targets.jam b/src/build/targets.jam index 3bd39a3..fb199ca 100644 --- a/src/build/targets.jam +++ b/src/build/targets.jam @@ -830,6 +830,10 @@ rule resolve-reference ( target-reference : project ) # Separate target name from properties override. local split = [ MATCH "^([^<]*)(/(<.*))?$" : $(target-reference) ] ; local id = $(split[1]) ; + if ! $(split) || ! $(id) + { + error "Malformed target reference $(target-reference)" ; + } local sproperties = ; if $(split[3]) {

Which I can workaround, but then I get the same error from Boost.Context, work around that one as well
I would say that's fixing an actual bug in these jamfiles? Could you push these to git?
Nope, but I've just filed some pull requests.
Does the patch below make for a more readable complaint?
No I see the same error as before. John.

Which I can workaround, but then I get the same error from Boost.Context, work around that one as well
I would say that's fixing an actual bug in these jamfiles? Could you push these to git?
Nope, but I've just filed some pull requests.
Does the patch below make for a more readable complaint?
No I see the same error as before.
Update: quite by chance I've found the error is produced by an install rule where the path to the target being installed is invalid. John.
participants (6)
-
Edward Diener
-
John Maddock
-
John Maddock
-
Niall Douglas
-
Paul A. Bristow
-
Vladimir Prus