Subject: Re: [bug#45498] [PATCH 00/12] Add ocaml-merlin.

From: Julien Lepiller <[email-masked]>
Date: Mon, 28 Dec 2020 21:00:37 +0100

Le Mon, 28 Dec 2020 19:10:48 +0100,
pukkamustard <[email-masked]> a écrit :

> Thank you for the feedback! v2 of patch series coming shortly...
> 
> I was not aware of the `ocaml4.07-variant` property. It makes 
> things a
> lot nicer!
> 
> I've added it for `ocaml-markup` and `ocaml-odoc` and also
> `ocaml-sexplib0`, `ocaml-parsexp`, `ocaml-base` and 
> `ocaml-sexplib`.

Thank you, it will make things easier to maintain I think :)

> 
> This makes `ocaml4.07-*` vanish from lot of places in favor of
> `(package-with-ocaml4.07 *)`.
> 
> > Have you tried updating dune to the latest version that builds 
> > with
> > ocaml 4.07?  
> 
> Not yet. For ocaml-markup 1.0.0 the problem is that the dune file
> version is set to 2.7. Any dune below 2.7.x will probably not 
> work.

Is this a hard requirement? I think we used to be able to use older
dune versions despite this.

> 
> For other packages it might work...
> 
> >  
> >>
> >>   This is quite cumbersome as two trees of OCaml packages need 
> >>   to be
> >>   maintained.  
> >
> > Actually 3, there are ocaml 4.07, 4.09 and 4.11 currently. I'm 
> > working
> > on a bootstrap for ocaml 4.07 (ocaml builds from a binary 
> > version of
> > itself), so I don't think it'll disappear soon, but at least we 
> > can try
> > and make ocaml4.07-* packages disappear :)
> >  
> 
> \o/ Looking forward to the bootstrap!

Yay, it should become reality in the next few months. Currently we
target ocaml 4.07 because it's the last version that doesn't require
merlin; after that we should be able to use ocaml4.07-merlin to build
the parser for more recent versions.

> With the `ocaml4.*-variant` property managing the 3 trees does not 
> seem
> so bad after all.
> 
> Currently there are a lot of packages only for 4.07. It would be 
> nicer
> to have packages for default compiler and when needed variants for 
> older
> compilers.

This is for historical reasons: we had these packages with ocaml 4.07,
and only for those packages that still require ocaml 4.07. More recent
versions of these packages have a different dependency tree, which
makes it hard to maintain both trees at the same time, especially as
there is no version that supports any two of our ocaml compilers at the
same time.

> I plan to do some OCaml hacking in the next months and will send 
> in
> patches toward this, if that is ok.

That would be very appreciated!

> >> - Some OCaml libraries have dependencies in `inputs` that seem 
> >> to be
> >> required from packages using the libraries.  E.g. 
> >> `ocaml-yojson`
> >> depends on `ocaml-biniou`. Packages depending on `ocaml-yojson` 
> >> need
> >> to manually add `ocaml-biniou` to their inputs. Would it 
> >> work/make
> >> sense to add `ocaml-biniou` to `propagated-inputs` of 
> >> `ocaml-yojson`?  
> >
> > Yeah, could you provide an additional patch for that?  
> 
> Done. Patch 13 in v2.

Could you instead put this as patch 12, and add merlin as patch 13?
That way you don't have to add the dependencies in merlin and remove
them in the following patch.

Also, patch 12 adds ocaml-dot-merlin-reader and ocaml-merlin. could you
separate it in two separate patches? I'm also wondering if we should
call this package "merlin" instead of ocaml-merlin, since it provides a
binary of that name?

> -pukkamustard