Subject: [PATCH] gnu: ocaml: Update to 4.13.

From: Julien Lepiller <[email-masked]>
Date: Wed, 22 Dec 2021 04:16:09 +0100

Hi Guix!

This patch updates ocaml to the latest version, without the need to
keep the previous version around like previous updates :)
>From df28351979735231bbf494da95d7fc0af5dfd32b Mon Sep 17 00:00:00 2001
Message-Id: <[email-masked]>
From: Julien Lepiller <[email-masked]>
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