runghc can't find ghc-stage2 on a Windows build
(Originally reported on the ghc-devs mailing list.)
After completing a stage-2 GHC build on Windows, runghc does not work at all. Calling it on any file will result in the following error:
$ .\ghc\inplace\bin\runghc.exe Z.hs
runghc.exe: C:\Users\ryanscot\Documents\Software\ghc\inplace\bin\ghc:
rawSystem: does not exist (No such file or directory)
A workaround is to make a symlink to ghc-stage2 with ln -s ghc-stage2.exe ghc.exe in MSYS2. This leads me to believe that Windows' runghc is always looking for ghc even when it should be looking for ghc-stage2 in this particular scenario.
This code in runghc looks highly suspect:
let ghc = takeDirectory (normalise path) </> "ghc"
in uncurry (doIt ghc) $ getGhcArgs args'
It probably shouldn't be hardcoding the name "ghc" here. On Unix-like OSes, this doesn't appear to be an issue since runghc invokes a shell script that detects the proper ghc name and invokes the runghc executable. On the other hand, I believe on Windows calling runghc directly invokes the executable, so the proper name detection never happens.
What would be a proper fix for this? I'm tempted to just have runghc check for ghc-stage2's existence and fall back on ghc, but I'd like to get the opinions of people familiar with the build system so that the fix is robust.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.11 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Build System |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | thomie |
| Operating system | |
| Architecture |