[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



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:

http://tinyurl.com/2rl4w6

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

  only-non-binary-in-usr-lib

    --> A consequence of the above.

  unstripped-binary-or-object

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

  no-binary

    --> 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.

  configure-without-libdir-spec

    --> 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
  etc.

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

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]