diff mbox series

[bug#52729] gnu: ocaml: Update to 4.13.

Message ID 20211222041609.2fde841e@tachikoma.lepiller.eu
State Accepted
Headers show
Series [bug#52729] gnu: ocaml: Update to 4.13. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Julien Lepiller Dec. 22, 2021, 3:16 a.m. UTC
Hi Guix!

This patch updates ocaml to the latest version, without the need to
keep the previous version around like previous updates :)

Comments

Simon Tournier Dec. 22, 2021, 1:33 p.m. UTC | #1
Hi Julien,

On mer., 22 déc. 2021 at 04:16, Julien Lepiller <julien@lepiller.eu> wrote:

> This patch updates ocaml to the latest version, without the need to
> keep the previous version around like previous updates :)

Cool!

I have not looked into all the details, from the surface, LGTM.

However, I note that:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build ocaml-ppx-tools-versioned
[...]
starting phase `build'
       ocaml src/ast-version,src/compiler-functions-file (exit 1)
(cd _build/default/src && /gnu/store/xp09a2invgrnah62sf9carz9bkld1w6f-ocaml-4.13.1/bin/ocaml config/gen.ml 4.13.1)
Unkown OCaml version 4.13.1
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "dune" arguments: ("build" "@install" "--release") exit-status: 1 term-signal: #f stop-signal: #f>
phase `build' failed after 0.9 seconds
command "dune" "build" "@install" "--release" failed with status 1
builder for `/gnu/store/vbmvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv' failed with exit code 1
build of /gnu/store/vbmvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv failed
View build log at '/var/log/guix/drvs/vb/mvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv.bz2'.
cannot build derivation `/gnu/store/l3575b4ici05g7b8d9dc55wbbddmblwp-ocaml-ppx-tools-versioned-5.4.0.drv': 1 dependencies couldn't be built
guix build: error: build of `/gnu/store/l3575b4ici05g7b8d9dc55wbbddmblwp-ocaml-ppx-tools-versioned-5.4.0.drv' failed
--8<---------------cut here---------------end--------------->8---


On a side note, have you tried to replace boot/ocamlc (and friends) with
the bootstrapped ones (camlboot -> ocaml-4.07 -> *).  Other said, what
is the most affordable path to exploit camlboot and have a good
bootstrapping story for OCaml.


Cheers,
simon
Julien Lepiller Dec. 22, 2021, 1:43 p.m. UTC | #2
Le 22 décembre 2021 08:33:55 GMT-05:00, zimoun <zimon.toutoune@gmail.com> a écrit :
>Hi Julien,
>
>On mer., 22 déc. 2021 at 04:16, Julien Lepiller <julien@lepiller.eu> wrote:
>
>> This patch updates ocaml to the latest version, without the need to
>> keep the previous version around like previous updates :)
>
>Cool!
>
>I have not looked into all the details, from the surface, LGTM.
>
>However, I note that:
>
>--8<---------------cut here---------------start------------->8---
>$ ./pre-inst-env guix build ocaml-ppx-tools-versioned
>[...]
>starting phase `build'
>       ocaml src/ast-version,src/compiler-functions-file (exit 1)
>(cd _build/default/src && /gnu/store/xp09a2invgrnah62sf9carz9bkld1w6f-ocaml-4.13.1/bin/ocaml config/gen.ml 4.13.1)
>Unkown OCaml version 4.13.1
>error: in phase 'build': uncaught exception:
>%exception #<&invoke-error program: "dune" arguments: ("build" "@install" "--release") exit-status: 1 term-signal: #f stop-signal: #f>
>phase `build' failed after 0.9 seconds
>command "dune" "build" "@install" "--release" failed with status 1
>builder for `/gnu/store/vbmvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv' failed with exit code 1
>build of /gnu/store/vbmvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv failed
>View build log at '/var/log/guix/drvs/vb/mvzq7if77zsl29945pyw7s2jbsmg7s-ocaml-migrate-parsetree-1-1.8.0.drv.bz2'.
>cannot build derivation `/gnu/store/l3575b4ici05g7b8d9dc55wbbddmblwp-ocaml-ppx-tools-versioned-5.4.0.drv': 1 dependencies couldn't be built
>guix build: error: build of `/gnu/store/l3575b4ici05g7b8d9dc55wbbddmblwp-ocaml-ppx-tools-versioned-5.4.0.drv' failed
>--8<---------------cut here---------------end--------------->8---
>

Thanks! I forgot that one. ppx-tools-versionned is not compatible, and it's only used by migrate-parstree-1, which has no dependents. I only need it for ocaml 4.07, so I'll remove them both, and keep only the ocaml4.07 variant.

>
>On a side note, have you tried to replace boot/ocamlc (and friends) with
>the bootstrapped ones (camlboot -> ocaml-4.07 -> *).  Other said, what
>is the most affordable path to exploit camlboot and have a good
>bootstrapping story for OCaml.

Currently we can only use camlboot to bootstrap ocaml 4.07, which is what we do. We plan to improve it so it can build newer versions though.

>
>
>Cheers,
>simon
Simon Tournier Dec. 22, 2021, 1:51 p.m. UTC | #3
Hi,

On Wed, 22 Dec 2021 at 14:43, Julien Lepiller <julien@lepiller.eu> wrote:

> >On a side note, have you tried to replace boot/ocamlc (and friends) with
> >the bootstrapped ones (camlboot -> ocaml-4.07 -> *).  Other said, what
> >is the most affordable path to exploit camlboot and have a good
> >bootstrapping story for OCaml.
>
> Currently we can only use camlboot to bootstrap ocaml 4.07, which is what we do. We plan to improve it so it can build newer versions though.

Yes, I remember when discussing the patch adding camlboot and
ocaml4.07-boot. :-)  That's what you explained [1].

Well, a direct bootstrap camlboot -> ocaml-4.13 is better for sure,
but harder.  Instead, my question is: have you tried a chain of
boostrap: camlboot -> ocaml-4.07 -> ? -> ocaml-4.13.  I could be
temporary solution waiting camlboot improvements, no?

1: <https://issues.guix.gnu.org/46806#11>


Cheers,
simon
diff mbox series

Patch

From df28351979735231bbf494da95d7fc0af5dfd32b Mon Sep 17 00:00:00 2001
Message-Id: <df28351979735231bbf494da95d7fc0af5dfd32b.1640142892.git.julien@lepiller.eu>
From: Julien Lepiller <julien@lepiller.eu>
Date: Wed, 22 Dec 2021 04:13:53 +0100
Subject: [PATCH] gnu: ocaml: Update to 4.13.

* gnu/packages/ocaml.scm (ocaml-4.13): New variable.
(ocaml-4.11): Remove variable.
(ocaml-dot-merlin-reader): Update to 4.4-413.
(js-of-ocaml): Update to 3.11.0.
---
 gnu/packages/ocaml.scm | 75 +++++++++++++++++++++++++++++-------------
 1 file changed, 53 insertions(+), 22 deletions(-)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index e6001ca37b..9a031c9220 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -182,10 +182,10 @@  (define-public camlboot
 This package produces a native @command{ocamlc} and a bytecode @command{ocamllex}.")
       (license license:expat))))
 
-(define-public ocaml-4.11
+(define-public ocaml-4.13
   (package
     (name "ocaml")
-    (version "4.11.1")
+    (version "4.13.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -194,7 +194,7 @@  (define-public ocaml-4.11
                     "/ocaml-" version ".tar.xz"))
               (sha256
                (base32
-                "0k4521c0p10c5ams6vjv5qkkjhmpkb0bfn04llcz46ah0f3r2jpa"))))
+                "1s7xwqidpjwfhnpfma4nb93gxfr7g9jfn03s1j03iyavmpgph7ck"))))
     (build-system gnu-build-system)
     (native-search-paths
      (list (search-path-specification
@@ -210,7 +210,10 @@  (define-public ocaml-4.11
      (list libx11 libiberty ;needed for objdump support
            zlib))                       ;also needed for objdump support
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--enable-ocamltest")
+       #:test-target "tests"
+       #:make-flags '("world.opt")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-/bin/sh-references
            (lambda* (#:key inputs #:allow-other-keys)
@@ -226,16 +229,7 @@  (define-public ocaml-4.11
 patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
                                  file quoted-sh)
                          quoted-sh))))
-                  (find-files "." "\\.ml$"))
-                 #t))))
-         (replace 'build
-           (lambda _
-             (invoke "make" "-j" (number->string (parallel-job-count))
-                     "world.opt")))
-         (replace 'check
-           (lambda _
-             (with-directory-excursion "testsuite"
-               (invoke "make" "all")))))))
+                  (find-files "." "\\.ml$")))))))))
     (home-page "https://ocaml.org/")
     (synopsis "The OCaml programming language")
     (description
@@ -250,7 +244,7 @@  (define-public ocaml-4.11
 
 (define-public ocaml-4.09
   (package
-    (inherit ocaml-4.11)
+    (inherit ocaml-4.13)
     (version "4.09.0")
     (source (origin
               (method url-fetch)
@@ -261,7 +255,33 @@  (define-public ocaml-4.09
               (patches (search-patches "ocaml-4.09-multiple-definitions.patch"))
               (sha256
                (base32
-                "1v3z5ar326f3hzvpfljg4xj8b9lmbrl53fn57yih1bkbx3gr3yzj"))))))
+                "1v3z5ar326f3hzvpfljg4xj8b9lmbrl53fn57yih1bkbx3gr3yzj"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-/bin/sh-references
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((sh (search-input-file inputs "/bin/sh"))
+                    (quoted-sh (string-append "\"" sh "\"")))
+               (with-fluids ((%default-port-encoding #f))
+                 (for-each
+                  (lambda (file)
+                    (substitute* file
+                      (("\"/bin/sh\"")
+                       (begin
+                         (format (current-error-port) "\
+patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
+                                 file quoted-sh)
+                         quoted-sh))))
+                  (find-files "." "\\.ml$"))))))
+         (replace 'build
+           (lambda _
+             (invoke "make" "-j" (number->string (parallel-job-count))
+                     "world.opt")))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "testsuite"
+               (invoke "make" "all")))))))))
 
 ;; This package is a bootstrap package for ocaml-4.07. It builds from camlboot,
 ;; using the upstream sources for ocaml 4.07. It installs a bytecode ocamllex
@@ -440,7 +460,7 @@  (define-public ocaml-4.07
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)))))
 
-(define-public ocaml ocaml-4.11)
+(define-public ocaml ocaml-4.13)
 
 (define-public ocamlbuild
   (package
@@ -4735,7 +4755,7 @@  (define-public ocaml-craml
 (define-public ocaml-dot-merlin-reader
   (package
     (name "ocaml-dot-merlin-reader")
-    (version "4.3.1-411")
+    (version "4.4-413")
     (source
      (origin
        (method git-fetch)
@@ -4745,7 +4765,7 @@  (define-public ocaml-dot-merlin-reader
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1nwgc9nyy80dc9cgkskyfwv9c785yjyg39s005d4wiagj4fy68v8"))))
+         "0wijg1vh2q6yr46vkv34vvksligd0ajl4hv7m6qbz3ywqr8akg23"))))
     (build-system dune-build-system)
     (arguments '(#:package "dot-merlin-reader"
                  #:tests? #f))          ; no tests
@@ -7617,7 +7637,7 @@  (define-public ocaml-cohttp
 (define-public js-of-ocaml
   (package
     (name "js-of-ocaml")
-    (version "3.9.1")
+    (version "3.11.0")
     (source
      (origin
        (method git-fetch)
@@ -7626,9 +7646,20 @@  (define-public js-of-ocaml
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "00hdjaj94j3nc6f6wbbpx59h4yc79siphs34i1hry11r56paaqyk"))))
+        (base32 "1x5f1ph9wgx0mgyibssssnrcwp69ihw66gzhsnz9h79czgzyjpp2"))))
     (build-system dune-build-system)
-    (arguments `(#:test-target "."))
+    (arguments
+     `(#:test-target "."
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'fix-failing-test
+           (lambda _
+             ;; Formating difference
+             (with-output-to-file "compiler/tests-jsoo/bin/error2.expected"
+               (lambda _
+                 (format #t
+                         "Fatal error: exception Match_failure(\
+\"compiler/tests-jsoo/bin/error2.ml\", 11, 2)\n\n"))))))))
     (propagated-inputs
      (list ocaml-ppxlib
            ocaml-uchar
-- 
2.34.0