[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Generated dependencies are insufficient


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- 6104
  interface hash: e3134e87faf7a6bd5e68e0d49dd49a92
  ABI hash: 7e9b519147564fcb613de026890cb2bf
  export-list hash: b3dad1adc8f0e9ac095d771340dd604e
  orphan hash: 693e9af84d3dfcc71e640e005bdc5e2e
export MissingH- escapeRe lstrip rstrip splitWs
export MissingH- endswith join replace split
module dependencies: Data.List.Utils
package dependencies: ghc-prim integer base array-
                      containers- bytestring- mtl- 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.


Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

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

Reply to: