[opam-devel] OPAM + Docker

Nicolas Braud-Santoni nicolas at braud-santoni.eu
Tue Nov 19 09:12:20 GMT 2013

On 19/11/2013 05:03, ygrek wrote:
> On Mon, 18 Nov 2013 10:43:59 -0800
> Anil Madhavapeddy <anil at recoil.org> wrote:
>> I've made some notes about using OPAM and Docker for easier local bulk builds here:
>> http://anil.recoil.org/2013/11/15/docker-and-opam.html
>> One semi-interesting issue I've already discovered with depexts is that just a "ubuntu" tag isn't enough, since  some depexts are only valid in a specific version of Ubuntu.
>> This unfortunately feels like it might be a job for the constraint system and not for flat tags (since I want to say >precise or <saucy).  We could do it with flat tags for now, but I have a bad feeling that it'll get unmanageable quite quickly..
Two remarks:
1. Using the version numbers might be much less confusing than the codenames
2. I agree that we need to agree on useable syntax (and semantics) for
depexts. See https://github.com/ocaml/opam/issues/991

> I personally dislike this depexts field to mention OS packages at all.
Why ?
This seems to be the most sane and generic option if we wish to interact
with the system's package manager [0].

> Maybe it's better to specify which external libraries are needed (as .so or as pkg-config files) and then
> use native OS way (at installation time) to determine which package contains that .so or .pc file (e.g. apt-file on Debian).
Not all package managers provide these kind of facilities.
That is someting that, for instance, will not exist in any source-based
distribution that I am aware of.

Moreover, it seems unwise to fill in information that ought to belong in
the distribution's packages :
if I depend on libfoo, major version 1, any minor version, should
I specify “libfoo-1.so”, “libfoo-1(.\d+)*.so” (dots implicitly
escaped), or some crazier scheme ?
Where will I look for the .so ?
(And while using pkg-config is better, it still isn't supported by all
external dependencies)

> If apt-file is not present it is at least possible to tell (with dpkg -S or ldconfig -p) whether the .so is present and what is
> precisely needed for the build to succeed (and mention how to find the needed package manually).
Don't the conf-* packages already achieve this (in an hackish way) ?

> It may be even possible to gater information about .so files automatically - by inspecting generated cmxa and cma
> files with ocamlobjinfo - so it can be done by ocamlot or something like that.
How would you get them to build in the first place ?


[0]: Though our definition should include thing such as Homebrew (and
other equivalents for OSX and/or Windows).

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://lists.ocaml.org/pipermail/opam-devel/attachments/20131119/96f03836/attachment-0001.sig>

More information about the opam-devel mailing list