Open acfoltzer opened 10 years ago
Can you please add clang output to the issue? Building bitset
seems to work fine for me on OS X 10.9.2 with
$ clang -v
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 7.6.3
$ cabal -V
cabal-install version 1.20.0.1
using version 1.20.0.0 of the Cabal library
Sure thing, here's the output:
% cabal install bitset --with-gcc=/usr/bin/clang
Resolving dependencies...
Notice: installing into a sandbox located at /private/tmp/.cabal-sandbox
Configuring bitset-1.4.8...
Building bitset-1.4.8...
Failed to install bitset-1.4.8
Last 10 lines of the build log ( /private/tmp/.cabal-sandbox/logs/bitset-1.4.8.log ):
[1 of 1] Compiling Main ( /var/folders/qk/bpmfcc8s3pq64gs7bn80k60r0000gp/T/bitset-1.4.8-8598/bitset-1.4.8/dist/dist-sandbox-39782a75/setup/setup.hs, /var/folders/qk/bpmfcc8s3pq64gs7bn80k60r0000gp/T/bitset-1.4.8-8598/bitset-1.4.8/dist/dist-sandbox-39782a75/setup/Main.o )
Linking /var/folders/qk/bpmfcc8s3pq64gs7bn80k60r0000gp/T/bitset-1.4.8-8598/bitset-1.4.8/dist/dist-sandbox-39782a75/setup/setup ...
Configuring bitset-1.4.8...
bin/mkDerivedGmpConstants.c:15:10: fatal error: './gmp.h' file not found
#include "./gmp.h"
^
1 error generated.
cabal: Error: some packages failed to install:
bitset-1.4.8 failed during the building phase. The exception was:
ExitFailure 1
% /usr/bin/clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
% ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3
% cabal --version
cabal-install version 1.20.0.1
using version 1.20.0.0 of the Cabal library
By default in 10.9, gcc is just an alias for clang, so I point it to a MacPorts-installed gcc instead and everything works.
Can you please try building the version from master
? It uses system-wide gmp.h
, so make sure you have gmp
installed before building.
I expected this to work, so when it did not I dug into how clang looks for includes. When passing --extra-include-dirs=/opt/local/include
to cabal, the build still fails, but if I set C_INCLUDE_PATH=/opt/local/include
, it works. I suspect then that this is actually a cabal bug in that it is not passing along the custom include path to the underlying C compiler if that compiler happens to be clang. I'll bother them about it; sorry for the trouble!
FYI: I just ran into this, and the same fix @acfoltzer used worked (on El Capitan, with ghc 7.8.4 and:
$ cabal --version
cabal-install version 1.22.7.0
using version 1.22.5.0 of the Cabal library
according to cabal ... --verbose=3 ...
cabal is passing on the --extra-include-dirs and --extra-lib-dirs flags, but that seems to be insufficient.
It's also possibly worth mentioning that setting the environment variable on the command line works if you're just installing bitset, it does not work if bitset is a dependency of something you're installing, so I'm still stuck, actually.
The default C compiler on newer versions of OS X is clang rather than gcc. Using clang, the bitset installation fails as it can't find the
"./gmp.h"
include. For now, usingcabal install bitset --with-gcc=$MY_GCC
works, but it would be nice if the build worked with clang as well. Thanks!