[opam-devel] What context do install an remove run in?

Louis Gesbert louis.gesbert at ocamlpro.com
Fri Sep 11 01:26:19 BST 2015

Note that this special treatment -- not getting the unpacked source -- is triggered:

- "magically" when the remove commands are detected to all be "ocamlfind remove", which is a hack, but also
- when there are no remove commands. This is reasonable when using a <pkg>.install file (http://opam.ocaml.org/doc/Manual.html#packagenameinstall)
- when the package definition specifies `flags: light-uninstall` (http://opam.ocaml.org/doc/Manual.html#opamflag-light-uninstall)


> - Thomas Gazagnaire, 08/09/2015 11:07 -
> >>> This is unclear to be from the documentation, but what context to the
> >>> commands `install` and `remove` sections of an opam file run in?  I
> >>> would assume `install` runs in the directory of the built source, but
> >>> does `remove` have that same guarantee?  Would that also mean that the
> >>> built source is kept around with the package?  I ask because I would
> >>> like to simplify my opam files by having a 'make remove' entry.
> >> 
> >> They run in an unpacked source tree as the pwd.  However, this is not
> >> cached across build runs -- instead, the source is freshly unpacked and
> >> made available to the remove target.  So you just need to make sure
> >> that you run the `configure` script if relevant.
> >> 
> >> There's a special case for `ocamlfind remove` that doesn't do this;
> >> this will likely have to be generalised as OPAM moves the OCaml-specific
> >> logic into a separate plugin.
> > 
> > Can I tell opam to figure this out via ocamlfind on its own or do is the
> > special case just checking if the command is "ocamlfind remove ..."?
> > Basically, I'm trying to make all of my opam files almost exactly the
> > same, except for deps, and push the unique actions into the package
> > itself, like install and remove.  The hope is to simplify making opam
> > packages of my tools.
> The easiest way to handle uninstall is to generate an <pkg.install> file. Otherwise, there is indeed a special syntactic treatment for "ocamlfind remove" commands (where the tarball is not downloaded and extracted again). If you really want to have a "make remove" command, as Anil said you should do "./configure --prefix=... && make remove"
> Thomas
> _______________________________________________
> opam-devel mailing list
> opam-devel at lists.ocaml.org
> http://lists.ocaml.org/listinfo/opam-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.ocaml.org/pipermail/opam-devel/attachments/20150911/c641c158/attachment.sig>

More information about the opam-devel mailing list