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

Richard W.M. Jones rjones at redhat.com
Wed May 30 14:14:54 UTC 2007

Toshio Kuratomi wrote:
> Thanks, those scripts look good.

So what's the next step?  I've added (or in two cases, changed) 14 OCaml 
packages which are waiting for another person to review them.  You can 
get the full list of Bugzillas through this link:


I understand that everyone's really busy getting F7 out of the door, and 
also that OCaml doesn't interest many people.  But anyway to kick things 
off, here are some of the things which I think could be problems:

(1) Because of the strict dependencies, users could only upgrade ocaml + 
all OCaml libraries they are using in one go.

(2) Also as a consequence of (1), if a major release of OCaml comes out, 
all OCaml libraries have to be upgraded at the same time.  If, for 
example, we move to 3.10, then all libraries upstream must support 3.10.

   --> Possible solution to (1) & (2): Put the version number in
   the library path, as Debian does.  This may allow multiple versions
   to coexist.

   --> Upstream support (2) is not much of a problem in reality.

(3) OCaml contains a native code compiler, but that compiler hasn't been 
ported to all architectures that Fedora supports.  It has a bytecode 
compiler which works everywhere (but is interpreted and hence slow).  I 
haven't been very careful about detecting if native code is supported on 
the current architecture.

   --> ExcludeArch and/or lots of nasty %ifarch sections in %files.

   --> I don't have a non-native arch to test on.

(4) rpmlint gives a few familiar warnings:

   devel-file-in-non-devel-package (about *.cmi files)

     --> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=241471


     --> A consequence of the above.


     --> You can't strip OCaml bytecode binaries because the bytecode
     gets stripped too.  Arguably that's an upstream bug.


     --> Packages which contain no binaries should be in noarch -
     fair enough, but I don't know how to do this in the spec file
     and keep the subpackages arch-specific.


     --> The ./configure scripts are often written in OCaml and don't
     use the standard autoconf options.

(5) How does the Fedora build system work?  To build a library you need 
to have the OCaml compiler and all dependent libraries installed 
(enforced through BuildRequires) and you'll get out an RPM which only 
installs with the precise compiler and library which were installed when 
it was compiled.  So the only sequence that works is:
   # remove all ocaml RPMs
   $ rpmbuild -ba ocaml.spec
   # install ocaml RPM
   $ rpmbuild -ba ocaml-lib1.spec
   # install ocaml lib1 RPM
   $ rpmbuild -ba ocaml-lib2.spec
   # install ocaml lib2 RPM


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/20070530/4846dbde/attachment.bin>

More information about the Fedora-packaging mailing list