From: Rene Rivera (grafik.list_at_[hidden])
Date: 2005-11-03 12:03:25
I just put a reworked version of Reece's patch into CVS. The
functionality is the same but the implementation a slightly different in
some places to: reduce the amount of code (by reusing existing bjam
functions), doesn't have buffer size limits, has the hooks for
implementing TMPNAME and TMPFILE (but are not implemented yet), and is
more io efficient. I'll work up documentation soon.
Reece Dunn wrote:
> STDOUT and STDERR are easy: just compare the string for $(STDOUT) and
> $(STDERR), then associate the output with the corresponding FILE *.
Even though I left the implementation of those in. They turn out to not
work as I was hoping and they are currently disabled. The problem is
that at the time the @() is expanded out it's done during the expansion
of the action text. That expansion is much earlier than the execution of
the action text so that output goes to the equivalent of nowhere.
> The harder ones to expand would be $(TMPPATH), $(TMPNAME) and $(TMPFILE)
> as these would require hooking into the expand.c logic in order to add
> the path_tmpdir() and tmpnam() outputs to the string expansion. I am
> leaving those for the moment, unless you can write them :).
I did, except for having them calculate the values :-) Basically in
variable.c there are now some hard-wired variables (in var_get). So we
just need to implement the tmpnam functionality and hook it in there.
> Note that there is a problem with the whitespace expansion in
> var_string_file that I can't figure out.
Well it's either fixed in the way I wrote it or I didn't notice. The one
whitespace bug I did notice was of variables getting an extra space at
the end of the expansion. AFAICT it's a long standing "bug" in Jam var
expansion, so it's now fixed in both $() and @() expansion.
Note, I did not make the BBv2 response file changes as I'd like you to
build the new bjam and try it out before really using the @()
functionality. So I await another, or the same if it just works, patch
And another note, I made some local changes to the print module and I
have it now consuming about 50% less memory :-)
And I keep remembering notes... The TMPDIR etc. vars as I implemented
them can be used outside of the @() expansion.
-- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim - Grafik/jabber.org
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