mbox series

[bug#49101,0/4] Add ocaml-mparser & friends

Message ID cover.1624042706.git.public@yoctocell.xyz
Headers show
Series Add ocaml-mparser & friends | expand

Message

Xinglu Chen June 18, 2021, 7 p.m. UTC
This series adds ‘ocaml-mparser’, a monad parser combinator library,
plus two extensions for it --- ‘ocaml-mparser-re’ and
‘ocaml-mparser-pcre’.

I noticed that there already exists an ‘ocaml4.07-pcre’ package, what is
the policy regarding ‘ocaml4.07-*’ and ‘ocaml-*’ packages?

Xinglu Chen (4):
  gnu: Add ocaml-mparser.
  gnu: Add ocaml-mparser-re.
  gnu: Add ocaml-mparser-pcre.
  gnu: Add ocaml-pcre.

 gnu/packages/ocaml.scm | 88 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 88 insertions(+)


base-commit: caf4a7a2770ef4d05a6e18f40d602e51da749ddc

Comments

Julien Lepiller June 18, 2021, 10:28 p.m. UTC | #1
Le Fri, 18 Jun 2021 21:00:51 +0200,
Xinglu Chen <public@yoctocell.xyz> a écrit :

> This series adds ‘ocaml-mparser’, a monad parser combinator library,
> plus two extensions for it --- ‘ocaml-mparser-re’ and
> ‘ocaml-mparser-pcre’.
> 
> I noticed that there already exists an ‘ocaml4.07-pcre’ package, what
> is the policy regarding ‘ocaml4.07-*’ and ‘ocaml-*’ packages?
> 
> Xinglu Chen (4):
>   gnu: Add ocaml-mparser.
>   gnu: Add ocaml-mparser-re.
>   gnu: Add ocaml-mparser-pcre.
>   gnu: Add ocaml-pcre.
> 
>  gnu/packages/ocaml.scm | 88
> ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88
> insertions(+)
> 
> 
> base-commit: caf4a7a2770ef4d05a6e18f40d602e51da749ddc

Hi Xinglu,

thank you for the patches! First, you should reorder your patches: we
try to make sure every revision of guix is correct, but after the third
patch, ocaml-pcre is missing. I would simply put pcre first :).

To answer your question, we try to avoid having both the ocaml and
ocaml4.07 around if possible. It seems that ocaml4.07-pcre is only
required for ocaml4.07-expect. Could you check if it is possible to
build expect with our latest ocaml package?

If so, please have a patch that builds pcre and expect with the latest
ocaml, then another patch for updating pcre to the latest version, then
your three patches to add mparser.

If not, then we have to keep ocaml4.07-pcre around, so here is how we
do it, in a single patch:

Replace ocaml4.07-pcre with ocaml-pcre (remove the arguments that use
ocaml-4.07) and create a new ocaml4.07-pcre that inherits from it. It
would look like this:

(define-public ocaml-pcre
  (package
    (name "ocaml-pcre")
    ...
    (properties `((ocaml4.07-variant ,(delay ocaml4.07-pcre))))
    ...))

(define-public ocaml4.07-pcre
  (package-with-ocaml4.07
    (package
      (inherit ocaml-pcre)
      ...
      (properties '()))))

If the latest version of pcre cannot be built with ocaml 4.07, you can
specify a different source, like we do for ocaml4.07-parsexp for
instance.

I'm looking forward to v2 of this series :)
Xinglu Chen June 19, 2021, 8:35 a.m. UTC | #2
On Sat, Jun 19 2021, Julien Lepiller wrote:

> Le Fri, 18 Jun 2021 21:00:51 +0200,
> Xinglu Chen <public@yoctocell.xyz> a écrit :
>
>> This series adds ‘ocaml-mparser’, a monad parser combinator library,
>> plus two extensions for it --- ‘ocaml-mparser-re’ and
>> ‘ocaml-mparser-pcre’.
>> 
>> I noticed that there already exists an ‘ocaml4.07-pcre’ package, what
>> is the policy regarding ‘ocaml4.07-*’ and ‘ocaml-*’ packages?
>> 
>> Xinglu Chen (4):
>>   gnu: Add ocaml-mparser.
>>   gnu: Add ocaml-mparser-re.
>>   gnu: Add ocaml-mparser-pcre.
>>   gnu: Add ocaml-pcre.
>> 
>>  gnu/packages/ocaml.scm | 88
>> ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88
>> insertions(+)
>> 
>> 
>> base-commit: caf4a7a2770ef4d05a6e18f40d602e51da749ddc
>
> Hi Xinglu,
>
> thank you for the patches! First, you should reorder your patches: we
> try to make sure every revision of guix is correct, but after the third
> patch, ocaml-pcre is missing. I would simply put pcre first :).

Yeah, I think I messed something up when sending them.

> To answer your question, we try to avoid having both the ocaml and
> ocaml4.07 around if possible. It seems that ocaml4.07-pcre is only
> required for ocaml4.07-expect. Could you check if it is possible to
> build expect with our latest ocaml package?
>
> If so, please have a patch that builds pcre and expect with the latest
> ocaml, then another patch for updating pcre to the latest version, then
> your three patches to add mparser.
>
> If not, then we have to keep ocaml4.07-pcre around, so here is how we
> do it, in a single patch:
>
> Replace ocaml4.07-pcre with ocaml-pcre (remove the arguments that use
> ocaml-4.07) and create a new ocaml4.07-pcre that inherits from it. It
> would look like this:
>
> (define-public ocaml-pcre
>   (package
>     (name "ocaml-pcre")
>     ...
>     (properties `((ocaml4.07-variant ,(delay ocaml4.07-pcre))))
>     ...))
>
> (define-public ocaml4.07-pcre
>   (package-with-ocaml4.07
>     (package
>       (inherit ocaml-pcre)
>       ...
>       (properties '()))))
>
> If the latest version of pcre cannot be built with ocaml 4.07, you can
> specify a different source, like we do for ocaml4.07-parsexp for
> instance.

Thanks for the detailed answer!  I think it would be great to have
something like this in the manual :)

> I'm looking forward to v2 of this series :)

Should be coming soon :)
Xinglu Chen June 19, 2021, 9:03 a.m. UTC | #3
Changes since v1:

* Make ‘ocaml4.07-pcre’ and ‘ocaml4.07-expect’ use the default OCaml
  compiler and reorder the commits.

Xinglu Chen (5):
  gnu: ocaml4.07-pcre: Switch to default ‘ocaml’ compiler.
  gnu: ocaml4.07-expect: Switch to default ‘ocaml’ compiler.
  gnu: Add ocaml-mparser.
  gnu: Add ocaml-mparser-re.
  gnu: Add ocaml-mparser-pcre.

 gnu/packages/ocaml.scm | 131 ++++++++++++++++++++++++++++++-----------
 1 file changed, 95 insertions(+), 36 deletions(-)


base-commit: dee608a1bb09e691e32203f2493975d71318c296