Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-06-06 07:18:14


"Brian Braatz" <brianb_at_[hidden]> writes:

> boost-bounces_at_[hidden] wrote:
>> On Behalf Of David Abrahams
>> Sent: Tuesday, May 31, 2005 7:08 AM
>> To: boost_at_[hidden]
>> Subject: [boost] Re: Customer Friendlier Boost Installation
>>
>> "Brian Braatz" <brianb_at_[hidden]> writes:
>>
>> > HAVING said that here is the suggestion, reformed:
>> >
>> > Boostenvcheck.exe become s a program which LISTS the dependencies for
>> > your configuration.
>>
>> Can you show an example of what that output might look like? I don't even
>> have a clear idea of what you mean by "dependencies" or "your
>> configuration."
> [Brian Braatz Writes:]
>
> I must say, I need to fully absorb how bjam \ boost.build interoperate,
> until doing so, please understand the details of this idea maybe ill
> formed. I get it conceptually, but it is still a "black box" in my head.

<snip example of non-Boost environment check>

> when it says "passed"- I can quickly re-direct them back to their code.
> if they are not convinced, I can have them send me the report and I can
> look at it and try to determine where the issue is.

Well, let's look at the dependencies for Boost.

1. Boost.Build v2 (I'm ignoring v1 as we're going to retire it)

   A. Boost.Jam

      I. bjam in the PATH, or

      II. The contents of tools/build/jam_src available with which to
          build it. Should we check for every file? Just running the
          bjam build procedure does that by itself; does it make sense
          to build a redundant checker?

   B. The contents of tools/build/v2. Should we check for every file?

   C. Toolsets properly configured in user-config.jam and/or
      site-config.jam.

         Default versions of these configuration files ship with
         Boost.Build and are used unless the user supplies her own
         versions, so there's nothing to check for. Boost.Build
         itself is designed to detect when there are no toolsets
         configured or when toolsets are configured improperly.
         Should we really try to build a redundant checker?

2. The Boost header files for the libraries the user wants to use.
   Should we check for every file?

3. The libs/whatever/src and libs/whatever/build directories for any
   non-header-only libraries the user wants to use. Should we check
   for every file?

I can't think of anything else. So what, precisely, should we check
for, and what would the output look like if something were not found?
      
> ADDTIIONAL scenario:
>
> Lets say, in my compiler business, I have a scenario where I
> occasionally release to the users a bug fixed header file. I send out a
> mail with the new file and explicit instructions on where to put it.
>
> After I have released a few bug fixed header files, I find users
> complaining about weird problems. Turns out, I am now back to spending
> an dreadful amount of time on the phone only to discover 9 times out of
> 10 the user did not follow instructions. 1 time out of 10 there actually
> was a bug in something I released. 10 times out of 10, the customer is
> frustrated. Even if the customer REALIZES THEY made the mistake, it
> still leaves them frustrated with ME and my PRODUCT.
>
> So I elect to get a bit more extreme in my env checker.
>
> I upgrade it so that it adds to the report a hash of all the "things it
> depends on", i.e. header files, link.exe etc.
>
> So now, when the user has a problem, I have them send me the report. I
> can also make available to them a list of the hashes for the files which
> I have tested to "work".
>
> I spend less time supporting my product, and my customers are happier
> because I can keep them running much more effectively.
>
> I have put a system in place to "Introspect" the users environment. By
> doing so, I have decreased the amount of time I have to spend
> introspecting manually.

I understand the principle, but I don't understand how to apply it
effectively in our case.

> HOW THIS RELATES TO BOOST.BUILD:
> I need to understand boost.buiid better to give a better suggestion.
> Hopefully my example might inspire the "Dependancies" to shake out, even
> if I do not fully understand boost.build yet.
>
> I believe this STYLE of thinking can be applied, but I have to get my
> current boost things done before I can start down this track.
>
> As I said before, if the thinking here inspires someone to START
> something like this all the better . :)
>
> IF NOT, I intend on tackling this in the future. (I first have to become
> a expert in boost.build though :))

I disagree. Understanding what the system depends on does not
require understanding all its internals.

> I would like to eventually see something that allows someone to SPIT out
> a report, mail it to the list, and have the people on the list be able
> to IMMEDIATELY tell the person what could be horked, or why it is not
> building for them.

That'd be great. The question is, what gets reported?

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

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