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
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