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

Bug#500036: policy: dynamically-loadable objects and META files should be allowed in non *-dev binary packages



Package: dh-ocaml
Version: 0.1
Severity: wishlist

Hello,

We have already discussed this issue in the following thread:

  http://lists.debian.org/debian-ocaml-maint/2008/01/msg00150.html

No decision has been taken so far. I submit this wish here to keep
track of it. I give here a short summary.

I propose to allow in our policy dynamically-loadable objects such as
.cma or .cmo files in non *-dev binary packages. Currently, they are
allowed only in *-dev packages, but they might be needed at runtime
by programs using dynamic loading (Dynlink library), such as Ocsigen.

To the best of my knowledge, META files are the only information easily
exploitable at runtime to deal with dependencies between libraries
(and Ocsigen use them). Therefore, I also propose to put META files
in non *-dev binary packages, if .cma ones are.

Rationale: software using Dynlink must currently depend on *-dev packages,
meaning all *.mli, *.cmi and sometimes doc installed, which can be space
consuming (compared to just .cma/META files) and which users might not
need at all. Here are some statistics about disk usage of libraries that
have both kinds of binary packages (these are sizes of .deb files):

  http://lists.debian.org/debian-ocaml-maint/2008/01/msg00215.html

Currently, Dynlink is only available in bytecode, but the upcoming (3.11)
version of OCaml will provide a native version, with a new kind of
compiled object files: .cmxs (a kind of .so for OCaml code). Putting these
files into *-dev binary packages would be quite strange. And since the
bytecode counterparts of .cmxs are .cmo/.cma, it would also be strange to
put .cmxs in non *-dev and .cmo/.cma in *-dev.

Of course, META files explicitly refer to .cmx files, and one may argue
that they belong to *-dev packages because of this. First, notice that
META files are usually the same on all architectures, even non-native ones,
where .cmx don't exists. IMHO, Findlib is a good infrastructure for
handling OCaml libraries and their dependencies, even at runtime. Besides,
META files are ridiculously small, compared to what you would need to
install if they were in *-dev packages.

More pragmatically, since we will most likely have to handle generation
of .cmxs ourselves (i.e. in packaging process), I don't suggest to
massively and systematically move .cma/META files in all existing
packages, but rather do it in a as-needed basis (note that I used the
verb "allow" in this report). The policy should state the possibility,
though.

-- 
Stephane


-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-1-686-bigmem (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

dh-ocaml depends on no packages.

Versions of packages dh-ocaml recommends:
ii  ocaml-nox                     3.10.2-3   ML language implementation with a 

dh-ocaml suggests no packages.

-- no debconf information



Reply to: