OCaml and static linking (was old thread: Re: [Fedora-packaging] Issues with Ocaml and Static Linking)

Richard W.M. Jones rjones at redhat.com
Mon May 21 08:49:56 UTC 2007


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/fedora-packaging/attachments/20070521/722ec860/attachment.bin>


More information about the Fedora-packaging mailing list