Problem solved: 2 solutions described below.

On 2010 Dec 6, at 14:15, Duncan Coutts wrote:

On 6 December 2010 11:02, Jacek Generowicz <[email protected]> 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?

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 >=0.9.0 is required but could not be found"), I have no idea whether 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.


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to