
Rob Stewart <stewart@sig.com> writes:
Like some others writing recently, I found that http://www.boost.org/more/getting_started.html 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: http://thread.gmane.org/gmane.comp.lib.boost.devel/124641 http://thread.gmane.org/gmane.comp.lib.boost.devel/126320 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 http://www.boost.org/more/getting_started.html 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 command-line.
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 control.
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: http://www.boost.org/more/mailing_lists.htm#jamboost -- Dave Abrahams Boost Consulting www.boost-consulting.com