un/dosifyPath in SysTools.lhs bug?

I'm trying to build ghc (the 5.04.3 source tarball) on Windows, but right after the ghc-inplace is written and is used to build something, ghc fails. If I cut and paste the command* and run it with -v, it's evident that ghc is trying to execute /cygdrive/c/mingw/bin/gcc, which is the gcc that I ./configured --with-gcc. But ghc is a mingw executable! So I think runSomething in SysTools.lhs, or whatever calls it, might have a bug. From the comments of runSomething it is clear that it expects a 'native' program. Anyway, the problem can be fixed by changing: cmd_line = pgm ++ ... to: cmd_line = (dosifyPath pgm) ++ ... And dosifyPath and undosifyPath (#if defined(mingw32_HOST_OS)) have no regard for drive letters! Shouldn't they be something like: unDosifyPath xs = case (subst '\\' '/' xs) of drive : ':' : rest -> "/cygdrive/" ++ (drive : rest) xs' -> xs' dosifyPath stuff = subst '/' '\\' real_stuff where -- fully convince myself that /cygdrive/ prefixes cannot -- really appear here. cygdrive_prefix = "/cygdrive/" real_stuff | cygdrive_prefix `isPrefixOf` stuff = case (dropList cygdrive_prefix stuff) of drive : rest -> drive : ':' : rest | otherwise = stuff That comment re: cygdrive in dosifyPath is rather ominous... but those changes at least allow ghc-inplace to start compiling the next thing... The build then barfed in rts doing: ../../ghc/compiler/ghc-inplace -O2 -package-name rts -O -Rghc-timing -c Exception.hc -o Exception.o Because Exception.hc couldn't #include "Stg.h"; it seems the GHC include path was specified as a couple of Options instead of a single FileOption, which meant showOptions didn't dosify it. Doing a quick hack in showOptions to peek at Options for the /cygdrive/ prefix keeps the build going. What I'm wondering is: Is anyone building GHC on Windows, and if so, how do you do it? Thanks, Dominic Cooney * The command is: ../../ghc/compiler/ghc-inplace -optc-mno-cygwin -optc-O -optc-Wall -optc-W -optc-Wstrict-prototypes -optc-Wmissing-prototypes -optc-Wmissing-declarations -optc-Winline -optc-Waggregate-return -optc-Wbad-function-cast -optc-Wcast-align -optc-I../includes -optc-I. -optc-Iparallel -optc-DCOMPILING_RTS -optc-fomit-frame-pointer -optc-DDLLized -O2 -package-name rts -O -Rghc-timing -hisuf dll_hi -hcsuf dll_hc -osuf dll_o -c Main.c -o Main.dll_o
participants (1)
-
Dominic Cooney