#262: Check for required C libraries during configure ----------------------------+----------------------------------------------- Reporter: guest | Owner: Type: enhancement | Status: closed Priority: high | Milestone: Cabal-1.6 Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: fixed Keywords: | Difficulty: very easy (<1 hour) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by duncan): * status: new => closed * resolution: => fixed Comment: The check is now done after running `./configure` so we can pick up any settings it provides. Those settings (`cpp-options`, `cc-options` and `ld- options`) are also now taken into account. This means the check should now be accurate so we can make it fatal rather than a warning. This is important to help people identify the cause of the problem. {{{ Sat Jan 31 18:22:13 GMT 2009 Duncan Coutts <duncan@haskell.org> * Do the check for foreign libs after running configure This lets us pick up build info discovered by the ./configure script Sat Jan 31 18:40:16 GMT 2009 Duncan Coutts <duncan@haskell.org> * Use the cc, cpp and ld options when checking foreign headers and libs In partiular this is needed for packages that use ./configure scripts to write .buildinfo files since they typically do not split the cpp/cc/ldoptions into the more specific fields. Sat Jan 31 18:48:13 GMT 2009 Duncan Coutts <duncan@haskell.org> * Improve the error message for missing foreign libs and make it fatal The check should now be accurate enough that we can make it an error rather than just a warning. }}} The error message now includes a bit more advice: {{{ Configuring foo-1.0... setup: Missing dependencies on foreign libraries: * Missing header file: foo.h * Missing C libraries: foo, bar, baz This problem can usually be solved by installing the system packages that provide these libraries (you may need the "-dev" versions). If the libraries are already installed but in a non-standard location then you can use the flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are. }}} Or a real example: {{{ Configuring curl-1.3.4... setup: Missing dependency on a foreign library: * Missing header file: curl.h * Missing C library: curl This problem can usually be solved by installing the system package that provides this library (you may need the "-dev" version). If the library is already installed but in a non-standard location then you can use the flags --extra-include-dirs= and --extra-lib-dirs= to specify where it is. }}} Thanks to Gleb Alexeyev for implementing most of this. It should result in many fewer confused users. -- Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/262#comment:14> Hackage <http://haskell.org/cabal/> Hackage: Cabal and related projects