diff mbox series

[bug#64249,ocaml-team,1/2] gnu: ocaml: Update to 4.14.1.

Message ID a06ca6a604f420b4c6a994e4475ab078d1c9c386.1687527699.git.pukkamustard@posteo.net
State New
Headers show
Series [bug#64249,ocaml-team,1/2] gnu: ocaml: Update to 4.14.1. | expand

Commit Message

pukkamustard June 23, 2023, 1:43 p.m. UTC
* gnu/packages/ocaml.scm (ocaml): Update to 4.14.1.
---
 gnu/packages/ocaml.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


base-commit: 6e1215fb9c03ccb4a2d4440990aee5a66a935268

Comments

Ludovic Courtès July 18, 2023, 11:46 a.m. UTC | #1
Hello!

pukkamustard <pukkamustard@posteo.net> skribis:

> This is a WIP v2 for some updates to the OCaml packages. 

There’s a cyclic dependency in here:

--8<---------------cut here---------------start------------->8---
(exception %exception (non-self-quoting 140736850154944 "#&lt;&amp;package-cyclic-dependency-error package: #&lt;package ocaml4.07-alcotest@1.0.1 gnu/packages/ocaml.scm:2838 7fffde9308f0&gt; cycle: (#&lt;package ocaml4.07-base64@3.2.0 gnu/packages/ocaml.scm:4565 7fffde93f2c0&gt; #&lt;package ocaml4.07-dose3@7.0.0 gnu/packages/ocaml.scm:714 7fffde2bb6e0&gt; #&lt;package ocaml4.07-opam-solver@2.1.5 gnu/packages/ocaml.scm:897 7fffde2aff20&gt; #&lt;package ocaml4.07-opam-client@2.1.5 gnu/packages/ocaml.scm:909 7fffde2a7210&gt; #&lt;package ocaml4.07-opam@2.1.5 gnu/packages/ocaml.scm:925 7fffde2a74d0&gt; #&lt;package ocaml4.07-astring@0.8.5 gnu/packages/ocaml.scm:2759 7fffde2a7b00&gt; #&lt;package ocaml4.07-alcotest@1.0.1 gnu/packages/ocaml.scm:2838 7fffde9308f0&gt;)&gt;"))
builder for `/gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv' failed to produce output path `/gnu/store/gl6n9k7i6xnvkrnyk799y2bxxw51by75-guix-package-cache'
@ build-failed /gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv - 1 builder for `/gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv' failed to produce output path `/gnu/store/gl6n9k7i6xnvkrnyk799y2bxxw51by75-guix-package-cache'
--8<---------------cut here---------------end--------------->8---

Via <https://qa.guix.gnu.org/issue/64249>.

Could you take a look and submit an updated version?

Ludo’.
pukkamustard July 18, 2023, 12:05 p.m. UTC | #2
Hm, weird. I'm pretty sure this was not the case in my local checkout.

In any case, I have a v3 ready that solves some issues - and should be
cyclic dependency free.

Will send it in asap.

Thanks for having a look!
-pukkamustard

Ludovic Courtès <ludo@gnu.org> writes:

> Hello!
>
> pukkamustard <pukkamustard@posteo.net> skribis:
>
>> This is a WIP v2 for some updates to the OCaml packages. 
>
> There’s a cyclic dependency in here:
>
> (exception %exception (non-self-quoting 140736850154944 "#&lt;&amp;package-cyclic-dependency-error package: #&lt;package ocaml4.07-alcotest@1.0.1 gnu/packages/ocaml.scm:2838 7fffde9308f0&gt; cycle: (#&lt;package ocaml4.07-base64@3.2.0 gnu/packages/ocaml.scm:4565 7fffde93f2c0&gt; #&lt;package ocaml4.07-dose3@7.0.0 gnu/packages/ocaml.scm:714 7fffde2bb6e0&gt; #&lt;package ocaml4.07-opam-solver@2.1.5 gnu/packages/ocaml.scm:897 7fffde2aff20&gt; #&lt;package ocaml4.07-opam-client@2.1.5 gnu/packages/ocaml.scm:909 7fffde2a7210&gt; #&lt;package ocaml4.07-opam@2.1.5 gnu/packages/ocaml.scm:925 7fffde2a74d0&gt; #&lt;package ocaml4.07-astring@0.8.5 gnu/packages/ocaml.scm:2759 7fffde2a7b00&gt; #&lt;package ocaml4.07-alcotest@1.0.1 gnu/packages/ocaml.scm:2838 7fffde9308f0&gt;)&gt;"))
> builder for `/gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv' failed to produce output path `/gnu/store/gl6n9k7i6xnvkrnyk799y2bxxw51by75-guix-package-cache'
> @ build-failed /gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv - 1 builder for `/gnu/store/qpfyz17ihan78a9cb6ln3c57zs8bwqw9-guix-package-cache.drv' failed to produce output path `/gnu/store/gl6n9k7i6xnvkrnyk799y2bxxw51by75-guix-package-cache'
>
> Via <https://qa.guix.gnu.org/issue/64249>.
>
> Could you take a look and submit an updated version?
>
> Ludo’.
Julien Lepiller July 30, 2023, 5:42 p.m. UTC | #3
Le Fri, 28 Jul 2023 11:08:22 +0000,
pukkamustard <pukkamustard@posteo.net> a écrit :

> Hello,
> 
> This v4 fixes the previously broken Coq packages.
> 
> As mentioned (https://issues.guix.gnu.org/64249#20) this merges
> coq-core and coq-stdlib into coq.
> 
> It turns out that dune allows multiple package to be built at the
> same time by providing a comma-seperated list. Our #:package field
> can be fed such a comma-seperated list. With this trick only the
> 'install phase needs some tweaking. Eventually it would be nice to
> allow our #:package field to be a proper Scheme list.
> 
> Some Coq packages need to be updated for 8.17.1 compatibility. I have
> not systematically checked all Coq packages. Let's see what CI says.
> 
> opam is still broken. Very gracious if another pair of eyes could
> have a look.
> 
> Thanks,
> pukkamustard
> 
> pukkamustard (9):
>   gnu: ocaml: Update to 4.14.1.
>   gnu: Update coq-flocq to 4.1.1.
>   gnu: Update coq-gappa to 1.5.3.
>   gnu: Update coq-mathcomp to 1.17.0.

This patch breaks coq-coquelicot, but it can be updated to 1.4.0, and
that fixes the issue.

>   gnu: coq: Update to 8.17.1.

You've missed a coq-stdlib reference in coq-mathcomp-finmap, but simply
removing it fixes the issue.

coq-autosubst-1, coq-equations, coqstdpp, coq-interval and
coq-mathcomp-bigenough fail to build with the newer coq. coq-ide also
fails, but it used to fail already.

>   gnu: dune-bootstrap: Update to 3.9.1.
>   gnu: opam: Split build into smaller sub-packages.

there are quite a few more failures with this patch. For instance,
ocaml-topkg fails because it can't find the opam-installer binary.

>   gnu: Add opam-installer.

And of course this patch fixes the issue. I haven't followed closely
recent changes to policy, but it used to be that, if there were no
other solutions we would prefer to have multiple changes in a single
patch if separating them would break something, even in an intermediate
commit.

ocaml-ocb-stubblr still fails because it has opam instead of
opam-installer. It can be switche to new style inputs too :)

>   FIXME: gnu: opam: Update to 2.1.5.

You replaced the home-page of dose3 with the http version, but the
https version still works.

I looked into the build issue, but I can only see deprecation warnings.
Did I miss something?

> 
>  gnu/local.mk                                  |   4 -
>  gnu/packages/coq.scm                          |  77 ++--
>  gnu/packages/ocaml.scm                        | 365
> ++++++++++++------ .../ocaml-dose3-Fix-for-ocaml-4.06.patch      |
> 52 --- .../ocaml-dose3-Install-mli-cmx-etc.patch     | 133 -------
>  .../ocaml-dose3-add-unix-dependency.patch     |  25 --
>  .../ocaml-dose3-dont-make-printconf.patch     |   9 -
>  7 files changed, 267 insertions(+), 398 deletions(-)
>  delete mode 100644
> gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch delete mode
> 100644 gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
> delete mode 100644
> gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch delete
> mode 100644 gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
> 
> 
> base-commit: 01412c6c6a98e4da10676560638640d0f33e1a02
pukkamustard Aug. 6, 2023, 2:09 p.m. UTC | #4
Hi Julien,

Thanks for your comments! Will send in updated patches as a v5.

Julien Lepiller <julien@lepiller.eu> writes:

>> pukkamustard (9):
>>   gnu: ocaml: Update to 4.14.1.
>>   gnu: Update coq-flocq to 4.1.1.
>>   gnu: Update coq-gappa to 1.5.3.
>>   gnu: Update coq-mathcomp to 1.17.0.
>
> This patch breaks coq-coquelicot, but it can be updated to 1.4.0, and
> that fixes the issue.

Updated coq-coquelicot to 3.4.0.

>>   gnu: coq: Update to 8.17.1.
>
> You've missed a coq-stdlib reference in coq-mathcomp-finmap, but simply
> removing it fixes the issue.

Done.

> coq-autosubst-1, coq-equations, coqstdpp, coq-interval and
> coq-mathcomp-bigenough fail to build with the newer coq. coq-ide also
> fails, but it used to fail already.

- Fixed coq-ide by adding zlib to propagated-inputs.
- Fixed coq-autosubst by updating to 1.8
- Fixed coq-equations by updating to 1.3-8.17 (I chose to add the
  release variant in the version string)
- Fixed coq-stdpp by updating to 1.8.0.
- Fixed coq-interval by updating to 4.8.0.

coq-mathcomp-bigenough is still broken. There is a (to me) cryptic but
seemingly related message on the issue tracker:

https://github.com/math-comp/bigenough/issues/9.

Maybe somebody with more insight/interest in Coq could look into this?

>>   gnu: dune-bootstrap: Update to 3.9.1.
>>   gnu: opam: Split build into smaller sub-packages.
>
> there are quite a few more failures with this patch. For instance,
> ocaml-topkg fails because it can't find the opam-installer binary.
>
>>   gnu: Add opam-installer.
>
> And of course this patch fixes the issue. I haven't followed closely
> recent changes to policy, but it used to be that, if there were no
> other solutions we would prefer to have multiple changes in a single
> patch if separating them would break something, even in an intermediate
> commit.
>
> ocaml-ocb-stubblr still fails because it has opam instead of
> opam-installer. It can be switche to new style inputs too :)

Merged the commit to add opam-installer to the previous commit and fixed
ocaml-ocb-stubblr.

>>   FIXME: gnu: opam: Update to 2.1.5.
>
> You replaced the home-page of dose3 with the http version, but the
> https version still works.

I re-imported dose3 with `guix import opam` and it seems like http is
used in the opam metadata. Fixed to use https.

> I looked into the build issue, but I can only see deprecation warnings.
> Did I miss something?

Yes, the error is quite hidden:

--8<---------------cut here---------------start------------->8---
(cd _build/default && /gnu/store/qpbrmd6qaakv0zw3f2w2x2cw4nwy5lsg-ocaml-4.14.1/bin/ocamlc.opt -w -40 -w +a-4-40-42-44-48 -safe-string -g -bin-annot -I src/client/.opam_client.objs/byte -I /gnu/store/1zzqn0z6rkgb1bwh2hn5in1wfjjcr7ik-ocaml-opam-format-2.1.5/lib/ocaml/site-lib/opam-format -I /gnu/store/46q0hi0bzinsp4jl4921rfw2yd2hxyhd-ocaml-opam-repository-2.1.5/lib/ocaml/site-lib/opam-repository -I /gnu/store/4ldlmhrq0nrbh9sf29r17d9y3qndwch4-ocaml-mccs-1.1+14/lib/ocaml/site-lib/mccs -I /gnu/store/4ldlmhrq0nrbh9sf29r17d9y3qndwch4-ocaml-mccs-1.1+14/lib/ocaml/site-lib/mccs/glpk/internal -I /gnu/store/5pj64sfvin4apb2364gnza0srm7jwibd-ocaml-re-1.10.4/lib/ocaml/site-lib/re -I /gnu/store/5pj64sfvin4apb2364gnza0srm7jwibd-ocaml-re-1.10.4/lib/ocaml/site-lib/re/pcre -I /gnu/store/7h1nbgpy8c2vyisq6dyvwww2di2xnx9n-ocaml-graph-2.0.0/lib/ocaml/site-lib/ocamlgraph -I /gnu/store/87njknpz4803bcfvx9flwchqf4l8prcj-ocaml-cudf-0.10/lib/ocaml/site-lib/cudf -I /gnu/store/ai8z8r9ykib00039gq0gylyps6xzs55w-ocaml-opam-file-format-2.1.4/lib/ocaml/site-lib/opam-file-format -I /gnu/store/fz8a8plnh2j7z020jljy66fg4mmbp3hv-ocaml-extlib-1.7.9/lib/ocaml/site-lib/extlib -I /gnu/store/hmsqsalxyda0c0g41rl3znj8lqnbc1cy-ocaml-opam-solver-2.1.5/lib/ocaml/site-lib/opam-solver -I /gnu/store/k51jkvxz1smwl3bvi13yh3myg4av3fva-ocaml-dose3-7.0.0/lib/ocaml/site-lib/dose3/algo -I /gnu/store/k51jkvxz1smwl3bvi13yh3myg4av3fva-ocaml-dose3-7.0.0/lib/ocaml/site-lib/dose3/common -I /gnu/store/lvhm3dnkqbacm7gy2r6ppvng9rq8rqzx-ocaml-seq-0.1/lib/ocaml/site-lib/seq -I /gnu/store/qpxf86c2qkyjwidlf5dhj17jwg5pfwz5-ocaml-opam-core-2.1.5/lib/ocaml/site-lib/opam-core -I /gnu/store/rav2kpix7fb1gj9x609qzrd6a3cla9b1-ocaml-base64-3.5.0/lib/ocaml/site-lib/base64 -I /gnu/store/v63rrnbsq9806s8q0qz0fkrw1napqn0f-ocaml-stdlib-shims-0.3.0/lib/ocaml/site-lib/stdlib-shims -I /gnu/store/vw64xzqqkz8gzg6ikrp4ks5bqdbjash3-ocaml-cmdliner-1.1.1/lib/ocaml/site-lib/cmdliner -I /gnu/store/ylwbjd8fmi6mrk2lxsvh7yrjajh7qbi4-ocaml-opam-state-2.1.5/lib/ocaml/site-lib/opam-state -intf-suffix .ml -no-alias-deps -o src/client/.opam_client.objs/byte/opamSwitchCommand.cmo -c -impl src/client/opamSwitchCommand.ml)
File "src/client/opamSwitchCommand.ml", line 405, characters 18-35:
405 |       let value = Base64.decode_exn content in
                        ^^^^^^^^^^^^^^^^^
Error: Unbound value Base64.decode_exn
--8<---------------cut here---------------end--------------->8---

In the meantime dune 3.10.0 was released and the v5 updates to it. So,
happy recompiling! :)

Thanks,
pukkamustard
Arnaud Daby-Seesaram Oct. 29, 2023, 9:24 a.m. UTC | #5
Hi,

I am (very) late to the party, but finally take the time to look at
OCaml-related upgrades in Guix. Thank you all for your work (especially
with difficulties associated with Coq)!

It seems that in the recent patch series (number 19770), the package
ocaml-opam-file-format was not upgraded from version 2.1.4 to 2.1.5.
Is there a reason for this choice?

After applying all patches of the series and with this modification, 
opam seems to work properly on my machine, but it does not build without 
the upgrade of ocaml-opam-file-format.


Best,
pukkamustard Nov. 3, 2023, 11:11 a.m. UTC | #6
Hi,

Thanks for the report!

DABY-SEESARAM Arnaud <ds-ac@nanein.fr> writes:

> It seems that in the recent patch series (number 19770), the package
> ocaml-opam-file-format was not upgraded from version 2.1.4 to 2.1.5.
> Is there a reason for this choice?

No particular reason. I was unaware that opam 2.1.5 requires an updated
ocaml-opam-file-format. I think the v6 of the series built with
ocaml-opam-file-format at 2.1.4? Did updating dune mess up something?

In any case, I can confirm your findings that opam was not building in
the v7 (patchwork series 19770) and updating ocaml-opam-file-format to
2.1.6 fixes it.

Hold on for v8!

Cheers,
pukka
Arnaud Daby-Seesaram Dec. 23, 2023, 5:53 p.m. UTC | #7
Hi,

Just a gentle ping to get your opinions on ocaml4.07.  Should Guix keep 
support for it?  (With current Guix, (at least some) ocaml4.07 packages 
are already broken.)

If not, is it possible to move forward with pukkamustard's patch series 
(optionally after updating why3 and frama-c to limit broken packages)?  
This would also enable other ocaml-related contributions, such as 67495, 
66119, 64209, ...  which might need adjustments after the update of 
dune.


Best regards,
Julien Lepiller Dec. 24, 2023, 1:07 p.m. UTC | #8
Le Sat, 23 Dec 2023 18:53:03 +0100,
Arnaud Daby-Seesaram <ds-ac@nanein.fr> a écrit :

> Hi,
> 
> Just a gentle ping to get your opinions on ocaml4.07.  Should Guix
> keep support for it?  (With current Guix, (at least some) ocaml4.07
> packages are already broken.)

We plan to remove ocaml4.07* packages (except ocaml itself since it
represents the first step for a future bootstrap). Since most of them
are already failing, we shouldn't care too much about that. At laest,
we're not breaking them *more* ;)

> 
> If not, is it possible to move forward with pukkamustard's patch
> series (optionally after updating why3 and frama-c to limit broken
> packages)? This would also enable other ocaml-related contributions,
> such as 67495, 66119, 64209, ...  which might need adjustments after
> the update of dune.

Please send your patches to prevent frama-c breakage. I have already
done some work to fix other packages, but it' on another computer. I'll
be able to send a (final?) version early January.

In the meantime, I will send a series to remove ocaml4.07 packages,
since they're no longer of any use, obsolete and mostly broken anyway.
It should be independent of this series.

Note that the right way to discover impacted packages is with `guix
refresh -l ocaml@4`.

> 
> 
> Best regards,
>
Julien Lepiller Jan. 10, 2024, 7:34 a.m. UTC | #9
Le Sun, 24 Dec 2023 17:43:35 +0100,
ds-ac@nanein.fr a écrit :

> From: Arnaud Daby-Seesaram <ds-ac@nanein.fr>
> 
> 
> This patch series is built on top of
> 8b5b9fc21ea504eb5d226546884db2ebc6287b7d from
> https://git.guix-patches.cbaines.net/guix-patches/.
> 
> It:
> - updates Why3 (the non-trivial diff comes from `guix style` changes).
> 
> - adds new dependencies of frama-c.
>   These definitions come from the Guix importer for opam, with small
> edits. I had to disable checks for two of them.
>   Note: tests are disabled for similar Guix packages and are not run
> by opam.
> 
> - updates frama-c to its latest stable version.
>   I switched the package to dune-build-system.
> 
> Arnaud DABY-SEESARAM (9):
>   gnu: why3: Update to 1.6.0.
>   gnu: Add ocaml-ppx-deriving-yojson.
>   gnu: Add ocaml-junit
>   gnu: Add ocaml-junit-alcotest
>   gnu: Add ocaml-yaml
>   gnu: Add ocaml-ppx-deriving-yaml.
>   gnu: Add ocaml-ppx-import.
>   gnu: Add ocaml-dune-site.
>   gnu: update frama-c to 27.1-Cobalt.
> 
>  gnu/packages/maths.scm | 145 +++++++++++++++++++-------------------
>  gnu/packages/ocaml.scm | 154
> +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 229
> insertions(+), 70 deletions(-)
> 
> 
> base-commit: 8b5b9fc21ea504eb5d226546884db2ebc6287b7d

I managed to perform the complete update without breaking a single
dependent of ocaml@4!

I used the first 12 patches from pukkamustard, added a few updates of
my own (including a more recent ocaml-ppxlib, but not the latest, to
ensure compatibility with both janestreet 0.15 and 0.16), added your
patches (I reworked the order a bit and merged the first and last one),
fixing descriptions, license, source and adding a copyright header for
you. I also extended the dune-site definition to run the tests by
adding a few more packages. Lastly, I included pukkamustard's last
patch, and everything seems to be working now.

In total, we get 34 patches, and I checked that each intermediate
commit still builds and doesn't break any package. I'm sending them
momentarily, so QA can have a chance to build them.
Arnaud Daby-Seesaram Jan. 28, 2024, 2:54 p.m. UTC | #10
Hi,

As, ocaml4.07* packages have been removed, do you think that it is time
to apply this patch series on master, or are there checks to perform
first?


Have a nice day,
Arnaud Daby-Seesaram Feb. 8, 2024, 8:05 p.m. UTC | #11
Hi,

Here is a new remainder to ask you to push the patch series associated
with bug 64249 upstream. (I realised that I forgot to CC you on my last
email).

I do hope that I do not bother you with these mails. Please do tell me
if it is the case, in which case I will non longer send remainders :).


Best,
diff mbox series

Patch

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index ab0aa0574a..6ffde41cc0 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -253,7 +253,7 @@  (define-public ocaml-5.0
 (define-public ocaml-4.14
   (package
     (name "ocaml")
-    (version "4.14.0")
+    (version "4.14.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -262,7 +262,7 @@  (define-public ocaml-4.14
                     "/ocaml-" version ".tar.xz"))
               (sha256
                (base32
-                "0axcc7c23pf4qinz4vxgkba6pwziwbp9i2ydwzar7x9zlp6diarn"))))
+                "0vxvwxxycpc3r5p7ys59d86vw5vdr2lhmck1f3s6qms2096rf9y1"))))
     (build-system gnu-build-system)
     (native-search-paths
      (list (search-path-specification