[Omake] writing to console in .STATIC?

Mike Furr furr at cs.umd.edu
Thu Sep 6 07:12:40 PDT 2007

OMake is failing to build on the Debian auto-builders.  The 
problem seems to be that it is trying to write *directly* to the console 
(instead of stdout/stderr) while in .STATIC blocks.  One can see the 
problem with:

  $ make all >/dev/null 2>&1   # <- should produce no output
--- Checking for ocamlfind... (found /usr/bin/ocamlfind)
--- Checking for ocamlc.opt... (found /usr/bin/ocamlc.opt)
--- Checking for ocamlopt.opt... (found /usr/bin/ocamlopt.opt)

which comes from the .STATIC block in OCaml.om.  However, the Debian 
auto-builders build each package in an environment with no console, so 
the build fails exactly when it gets to that point:

   OMAKEFLAGS= OMAKEPATH=lib ./omake-boot --dotomake .omake 
--force-dotomake -j2 main
   *** omake: reading OMakefiles
   --- Checking for gcc... (found /usr/bin/gcc)
   --- Checking for g++... (found /usr/bin/g++)
   *** omake error:
      File mk/defaults: line 124, characters 1-41
      write(): Bad file descriptor
   *** omake error:
      File mk/defaults: line 124, characters 1-41
      command exited with code: 123
   make[1]: *** [all] Error 123
   make[1]: Leaving directory `/build/buildd/omake-'
   make: *** [build-stamp] Error 2

Note this would also be a problem if you used a similar setup to do 
nightly builds of a project that used OMake, so I think it would be best 
if OMake tried to only use stdout/stderr for output (or at least fall 
back to those when the console is not available).


More information about the Omake mailing list