Boost logo

Boost-Build :

From: Jurko Gospodnetiæ (jurko.gospodnetic_at_[hidden])
Date: 2008-07-04 03:06:33


[I'm CCing this directly to some people because Eric Niebler flagged
this issue as a showstopper for the Boost library 1.36 release.]

   Hi.

> It was reported that Boost accumulators library documentation fails to
> build due to Boost Build attempting to create some folder twice.

   Here's a modified version of a patch suggested by Daniel James in the
'Re: [Accumulators] Problem building the combined boost documentation.'
thread.

   It makes Boost Build's MkDir action not report an error if a folder
it wants to create already exists.

   I do not suggest this as a permanent solution but only as a quick-fix
to allow Boost documentation to be generated correctly. Code comments
and action names indicate this as well.

   It would be great though if people with different OSs could check to
make sure we have not accidentally broken the mkdir functionality there.
I've checked that it works correctly on Windows under cmd.exe & Cygwin
bash.exe using both native Windows bjam.exe and the one with built in
cygwin support.

   Eric & Daniel, could you test whether this works around the
documentation generation problems on your end?

   If there are no complaints I'll commit this patch in a few days.

   Best regards,
     Jurko Gospodnetiæ

Index: tools/build/v2/tools/common.jam
===================================================================
--- tools/build/v2/tools/common.jam (revision 47069)
+++ tools/build/v2/tools/common.jam (working copy)
@@ -576,7 +576,14 @@
         $(<)-mkdir = true ;
 
         # Schedule the mkdir build action.
- MkDir1 $(<) ;
+ if $(NT)
+ {
+ MkDir1-quick-fix-for-windows $(<) ;
+ }
+ else
+ {
+ MkDir1-quick-fix-for-unix $(<) ;
+ }
 
         # Prepare a Jam 'dirs' target that can be used to make the build only
         # construct all the target directories.
@@ -615,6 +622,21 @@
 }
 
 
+# (todo)
+# The following quick-fix actions should be replaced using the original MkDir1
+# action once Boost Jam gets updated to correctly detect different paths leading
+# up to the same filesystem target and triggers their build action only once.
+# (todo) (04.07.2008.) (Jurko)
+actions MkDir1-quick-fix-for-unix
+{
+ mkdir -p "$(<)"
+}
+actions MkDir1-quick-fix-for-windows
+{
+ if not exist "$(<)\\" mkdir "$(<)"
+}
+
+
 actions piecemeal together existing Clean
 {
     $(RM) "$(>)"


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