Boost logo

Boost :

Subject: Re: [boost] [modular boost] non-linked headers
From: Bjørn Roald (bjorn_at_[hidden])
Date: 2013-12-02 19:08:54


On 12/03/2013 12:39 AM, Edward Diener wrote:
> On 12/2/2013 5:29 PM, Bjørn Roald wrote:
>> On 12/02/2013 10:45 PM, Edward Diener wrote:
>>> On Windows after the .\b2 headers step, there are these directories
>>> under the modular-boost/boost diectory which are not symbolic links:
>>>
>>> detail
>>
>> It is because they have more than one source directory, so a symbolic
>> link will not do what is needed.
>
> Symbolic links can be created to individual files also.

yes, but b2 headers create hard links rather than symbolic links
individual files on platforms supporting hardlinks. If you have no
simple way of checking if you got hardlinks, simply try to modify one to
see if you have a link or a copy. Windows have had hardlinks since at
least XP, so if it does not work for you it is a bug I think.

b2 headers will fall back to copy if that is the only thing supported I
think, or that is what it should do.

>> I do not think windows is changing
>> anything unless you are on a version not supporting symbolic links.
>>
>> $ find libs -name detail | grep include/boost/detail
>> libs/optional/include/boost/detail
>> libs/detail/include/boost/detail
>> libs/thread/include/boost/detail
>> libs/config/include/boost/detail
>> libs/smart_ptr/include/boost/detail
>> libs/utility/include/boost/detail
>> libs/conversion/include/boost/detail
>> libs/graph/include/boost/detail
>> libs/dynamic_bitset/include/boost/detail
>
> Just looking at detail we are evidently creating duplicating files
> rather than creating symbolic links to files.
>
> For instance in libs/detail, which is a submodule, we have
> allocator_utilities.hpp. In boost/detail we have
> allocator_utilities.hpp. Let us suppose that the
> libs/detail/allocator_utilities.hpp gets updated in git. When this
> happens, how is the boost/detail/allocator_utilities.hpp supposed to be
> updated if it is an entirely separate file ?

It wan't get updated. And that is a major pain for any platforms that
don't support links. But links should work on any "normal" development
host computer these days.

Look for hard links, on my linux box

$ cd boost/detail
$ touch bamse
$ ls -al
total 344
drwxrwsr-x 2 bjorn users 4096 Dec 3 01:03 ./
drwxrwsr-x 6 bjorn users 12288 Dec 2 23:08 ../
-rw-rw-r-- 2 bjorn users 2960 Dec 2 21:19 algorithm.hpp
-rw-rw-r-- 2 bjorn users 5216 Dec 2 21:18 allocator_utilities.hpp
-rw-rw-r-- 2 bjorn users 618 Dec 2 21:24 atomic_count.hpp
-rw-rw-r-- 2 bjorn users 644 Dec 2 21:25 atomic_redef_macros.hpp
-rw-rw-r-- 2 bjorn users 913 Dec 2 21:25 atomic_undef_macros.hpp
-rw-rw-r-- 1 bjorn users 0 Dec 3 01:03 bamse
-rw-rw-r-- 2 bjorn users 4414 Dec 2 21:18 basic_pointerbuf.hpp
-rw-rw-r-- 2 bjorn users 6358 Dec 2 21:18 binary_search.hpp
            ^
         referense count

note that reference count is 2 for all but "bamse"

--
Bjørn

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk