Boost logo

Boost-Build :

Subject: Re: [Boost-build] issue with modularized contrib/boost.jam
From: Tom (tabsoftwareconsulting_at_[hidden])
Date: 2014-08-11 17:12:40


I'm resending this as my previous followup seems to be a mess. Sorry!

Roland Schwarz <roland.schwarz_at_[hidden]> writes:

> On 27.04.2014 22:36, wrote Tom:
>> Please see https://svn.boost.org/trac/boost/ticket/9958 for the
attachment.
>>
>> I have been using contrib/boost.jam for many years now and it works
>> really well.
> Nice to hear!
>
>> I'm not sure if there are other people using this or if
>> this is a normal use case, but it has worked for us.
> Me at least ;-) since I am the author. We are still using it, but I
> have not managed to catch up our boost tree to use the latest move to
> modular boost. I just managed as an intermediate step to get the most
> recent boost.build to work on my previous software tree.

Thanks for such a nice little utility! It would be great to get this
functionality into Boost itself. Is there a reason that it is in
contrib and not an official feature of the Boost build infrastructure?
Do you have an approach that you think would work for it?

> As soon as I catch up I certainly will look into the boost.jam as well
> since I will need it.
>
> <snip>
>>
>> Questions:
>>
>> - Has /boost//headers been deprecated/removed from contrib/boost.jam?
> It is under contrib, and as I can see from the latest sources it is
> still there, but is not copied over when you do the "install"
> target. I copied it over manually.

I typically refer to it directly in a source release.

>> - Is contrib/boost.jam still supported?
> Hmm, what does supported mean for you? If you mean: will I change the
> code if you pay me money, I have to say no. If you can wait until I
> fix the code bacause I need it myself, I would say yes. If you find
> someone else fixing the code (money or not) the answer also is yes.
> (Sorry for beeing boring schoolmasterly ;-)

I suppose I meant "does anybody else still care about it?". It sounds
like you do, though it's obviously not an official feature.

> Thank you in any case that you have pointed out the problem, I
> certainly will come back to it. If you have any new findings on the
> issue please let us know on the list!

I've been working on integrating src/contrib/boost.jam and Boost.Build
(from Boost 1.56.0), and Boost 1.56.0 with my own project which had
been using the same utilities from Boost 1.51.0 and things are very
close to working properly. I am able to build with Boost.Build from
Boost 1.56.0 and boost.jam, but there is one problem. Whenever I
request a build, it thinks that many of the files (it looks like
anything that depends on /boost//headers) is out of date and is
rebuilt.

This can be seen in a minimal program attached as a .zip file. If
you run b2 with "b2 -d+12", you will see that the headers appear as
"touched", which forces the rebuild of exp1 every time.

It may be some kind of conflict between the Boost 1.56.0 Jamroot and
boost.jam. What I'm seeing is that renaming or removing the "alias
headers ;" line from boost.jam does not affect the build at all. I
would have expected that would be required. So it seems that
/boost//headers is coming from somewhere else. There is also a
"headers" target (and a variable) defined in the Jamroot of Boost
1.56.0.

If I run the same thing with Boost 1.51.0 (and the Boost.Build from
that version), things work as expected. However (and shockingly), if
I remove "alias headers ;" from boost.jam here everything still
works where I thought it would not be able to find it. I thought that
/boost//headers came from that alias, but it doesn't seem to. Is that
intended?

I haven't dug any further on this and while I understand some of what
is going on in boost.jam, I haven't understood it fully, not do I
understand how it interacts with the Boost Jamroot. Do you have any
insight into what I might try?

Note that in my Boost.Build files, I had used "<library>X" when
referencing "alias X ;", but apparently that had been changed
(deprecated?) at some point and now should be "<dependency>X". Other
than that, I've made no changes to my files from Boost 1.51.0 to Boost
1.56.0.

By the way, is there somewhere such as Trac I should report this or is
this list most appropriate?

Thanks!
Tom
        




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