caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Anil Madhavapeddy <anil@recoil.org>
To: Dario Teixeira <darioteixeira@yahoo.com>
Cc: OCaml mailing-list <caml-list@inria.fr>
Subject: Re: [Caml-list] OPAM conventions
Date: Wed, 12 Dec 2012 17:36:43 +0000	[thread overview]
Message-ID: <70C3E286-D817-453A-AEBE-DE7B2C69C879@recoil.org> (raw)
In-Reply-To: <1355323620.61324.YahooMailNeo@web120404.mail.ne1.yahoo.com>

On 12 Dec 2012, at 14:47, Dario Teixeira <darioteixeira@yahoo.com> wrote:

> Hi,
> 
> I've been looking at the OPAM package database -- trying to determine overall
> conventions and best practices -- and I came across some inconsistencies.
> Though in most cases these are purely cosmetical, I reckon that nevertheless
> we could all benefit if some standardisation is agreed upon on.  Examples:
> 
> 1) Package naming
> 
>    For some values of "foo", OPAM's package name for project "ocaml-foo"
>    is also "ocaml-foo", whereas for others is simply "foo".  This is an
>    ackowledged issue by OPAM developers:
>    https://github.com/OCamlPro/opam-repository/issues/163
> 
>   In my mind, there are only two sensible policies for naming OPAM packages:
> 
>   a) OPAM packages should preserve the name of the original project.
>      Thus, if the project is named "ocaml-foo", the OPAM package will
>      also be "ocaml-foo".
> 
>   b) OPAM packages should have the same name as the findlib entry.
>      If project "ocaml-foo" registers itself in findlib with name
>      "foo", then "foo" should also be the name of the OPAM package.
> 
>    Good arguments can be made for and against each option.  Though this
>    is largely a bike-shedding issue, I think the community should make
>    a decision sooner rather than later.

I generally don't like typing too much, and so prefer the shorter name.
But converting packages names isn't really a big deal and can be done
mechanically, so it's more important to build up the database first.

> 
> 2) Invoking executables
> 
>    To invoke, say, a configure script, some packages will nonchalantly
>    just declare ["./configure"] whereas others will ask the shell to
>    do it: ["sh" "configure"].  While either should work in any Unix
>    system, should one be preferred for compatibility with more exotic
>    systems?

If the upstream package has the configure script marked as executable,
then ./configure should be fine.  Some don't (this used to be a bigger
problem when some VCS's couldn't track file modes, but isn't an issue
in modern systems).

> 3) Package removal
> 
>    For most values of "foo", package "foo" will just declare ["ocamlfind"
>    "remove" "foo"].  However, this approach seems a bit brittle to me.
>    If the Makefile supports "uninstall" (which is the usually the case
>    for OASIS packages), then I reckon that ["%{make}%" "uninstall"]
>    should be preferred.
> 
>    Having said that, it seems that ["%{make}%" "uninstall"] is currently
>    not working (OPAM tries to download the package de novo upon removal!).
>    Is this a bug or a feature?

The issue with removal is that the package needs to be available to run
make uninstall, hence the download.

In the longer term, we've discussed letting the OPAM package declare
which ocamlfind packages it installs, and having those automatically
handled (i.e. the install phase asserts that the package exists as a
post-condition, and the uninstall removes it and checks it's gone).

But that's all post-OPAM-1.0! Basics first.

> 4) Findlib dependency
> 
>    Most packages do declare a dependency on ocamlfind.  However, this is
>    not universal, even for packages that do register themselves with findlib.
>    What should be the standard here: always declare a dependency, or omit
>    it altogether since it is implied?

If something uses ocamlfind and doesn't declare it explicitly, it's a bug.
The continuous build system catches most of these, and in practise it doesn't
matter as a dependent package will pull it in, but it's best to be explicit
about it.

-anil

  parent reply	other threads:[~2012-12-12 17:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-12 14:47 Dario Teixeira
2012-12-12 16:53 ` Markus Mottl
2012-12-12 17:36 ` Anil Madhavapeddy [this message]
2012-12-12 18:01   ` Wojciech Meyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=70C3E286-D817-453A-AEBE-DE7B2C69C879@recoil.org \
    --to=anil@recoil.org \
    --cc=caml-list@inria.fr \
    --cc=darioteixeira@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).