Build failure with GHC-7.8.4 (x86)
https://ci.appveyor.com/project/hvr/paths/builds/29725968/job/q88c02jr7k66i2sp
Edit: cabal seems to use hsc2hc-0.68.3, maybe that's relevant.
On x86-64 version it seems to build fine.
Preprocessing library for Win32-2.8.4.0..
Types.hsc: In function '_hsc2hs_test41':
Types.hsc:217:20: error: storage size of 'test_array' isn't constant
Types.hsc:217:20: warning: unused variable 'test_array'
Types.hsc:217:20: error: storage size of 'test_array' isn't constant
Types.hsc:217:20: warning: unused variable 'test_array'
Types.hsc:217:20: error: storage size of 'test_array' isn't constant
Types.hsc:217:20: warning: unused variable 'test_array'
Types.hsc:217:20: error: storage size of 'test_array' isn't constant
Types.hsc:217:20: warning: unused variable 'test_array'
compilation failed
cabal.exe: Failed to build Win32-2.8.4.0 (which is required by paths-0.2.0.0).
See the build log above for details.
Command exited with code 1
I haven't been able to reproduce this locally but I do see it on AppVeyor too.. by the speed which hsc2hs seems to be working here I think it thinks it has to cross compile.. I'll take a look.
Right, this seems to be a cabal bug. Cabal has at some point decided to start passing -x to hsc2hs which is asking it to cross compile.
"C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.6.2\bin\hsc2hs.exe" "-x" "@C:\WORK\dist-newstyle\build\i386-windows\ghc-8.6.2\Win32-2.8.4.0\build\Graphics\Win32\GDI\hsc41.txt"
This is very slow and hit and mess for win32.. I could maybe change the declarations so it generates something hsc2hs would accept in cross compile mode, but that's just working around the issues. hsc2hs should do this resolving differently and cabal shouldn't pass -x.
Actually, looking at https://ci.appveyor.com/project/hvr/paths/builds/29725968/job/q88c02jr7k66i2sp I see the issue
cabal v3.0.0.0 [Approved]
cabal package files install completed. Performing other installation steps.
Downloading cabal 64 bit
from 'https://downloads.haskell.org/cabal/cabal-install-3.0.0.0/cabal-install-3.0.0.0-x86_64-unknown-mingw32.zip'
So it downloads a 64-bit cabal version and tries to use the 32-bit toolchain. Cabal doesn't detect that the toolchain it's calling it already 32-bits so it instructs hsc2hs to cross compile.
The fix is to download the 32-bit version of cabal too.
choco install -y cabal %CHOCOPTS%
needs to be
choco install -y cabal %GHCOPTS% %CHOCOPTS%
I think this example may have come from my blog, I'll check and update it later
I've corrected the example at https://hub.zhox.com/posts/introducing-haskell-dev/
Is this issue fixed?