Skip to content

Hadrian command line doesn't properly escape path separators on Windows

Here's a command I get from Hadrian:

_build/stage0/bin/ghc.exe -Wall -Wcompat -fdiagnostics-color=never -hisuf hi -osuf o -hcsuf hc -static -hide-all-packages -no-user-package-db "-package-env -" "-package-db _build/stage1/lib/package.conf.d" "-this-unit-id base-4.16.0.0" "-package-id ghc-bignum-1.2" "-package-id ghc-prim-0.8.0" "-package-id rts-1.0.2" -i -iC:\Haskell\ghc-src\levity-primops\_build\stage1\libraries\base\build -iC:\Haskell\ghc-src\levity-primops\_build\stage1\libraries\base\build\autogen -iC:\Haskell\ghc-src\levity-primops\libraries\base -Irts/include -I_build/stage1/lib -I_build/stage1/libraries/base/build -I_build/stage1/libraries/base/build/include -Ilibraries/base/include -IC:/Haskell/ghc-src/levity-primops/_build/stage1/lib/x86_64-windows-ghc-9.3.20211028/ghc-bignum-1.2/include -IC:/Haskell/ghc-src/levity-primops/_build/stage1/lib/x86_64-windows-ghc-9.3.20211028/rts-1.0.2/include -I_build/stage1/lib -optc-I_build/stage1/lib -optP-include -optP_build/stage1/libraries/base/build/autogen/cabal_macros.h -optP-D_WIN32_WINNT=0x06010000 -outputdir _build/stage1/libraries/base/build -Wnoncanonical-monad-instances -optc-Wno-error=inline -optP-Wno-nonportable-include-path -c _build/stage1/libraries/base/build/GHC/Event/Windows.hs -o _build/stage1/libraries/base/build/GHC/Event/Windows.o -O -H64m -this-unit-id base -Wcompat -Wnoncanonical-monad-instances -XHaskell2010 -no-global-package-db -package-db=C:/Haskell/ghc-src/levity-primops/_build/stage1/lib/package.conf.d -ghcversion-file=C:/Haskell/ghc-src/levity-primops/_build/stage1/lib/ghcversion.h -dcore-lint -Wno-deprecated-flags -Wno-trustworthy-safe

This doesn't escape the path separators in the includes, which results in errors like:

    Could not find module ‘GHC.List’
    Locations searched:
      C\GHC\List.hi
      C\GHC\List.hi-boot
      Haskellghc-srclevity-primops_buildstage1librariesbasebuild\GHC\List.hi
      Haskellghc-srclevity-primops_buildstage1librariesbasebuild\GHC\List.hi-boot
      C\GHC\List.hi
      C\GHC\List.hi-boot
      Haskellghc-srclevity-primops_buildstage1librariesbasebuildautogen\GHC\List.hi
      Haskellghc-srclevity-primops_buildstage1librariesbasebuildautogen\GHC\List.hi-boot
      C\GHC\List.hi
      C\GHC\List.hi-boot
      Haskellghc-srclevity-primopslibrariesbase\GHC\List.hi
      Haskellghc-srclevity-primopslibrariesbase\GHC\List.hi-boot

where one can see the path separators are missing. Escaping the separators used for the includes, using \\ instead of \, fixes the issue.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information