Boost logo

Boost-Build :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-12-21 00:31:57


----- Original Message -----
From: "Anichini, Steve" <Sanichini_at_[hidden]>
To: "'David Abrahams'" <david.abrahams_at_[hidden]>
Cc: <jamboost_at_[hidden]>
Sent: Tuesday, March 12, 2002 5:24 PM
Subject: RE: boost jam patches

> Trying echo inside an action in a jamfile stops short way before 4095
(in
> fact, the 2047 limit seems about right).
>
> I think there is just something screwy with the way jam shells out
commands
> on NT, because if a Python script can call os.system("echo...") with
up to
> 4095 chars, there's no reason jam shouldn't be able to also.
>
> Delving deep into python's source, it looks like its just calling the
C
> runtime system() call when os.system() is called.
>
> So a short table from my tests:
> (* = filler for a lot of characters)
>
> method command
> limit
> python os.system() "cmd.exe /q/c echo"*">foo.txt" 4095 chars
> batch file "echo "*">foo.txt"
> ~2047 chars
> jam "echo "*">foo.txt"
> ~2047 chars
>
> So it seems that the batch file is the limiting factor. It does seem a
shame
> since once could double the length of commands if jam didn't use batch
files
> and invoked cmd.exe directly. It would make the implementation for
> multi-line commands very tricky tho, and maybe not worth the risk or
pain.
>
> anyway, looking at what the "piecemeal" keyword does, i think i can
solve
> the problem we were having and set the maxline() back to where it was.

If you want more length, set JAMSHELL to "%", which overrides the .bat
file as long as the command is a single line.

-Dave

 


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