[Omake] SVN Commit: OMake Build System [0.9.8.x] (Rev. 11110)

Jason J. Hickey jyh at cs.caltech.edu
Mon Jun 25 11:08:22 PDT 2007


Addressed bug #679.  Consider the problem code,

    Shell. +=
       foo(argv) =
          cd src
          pwd
          x(5)
    
    foo 10

The issue is that an alias "cd src" is called within another alias
"foo 10".  Aliases get new channels, just like processes, so "cd src"
is called with stdin=4,stdout=5,stderr=6.

Omake_shell_job has an explicit test that forces an alias to be a
pipeline unless stdout=Unix.stdout&&stderr=Unix.stderr.  So "cd src"
is run in a pipeline, and it has no effect.

The fix is to take out the test, which isn't needed in this particular
case.  For rules, it *is* needed, because rules send their output through
a pipe to the output processor (the +/- lines, etc.), which is internal
to omake.  If an alias generates a lot of output, it *must* be
run in a subprocess/thread, or omake will deadlock.

----
Changes:
    +12 -1	omake-branches/0.9.8.x/src/shell/omake_shell_job.ml
    Added	omake-branches/0.9.8.x/test/shell/Test2/
    Added	omake-branches/0.9.8.x/test/shell/Test2/OMakefile
    Added	omake-branches/0.9.8.x/test/shell/Test2/OMakeroot
 
A hyperlinked version of this commit is available at
http://svn.metaprl.org/commitlogs/omake/2007-06.html#07/06/25.11:08:22



More information about the OMake-CVS mailing list