$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r80026 - trunk/tools/build/v2/build
From: jurko.gospodnetic_at_[hidden]
Date: 2012-08-14 01:13:21
Author: jurko
Date: 2012-08-14 01:13:21 EDT (Tue, 14 Aug 2012)
New Revision: 80026
URL: http://svn.boost.org/trac/boost/changeset/80026
Log:
Quick & dirty fix to make Boost Build construct consistent Jamfile module names in cases when they are requested via different but equivalent location paths, e.g. 'd:/fOO' and 'D:\Foo\Bar\..'. This should fix currently reported Boost library documentation build failures but the used path normalization implementation still needs to be cleaned up.
Text files modified: 
   trunk/tools/build/v2/build/project.jam |    16 ++++++++++++++++                        
   1 files changed, 16 insertions(+), 0 deletions(-)
Modified: trunk/tools/build/v2/build/project.jam
==============================================================================
--- trunk/tools/build/v2/build/project.jam	(original)
+++ trunk/tools/build/v2/build/project.jam	2012-08-14 01:13:21 EDT (Tue, 14 Aug 2012)
@@ -166,6 +166,22 @@
         # Root the path, so that locations are always unambiguous. Without this,
         # we can not decide if '../../exe/program1' and '.' are the same paths.
         local normalized = [ path.root $(jamfile-location) [ path.pwd ] ] ;
+
+        # Quick & dirty fix to get the same module name when we supply two
+        # equivalent location paths, e.g. 'd:\Foo' & 'D:\fOo\bar\..' on Windows.
+        # Note that our current implementation will not work correctly if the
+        # given location references an empty folder, but in that case any later
+        # attempt to load a Jamfile from this location will fail anyway.
+        # FIXME: Implement this cleanly. Support for this type of path
+        # normalization already exists internally in Boost Jam and the current
+        # fix relies on the GLOB builtin rule using that support. Most likely we
+        # just need to add a new builtin rule to do this explicitly.
+        normalized = [ NORMALIZE_PATH $(normalized) ] ;
+        local glob-result = [ GLOB [ path.native $(normalized) ] : * ] ;
+        if $(glob-result)
+        {
+            normalized = $(glob-result[1]:D) ;
+        }
         .module.$(jamfile-location) = Jamfile<$(normalized)> ;
     }
     return $(.module.$(jamfile-location)) ;