Hi,

Looks like we have some rather big issue with how we generated our
binary dependencies, as they are not sufficient to guarantee working
dependencies. This is the situation:

missingh does not build-depend on libghc6-regex-posix-dev, nor does it
refer to it in its cabal file. The generated file installed-pkg-config
does not mention it in its dependencies, so Marco’s otherwise great
dh_haskell_deps scrip does not pick it up.

But nevertheless, the package is refered to in the .hi files:
$ ghc --show-iface ./dist-ghc6/build/Data/String/Utils.hi
[..]
interface MissingH-1.1.0.1:Data.String.Utils 6104
  interface hash: e3134e87faf7a6bd5e68e0d49dd49a92
  ABI hash: 7e9b519147564fcb613de026890cb2bf
  export-list hash: b3dad1adc8f0e9ac095d771340dd604e
  orphan hash: 693e9af84d3dfcc71e640e005bdc5e2e
  where
export MissingH-1.1.0.1:Data.String.Utils escapeRe lstrip rstrip splitWs
strip
export MissingH-1.1.0.1:Data.List.Utils endswith join replace split
startswith
module dependencies: Data.List.Utils
package dependencies: ghc-prim integer base array-0.2.0.0
                      containers-0.2.0.1 bytestring-0.9.1.4 mtl-1.1.0.2 
regex-base-0.93.1
                      regex-posix-0.93.2 regex-compat-0.92
[..]

Now, the version of missingh in the archive until a few days ago was
built against regex-compat (on which it does depend properly) when that
was built against regex-posix-0.93.1. regex-posix-0.93.2 was then
uploaded, and regex-compat had a binNMU to be installable again. Despite
having the same upstream version, it’s ABI did change, breaking packages
that depend on regex-compat.

The manual fix for now is to binNMU these packages, to re-build against
the newer regex-compat.

The proper solution is, I guess, what I proposed a long while ago and
which is done by the ocaml team: Use virtual packages that reflect the
ABI hash (see above) to guarantee that packages work iff their
dependencies are installed.

Or is it a bug by ghc/Cabal that the installed installed-pkg-config does
not refer to regex-posix-0.93.2?

Now, according to http://hackage.haskell.org/trac/ghc/wiki/Status/Oct09,
ghc6-6.12 will provide us with a ABI hash on the package level. I can
probably afford to wait for that, and fix problems manually until then.
We really should make sure we switch to such a system with the package
recompilations for ghc6-6.12!

Any objections? Any better ideas? Anyone willing to step up as the main
driver for this issue (i.e. implementing it in haskell-devscripts in
time)? We can probably borrow ideas and code from the OCAML team.

Greetings,
Joachim

-- 
Joachim "nomeata" Breitner
Debian Developer
  [email protected] | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: [email protected] | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to