[GHC] #16353: ./validate --hadrian doesn't quite work on Windows

#16353: ./validate --hadrian doesn't quite work on Windows -------------------------------------+------------------------------------- Reporter: alpmestan | Owner: (none) Type: bug | Status: new Priority: high | Milestone: Component: Build System | Version: 8.7 (Hadrian) | Keywords: | Operating System: Windows Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- On my Windows machine, using an msys2 shell as advised by the Windows- specific pages of GHC's trac, I managed to get `./validate --hadrian` (from [https://gitlab.haskell.org/ghc/ghc/merge_requests/326 this MR]) to go pretty far. I did manage to make it produce a binary distribution after some serious wrangling, to have it installed somewhere nearby and it ends up choking on [https://gitlab.haskell.org/alp/ghc/blob/wip/alp/hadrian- validate/validate#L258 this command] which tries to configure an `xhtml` build using `Setup.hs` scripts. When I looked at the verbose output, I ended up seeing that Cabal calls `findProgramVersion` for the ghc that I pass using `--with-ghc=...`, with `--numeric-version` as the only argument. And this ends up returning `""` -- which is what's returned when exceptions are thrown apparently, judging from [https://github.com/haskell/cabal/blob/c2cf30cc50109f2ffa30fd7affe9c22e1adf92... findProgramVersion's implementation]. Now, where this gets "interesting" is that I've tried to run `./Setup configure --with-ghc=X` for different values of `X`... - (1) `./Setup configure --with- ghc=/path/to/ghc/tree/_validatebuild/stage1/bin/ghc` works - (2) `./Setup configure --with- ghc=/path/to/ghc/tree/_validatebuild/bindist/ghc-8.6.20190220/bin/ghc` works - (3) `./Setup configure --with-ghc=/path/to/ghc/tree/bindisttest/install dir/bin/ghc` **doesn't work** (3 spaces between `install` and `dir`) - (4) `./Setup configure --with-ghc=/path/to/ghc/tree/a/b/bin/ghc` **doesn't work** (1) is our stage 2 GHC executable, the real one, produced right at this path. (2) is a copy of (1) that we put under this `bindist/ghc-X.Y.Z/` dir, which we end up putting wholesale in an archive. (3) is where `./validate` (whether with `--hadrian` or not) installs binary distributions. The install process goes fine, I can even use the GHC in question and evaluate `.../bin/ghc -e 'Data.Text.IO.putStrLn (Data.Text.pack "hello")'` without any problem, or get the expected output with `.../bin/ghc --numeric-version`. But the `configure` step just won't have it. I initially thought this was due to the directory with a space in it, one way or another, so I decided to try and install the bindist manually in a place with no spaces in the directory names, (4). (4) doesn't work either though. The main difference between 1) 2) on one hand, and 3) 4) on the other, is that in the first two cases I'm passing the path to an actual stage 2 GHC executable, while in the case of 3) and 4) I'm pointing to wrapper scripts, with the actual executables being under `$topdir/lib/bin/`. I'm however not sure of what's going on, it seems to be like this should work, any help is appreciated. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16353 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC