David Woodhouse wrote:
On Sat, 2007-05-19 at 17:36 +0100, Richard W.M. Jones wrote:
> I suspect it's unlikely that upstream will do (a), ever. There's a
> technical issue. OCaml really doesn't have a concept of an ABI. It
> does a kind of whole-program optimisation where even changes to the
> internal implementation of a library can affect the resulting binary.
> Moreover even if you "fixed" that, any change whatsoever to the
> library's signature or the version of compiler it was built with (even
> bugfix releases which have the same version number) will make the
> library incompatible.
Our current package scheme doesn't handle this at all, does it? Should
our ocaml-*-devel packages have runtime Requires: on the precise n-v-r
of ocaml used to build them?
Yes definitely. In fact any other behaviour is broken. (All packages
should have this Requires -- I'm not sure why you elected for just the
-devel packages). Furthermore, if one library or program depends on
another library, then it must contain a dependency on the precise n-v-r
of the library.
The only reason I didn't do it for the four packages I just put up for
review is that I couldn't work out _how_ to do it in the spec file :-(
[My packages for review:
http://tinyurl.com/2rl4w6]
Example:
ocaml-3.09.3-1
ocaml-pcre-5.11.4-1
Requires: ocaml = 3.09.3-1
ocaml-extlib-1.5-1
Requires: ocaml = 3.09.3-1
cocanwiki-1.4.3-1
Requires: ocaml-pcre = 5.11.4-1, ocaml-extlib = 1.5-1, ocaml = 3.09.3-1
The final package requires the precise versions of the two libraries it
was built against, plus the precise version of OCaml that it was built
with.
I don't know how well this will interact with the Fedora build system.
For instance if a new version of a fairly fundamental library (eg. ocaml
itself, or something like ocaml-pcre) is released, everything which
depends on that has to be recompiled. This is something of a perpetual
problem for the Debian folks.
At one point I remember that OCaml in Ubuntu was really broken,
apparently because they'd taken packages from upstream Debian half way
through a transition like this, so some packages were compiled against
one version of ocaml-pcre, and others against another version, with the
result that you couldn't use certain combinations of libraries if the
libraries depended on different ocaml-pcre.
Rich.
--
Emerging Technologies, Red Hat -
http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
England and Wales under Company Registration No. 03798903