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
--> 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)
--> 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...
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
More information about the Fedora-packaging