|
Boost-Build : |
Subject: [Boost-build] <install-source-root> in Windows doesn't work with case-insensitive matching
From: Jose . (kasty.jose_at_[hidden])
Date: 2014-03-21 20:45:43
Hi,
this seems to be a bug that was not present in older versions of boost
build. Consider the following folders structure:
/C:/Jam/AaAa/b/c/file.txt
/C:/Jam/Jamroot
In the BB bundled with boost 1.55 the following Jamroot doesn't work as
expected in Windows:
import path ;
using msvc ;
path-constant TOP : . ;
install dist : [ path.glob-tree $(TOP)/AaAa : *.* ] : <location>$(TOP)/z
<install-source-root>$(TOP)/AAAA ;
always dist ;
There seem to be 2 reasons:
1) path.glob-tree sometimes, at circumstances that I was not able to
isolate in a small program, lower case some parts of a path but not all. I
mean it could return something like:
/C:/Jam/aaaa/b/c/file.txt (see that "aaaa" is lower-case but "Jam" is not)
I would understand that all characters are converted to lower-case for case
insensitive matching, but some of them don't, which is weird. As I say, in
small programs it seems to work ok, I only found it in bigger ones.
2) This is probably worse: <install-source-root> doesn't seem to down-case
before trying to match. Hence, the install rule results in this:
common.copy C:\Jam\z\..\AaAa\b\c\file.txt
when in fact it should look like this:
common.copy C:\Jam\z\b\c\file.txt
Any clue what happened and how to solve it? (at least problem 2)
Regards.
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