Status of GHC testsuite driver on Windows

Ben Gamari ben at smart-cactus.org
Mon Oct 17 00:32:02 UTC 2016


So I spent my weekend in the jungles Windows compatibility layers. I'll
spare you the details as they are gruesome but here's a brief summary,

 * There are a few nasty bugs currently in msys2 which affect the GHC
   testsuite driver:

    * Mingw Python packages are terribly broken (#12554)

    * Msys Python packages are also broken, but differently and only
      with msys2-runtime >= 2.5.1 (#12660)

    * Both of these issues manifest as a failure to remove test
      directories; unfortunately this error is hidden by the testsuite
      driver and you will likely instead see an error of the form,

        [Error 183] Cannot create a file when that file already exists: ...

      from os.makedirs. This issue appears to happen more often when
      threading is enabled in the testsuite driver (e.g. `make test
      THREADS=4` after disable the check disabling it in runtests.py),
      but can also happen in single-threaded mode.

 * If you see this issue do the following,

    * Check #12554 for comments suggesting that the issue has been fixed
      upstream. If so, update msys2.

    * Run `pacman -Q msys2-runtime` and verify that you are running a
      2.5-series runtime

    * If you are running a 2.5-series runtime, you can simply downgrade
      to the last-known-good version, 2.5.0, by running,

        $ wget http://repo.msys2.org/msys/x86_64/msys2-runtime-2.5.0.17080.65c939c-1-x86_64.pkg.tar.xz
        $ pacman -U msys2-runtime-2.5.0.17080.65c939c-1-x86_64.pkg.tar.xz

    * If you are running any other runtime version then sadly you will
      need to reinstall msys2. This base tarball,
      http://repo.msys2.org/distrib/x86_64/msys2-base-x86_64-20160719.tar.xz,
      is known to work.

    * After you have an msys installation with function runtime, you'll
      need to ensure that the testsuite driver runs with the msys
      python interpreter (located in /usr/bin/python), not the mingw
      interpreter (located in /mingw*/bin/python). This can be
      accomplished with `make test PYTHON=/usr/bin/python`.

      Unfortunately there's no easy way of doing this with `./validate`.
      The easiest (but terrible) hack is,

         $ cp /usr/bin/python /mingw64/bin/python

 * Armed with this knowledge, I should soon be able to bring the Windows
   build bot back online.

 * At some point someone is going to need to track down these bugs in
   CPython and/or msys2 if Windows support is going to remain viable.
   If you have time and interest in a challenge please get let me know.

Now to go drown my sorrows.

Cheers,

- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 454 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20161016/54b838ab/attachment.sig>


More information about the ghc-devs mailing list