[opam-devel] [ocaml-platform] A small script for compiler hackers: create short-lived opam switches out of any git branch

Wojciech Meyer wojciech.meyer at gmail.com
Mon Mar 18 16:41:24 GMT 2013

So the idea here was to use command line to quick apply patches and
test the integrity them after reviewing, but do this in such way I am
not forced to make the tree full of diffs.

On other hand maybe Gabriel idea scales better, I agree as we want to
commit them eventually.

The idea came to my mind after struggling with testing my patches and
trying out ocamlbuild on OPAM repo which I did but saying just "make
world.opt opt.opt install".

So probably the shell script takes precedence.

On Mon, Mar 18, 2013 at 4:13 PM, Anil Madhavapeddy <anil at recoil.org> wrote:
> On 17 Mar 2013, at 14:18, Wojciech Meyer <wojciech.meyer at gmail.com> wrote:
>> Hi Gabriel,
>> all is needed for testing ocamlbuild and local patches for the compiler,
>> thank you.
>> Other useful thing in general for OPAM would be something like:
>> opam patch add <ordered list_of_patches>
>> opam patch reset
>> then we are able quickly test some local patches without touching
>> command line and invoking makefiles.
> Just to clarify this, are you asking for this for the compiler switches,
> or for packages, or for both?
> Local patches can be made to work with packages via `opam pin`, although
> supporting a patch queue model may be useful in the future.
> Compiler patches don't exist at the moment within OPAM, but I like Gabriel's
> approach of taking an existing tree (that's, e.g., a git repo) and moving
> it into the OPAM space.  You can just use the underlying VCS to track your
> patches and branches without requiring more complexity in OPAM.
> -anil
>> Gabriel Scherer <gabriel.scherer at gmail.com> writes:
>>> As part of the slowly-evolving benchmark work, I have developed a
>>> script to turn any repository that quacks like an OCaml compiler and
>>> can run "make world.opt" into an OPAM compiler switch.
>>>  https://github.com/gasche/opam-compiler-conf
>>> The intended use case is to change something, recompile what need be,
>>> get a compiler switch for that, and install one or two packages for
>>> testing something. You could envision, for example, OPAM being used in
>>> the internal loop of a bisection process. In this case it is important
>>> that OPAM does not recompile the compiler on its side (so the usual
>>> technique of making a tarball of the compiler source and letting OPAM
>>> do its job from there is not pleasant in that situation); the scripts
>>> makes use of voodoo OPAM compiler options (thanks to Thomas in
>>> https://github.com/OCamlPro/opam/pull/519 ) to have it just run "make
>>> install" each time "opam switch reinstall" is called.
>>> This is a quick&dirty shell script that works on my machine. No
>>> guarantee that it will work on yours. It also assumes that the
>>> version-control system (VCS) used is git, and calls "git branch" to
>>> infer the name of the compiler switch to use. Eventual patches to
>>> support other VCSs (or, for example, infer the switch name from the
>>> directory name) would be welcome.
>> _______________________________________________
>> Platform mailing list
>> Platform at lists.ocaml.org
>> http://lists.ocaml.org/listinfo/platform

More information about the opam-devel mailing list