Boost logo

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