$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Directory structure not quite right yet?
From: Peter Dimov (lists_at_[hidden])
Date: 2015-01-05 19:49:01
Bjørn Roald wrote:
> I like the intentions here.  I think having a platform agnostic tool for 
> source level packet management is a good way to go.  I would be more 
> skeptical if you intended make the next generic packet manager from 
> scratch for binary distribution.
Supporting binary distributions is actually a very interesting idea. It 
turns out that the only thing that prevents the current bpm to be able to 
install a binary distribution is that it requires that a module is 
completely contained into a single directory (libs/$module), so it will not 
permit the downloaded archive to extract 
stage/lib/libboost_$module_whatever.
I could however package the pre-built binaries in libs/$module/stage if I 
had the inclination, and then make bpm symlink 
stage/lib/libboost_$module_whatever to 
libs/$module/stage/lib/libboost_$module_whatever in the exact same manner as 
headers are handled.
Food for future thought.
> A source packet manager, like bpm, should copy headers from the installed 
> modules' into the $BOOST/include/boost directory.  The bpm tool should not 
> depend on headers in $BOOST/boost, nor depend on ./b2 for staging headers 
> in $BOOST/boost or $BOOST/include/boost.
That is what it does, yes.
> Further bpm should avoid any symbolic link, junction, or hard link 
> trickery like "b2 headers" attempts, it is just too tricky to do right for 
> everyone, in particular automated symbolic link creation on Windows is 
> hard and just not worth it. We are talking about an installation, so keep 
> it simple.
Well... I already wrote the code to symlink/junction/hardlink things, so 
unless it turns out to create more problems than it solves, I'd rather keep 
it. :-)
> For the b2 build I would suggest changing jam files so b2 is specifying 
> a -I for each module the build depend on, rather than a single -I 
> $BOOST/include to where bpm staged the headers.
The problem here, as I already mentioned in the other thread, is that the 
library Jamfiles will need to be maintained with the correct dependency 
information so that the usage-requirements correctly add the required 
include directories.
I am not saying that this will not be a good thing to do, at some 
unspecified future point. But I wanted to get things working with minimal 
changes to the status quo.
> I would also like to suggest having bpm install all modules, including 
> build in a "modules" folder together with a custom bootsstrap and set of 
> Boost.Build project root files, and stage libraries in a "lib" folder 
> rather than stage/lib.
It would've been nice for the current structure to have all modules in 
modules/ or components/, rather than some in libs/ and some in tools/. As it 
is, I have a special case for the 'build' module to be in tools/build. But 
as I said, I wanted bpm to work on the current structure. (Well, I did move 
the header links to include/, but this was a very easy change because (a) 
they are created by bpm and (b) the changes to Jamroot were trivial.)