
Problem solved: 2 solutions described below. On 2010 Dec 6, at 14:15, Duncan Coutts wrote:
On 6 December 2010 11:02, Jacek Generowicz
wrote: It a appears that a program which does not exist on my computer seems to insist on a package version which does not exist in my universe, I'm starting to wonder whether I have lost my marbles. Could some kind soul please point me in some sensible direction?
cabal install xmonad-contrib Resolving dependencies... Configuring X11-xft-0.3... cabal: pkg-config version >=0.9.0 is required but it could not be found.
X11-xft version 0.9.0 doesn't even exist, as far a I can tell
In the development version of cabal we have changed that error message to try and make it clear that it is looking for a program called pkg-config, not a Haskell package or a C lib.
cabal: The program pkg-config version >=0.9.0 is required but it could not be found.
Do you think that message would have helped avoid your confusion?
=0.9.0 is required but could not be found"), I have no idea whether
Oooh, that's a difficult question to answer, as I had read your earlier paragraph before coming to this question. After your explanation explained the error message (to the extent that I now wonder how on earth I ever took it to mean that it's looking for X11- xft version >=0.9.0, when it quite clearly states "pkg-config version the new message would have been better.
Is there an alternative message that would have been better?
Well, if I try to understand how I could have misunderstood the original message, I suspect that it is because of the common style of error message where the program generating the message precedes the actual message on the same line, just like "cabal: ..." precedes the message in this case. So I guess that I parsed it something like "... pkg-config: version >=0.9.0 is required ..." and inferred that 'version' refers to the package mentioned in an earlier message. In which case, maybe something like cabal: version >=0.9.0 of pkg-config is required ... would have prevented me from making this particular mistake in this particular case.
pkg-config [1] is a tool used by C libraries to describe things like dependencies on other C libs and what C compiler flags are needed to use the packages.
The Haskell package X11-xft is a binding to the C library xft. On most modern unix systems xft C library provides meta-data that pkg-config can use. For example, on my system I can run:
$ pkg-config --cflags xft -I/usr/include/freetype2
$ pkg-config --libs xft -lXft -lXrender -lfontconfig -lfreetype -lX11
Cabal does exactly the same thing, to work out what flags are needed to use the xft C library.
The problem on your system is that the pkg-config program is not installed. Perhaps on OSX it comes with Xcode, I'm not sure. It may well also be the case that you don't have the development files for X11 or xft installed either (e.g. C header files). Hopefully some OSX person can advise you on what you need to install to do X11 development on OSX.
Solution 1 (more complicated version): Although I never use XCode itself, I thought that I had it installed along with all the developer tools in order to get at GCC etc. Apparently not. Anyway, pkg-config seems to be available through darwinports, but I don't use darwinports (as, many years ago, I concluded that it's more trouble than it's worth, because of the strange places where it puts the stuff it manages). However, a plain manual compilation Just Works (for me): curl http://pkgconfig.freedesktop.org/releases/pkg-config-0.25.tar.gz -o pkgconfig.tgz tar zxf pkgconfig.tgz cd pkgconfig.tgz ./configure make sudo make install and I now have pkg-config If I try pkg-config --cflags xft it complains about the package not being found, and mentions the relevant environment variable. I *do* have /usr/X11/lib/pkgconfig/xft.pc, and popping its directiory into PKG_CONFIG_PATH makes the above pkg-config call now work. In this state, cabal install xmonad-contrib also works. = = = ======================================================================== Solution 2 (simpler): I did manage to get xmonad-contrib to cabal install (without pkg- config) by asking for it not to use xft cabal install xmonad-contrib --flags="-use_xft" Presumably cabal uses pkg-config for only a subset of the things it manages, and xft is the only one of those on which xmonad-contrib depends. Thank you Duncan for your concise, clear and complete answer: it was just what I needed to unblock me.