From: Michael Stevens (Michael.Stevens_at_[hidden])
Date: 2004-08-19 14:34:40
> Whenever I try to launch bjam on my windows XP Home machine, I get the
> stack-trace as copy-pasted at the bottom of this mail.
> The problem seems to be that the make-NT at some point is called with an
> empty argument (i.e. if I ECHO the arg, nothing is printed). Inside
> make-NT path.join is called which can not handle an empty argument. Now
> I saw that the make-UNIX rule tests for an empty argument but the
> make-NT rule does not. So should make-NT not peform the same test as well?
Your problem is quite interesting. The directory structure must have something
very unusual about it to cause the empty path element. Maybe it would be good
to add a few ECHO into common.find-tool to sequence.transform to see what is
being picked up. I am not sure why there should be code to handle this is
UNIX and not on NT however.
> Anyway I tried this, so I added to the beginning of make-NT:
> ECHO "native in make-NT: " $(native) ;
> if $(native) = ""
> ECHO "OK, found the empty one, going to return" ;
> return "." ;
> ECHO "Ohoh, still continuing" ;
> And indeed, the if-branch is choosen when $(native) is empty. But
> apparantly bjam ignores the return statement in the if-branch and
> continues after the if-block and thus still fails because of the empty
> argument to path.join.
This is correct. See jam_src/Jam.html.
"Rules can return values ... .... Note that 'return' doesn't actually cause a
return, i.e., is a no-op unless it is the last statement of the last block
executed within rule body. "
All the best,
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