Hi,
at the moment ghc-doc depends on ghc-haddock (= ${binary:Version}) which
makes ghc not binNMU’able, as ghc-doc is arch all.
We know that we need to tie the documentation to the haddock version,
because otherwise the haddock .index files break. But I guess we can do
better.
Look at this code in utils/haddock/src/Haddock/InterfaceFile.hs:
-- Since datatypes in the GHC API might change between major versions, and
-- because we store GHC datatypes in our interface files, we need to make sure
-- we version our interface files accordingly.
binaryInterfaceVersion :: Word16
#if __GLASGOW_HASKELL__ == 700
binaryInterfaceVersion = 16
#elif __GLASGOW_HASKELL__ == 701
binaryInterfaceVersion = 16
#else
#error Unknown GHC version
#endif
As you can see, the interface version does not change between every ghc
release, and we do not want to do a sourceful upload of each library
when we upgrade ghc if we can help it. If binaryInterfaceVersion does
change, then we do need to rebuild everything from source.
Again, I think virtual packages help us. When building ghc (and thus
ghc-haddock), we automatically make ghc-haddock provide
"ghc-haddock-<binaryInterfaceVersion>". When building any -doc package
that contains .index files, we make that package depend on the
appropriate "ghc-haddock-<binaryInterfaceVersion>".
This way, if we upgrade ghc and the version stays the same, everything
stays installable and working. If the version is bumped, the old -doc
packages become uninstallable (good, because no users are annoyed) and
we can do the sourceful uploads.
How does that sound?
TODOs would be:
* Patch haddock to add an option to print the binaryInterfaceVersion
(and preferably upstream the patch).
* Add a substvar in ghc for ghc-haddock Provides and fill it.
* Add a substvar in ghc for ghc-doc to depend on ghc-haddock-api-<n>.
* Add a haskell:Provides substvar to all libghc-*-doc packages.
* Fill it in haskell-devscripts.
Sounds like a fun and rewarding task. Any takers?
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: This is a digitally signed message part