Boost logo

Boost-Build :

From: David Abrahams (dave_at_[hidden])
Date: 2005-08-21 06:32:13

Rob Stewart <stewart_at_[hidden]> writes:

> Like some others writing recently, I found that
> doesn't paint the
> whole picture.

It's great that you're getting involved with this, but you really
should be connecting with Andrey Melnikov and Hendrik Schober,
who are supposedly working on a rewrite. Editorial comments on a
document that is about to be replaced are not necessarily going to
have much of an impact. Much of what you write below is a rehash of
stuff we've already discussed. In fact, you were clearly involved in
the thread:

As you can see, unless someone actually *does the work*, the best
editorial comments in the world won't have an impact. I know Schobi
got overwhelmed, and I'm sure Andrey could use some help with the
English language part. Why don't you throw in with them?

> In step five, the table describing the actions was a bit
> confusing. Some options were described with "<something>" values
> and others with "SOMETHING" values. I thought the latter were
> e-var references at first.

They are, in fact, or can be; bjam picks up all the environment
variables when you run it.

> Also in that table, there is mention of cygwin as a special
> case. Elsewhere, only *nix and windows are mentioned. Is cygwin
> considered *nix or windows in those other contexts?

Unix. I don't think that needs to be specially explained there,
although it should be explained that bjam acts like Cygwin is Unix if
you build bjam under the Cygwin shell, but a Windows build of bjam can
still build things using the Cygwin tools.

<snip rehash stuff>

> Now for the real problem: When I ran bjam -sTools=gcc
> --prefix=d:/dev/boost install, I was surprised to find that bjam
> wouldn't create that directory.

Did you get an error message saying it couldn't create _that_
directory? If not, why did you presume that was the problem?

> I created the directory and
> reran the command. Much to my chagrin, it then couldn't create
> d:/dev/boost/lib. I created that directory and reran the
> command. Finally, I thought, it needed but couldn't create
> "bin." Not "d:/dev/boost/bin" or some other fully qualified
> directory, but "bin." I tried creating d:/dev/boost/bin, but
> that didn't help. I didn't try creating $PWD/bin because I
> didn't really want files there. Since
> doesn't mention a
> bin directory, I didn't know where else to create it.
> So, I could't seem to get bjam to build anything and it wasn't
> helping me to understand what was wrong. The error message was
> simple:
> MkDir1 bin
> spawn: No such file or directory
> This was in cygwin, so perhaps there's some confusion as to what
> should be on my path. At present, it's pretty simple:
> ~/bin:/bin:/usr/bin. Does bjam need more than that? If so,
> what? I don't know what MkDir1 is, so I was at somewhat of a
> loss.
> On a lark, I decided to set --builddir and rerun the command. I
> set it to d:/tmp/build and tried again. Lo and behold! It
> almost worked. The error then read:
> MkDir1 d:\tmp\build\bin

You're clearly using a Windows build of bjam to build under a cygwin
shell. That isn't going to work out... although maybe we should make
it work.

> spawn: No such file or directory
> That immediately made me wonder three things:
> 1. Why couldn't bjam create the bin subdirectory?

Unclear. problames from spawn usually mean there was something wrong
with the command line. Please try adding -d+2 to your bjam

> 2. Why did bjam need to create a bin subdirectory instead of
> just using the directory I specified using --builddir?

Because that's the way it works. Why do you care what it creates
underneath your builddir?

> 3. Why didn't the error message indicate that "bin" was the
> --builddir value so I could know which parameter to
> manipulate?

a. I'd say

MkDir1 bin
spawn: No such file or directory

pretty clearly indicates where the problem is

b. The spawn message comes from the windows shell and is beyond bjam's

> Well, the dance wasn't over yet. The next directory bjam wanted,
> but couldn't create was d:/tmp/build/bin/boost! Yes, I created
> that directory and tried again. Next I had to create
> d:/tmp/build/bin/boost/libs. Then it was
> d:/tmp/build/bin/boost/libs/date_time. I created that directory,
> too. Finally, I got this message:
> MkDir1 d:\tmp\build\bin\boost\libs\date_time\boost_date_time.dll
> spawn: No such file or directory
> At that point, I gave up. (No doubt I should have given up
> sooner!)
> Adding insult to injury were the interminable waits while bjam
> figured out over and over what needed to be done.
> Clearly, this isn't how things are supposed to work. Any ideas?

Lets' see the output with -d+2. Heck, add -d+4 too, for good measure.
And let's take this over to the jamboost list:

Dave Abrahams
Boost Consulting

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at