advance warning of Cabal- and package breakages

Duncan Coutts duncan.coutts at
Mon Feb 16 19:24:55 EST 2009


I'll be releasing Cabal- soon. I've been testing with packages on
hackage for regressions. However even with the regressions fixed there
will be a small handful of packages that will break with the new
release. This is because they are already incorrect it's just that this
was previously hidden.

All these errors get picked up now because the new Cabal version checks
that header files and C libs can be found at configure time. This check
is generally a great help to users. Unfortunately in the case of these
packages it picks up issues that did not always previously cause build
failure (though could cause failure in some configurations).

So I'm sorry that these 6 package now break. They are all genuine
pre-existing errors though and fixing them seems a small price to pay
for a better user experience for the other 1000 packages on hackage.

I'm cc'ing the maintainers of the 6 packages. There is no need to
release immediately, in fact you may like to wait for the release and
test against it yourself to confirm whatever fixes you make.

These are the packages and their errors:

        This lists zutil.u as an include file. This is just a spelling
        error. It should be zutil.h of course. This does break with
        ghc-6.8 using -fvia-C. The behaviour of ghc-6.10 masks this

        This lists <openssl/evp.h> as an include file. There is of
        course no such file. It should be openssl/evp.h instead. This
        does break with ghc-6.8 using -fvia-C. The behaviour of ghc-6.10
        masks this error.

        This lists libxml/xmlIO.h as an include file. On my system at
        least this is found under /usr/include/libxml2 not /usr/include.
        The best solution here is probably to use pkg-config to find the
        right include dir. Cabal supports this directly via:
                pkgconfig-depends: libxml-2.0
        Again this happens to work with ghc-6.10 because it does not
        really use headers when compiling, but it breaks with older ghc
        or non-ghc.

        This specifies Linker.h as an include file. This is from the ghc
        rts include files. However this file cannot be included on its
        own. It does not compile. It needs some other rts headers to be
        included first. This would have failed with ghc-6.8, only the
        package does not work with 6.8. It does not fail wit 6.10
        because 6.10 doesn't really #include headers at all.

        This specifies an include file that does not exist at configure
        time. It specifies a file under dist/ that would be generated by
        running hsc2hs. This is already incorrect, but happens to work
        with the default dist location and current layout. If this
        package were uploaded today it would be rejected.

        This specifies a include file that is not a file, but is
        actually a directory. It looks like confusion.



More information about the Libraries mailing list