Friends
My Windows build (new laptop) got stuck again, but this time I managed to work 
out what is going on.  This email is just to record the issue; I'll add 
something to the wiki.
tl;dr: a MSYS build will fail in a deeply strange way if your MSYS bin 
directory doesn't take priority over the windows/system32 director.
Symptom: "sh libtool" hangs indefinitely.  The process manager shows an extant 
"cmd" and "sed", but nothing else.  libtool is a shell script that comes from a 
tarball, and is unpacked into libraries/integer-gmp/gmp/gmpbuild/libtool
Cause: libtool invokes the following command line (in the function 
func_convert_coer_msys_to_w32:
     cmd /c "echo blah"
and pipes the result to sed.  But MSYS mangles the command line to turn slashes 
into backslashes.  So the actual command line is more like
     cmd \c "echo blah"
which does something entirely different, and indeed hangs waiting for input on 
stdin.
Solution: So how did this ever work on any MSYS installation?  Because

*         msys/1.0/bin has a little script "cmd" which hands off to the real 
c:/windows/system32/cmd

*         MSYS does not mangle the command-line for programs in msys/1.0/bin

*         On my old laptop, msys/1.0/bin was in my path before 
c:/windows/system32.  So plain "cmd" gets the script, and MSYS does not mangle 
the command line. The script passes arguments on unchanged to the real cmd.

*         NB: c:/windows/system32 is in the "system" path, which precedes the 
"user" path.  So no amount of fiddling with the "user" path will fix this.  
There are two solutions:

o   Modify the system path

o   Use a .bashrc file to prepend the stuff you need
This is pretty subtle stuff.
Simon
Microsoft Research Limited (company number 03369488) is registered in England 
and Wales
Registered office is at 21 Station Road, Cambridge, CB1 2FB

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to