diff mbox series

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

Message ID 20211223140109.7716a446@tachikoma.lepiller.eu
State Accepted
Headers show
Series [bug#52729,v2] 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
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
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. 23, 2021, 1:01 p.m. UTC
Le Wed, 22 Dec 2021 14:51:49 +0100,
zimoun <zimon.toutoune@gmail.com> a écrit :

> 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

Here's v2 of the patch series: the first two patches build only the
4.07 version for migrate-parsetree@1 and for ppx-tools-versioned. That
way, they don't fail when updating to ocaml 4.13. I checked that
everything builds like before. I still have issues with bap because
llvm@3.8.1 fails.

Comments

pukkamustard Jan. 8, 2022, 8:45 p.m. UTC | #1
Hi Julien,

> gnu: ocaml-ppx-tools-versioned: Only build ocaml-4.07 variant.

Any reason for not using the package-with-ocaml4.07 transformation?

> gnu: ocaml: Update to 4.13.

js-of-ocaml and ocaml-dot-merlin-reader are also updated in this
commit. Could they be split to separate commits?

Other than that everything seems to be compiling and working
fine. Thank you very much!

-pukkamustard


Julien Lepiller <julien@lepiller.eu> writes:

> Le Wed, 22 Dec 2021 14:51:49 +0100,
> zimoun <zimon.toutoune@gmail.com> a écrit :
>
>> 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
>
> Here's v2 of the patch series: the first two patches build only the
> 4.07 version for migrate-parsetree@1 and for ppx-tools-versioned. That
> way, they don't fail when updating to ocaml 4.13. I checked that
> everything builds like before. I still have issues with bap because
> llvm@3.8.1 fails.
>
> [2. text/x-patch; 0001-gnu-ocaml-ppx-tools-versioned-Only-build-ocaml-4.07-.patch]...
>
> [3. text/x-patch; 0002-gnu-ocaml-migrate-parstree-1-Only-build-ocaml4.07-va.patch]...
>
> [4. text/x-patch; 0003-gnu-ocaml-Update-to-4.13.patch]...
Julien Lepiller Jan. 9, 2022, 9:55 a.m. UTC | #2
Le Sat, 08 Jan 2022 20:45:45 +0000,
pukkamustard <pukkamustard@posteo.net> a écrit :

> Hi Julien,
> 
> > gnu: ocaml-ppx-tools-versioned: Only build ocaml-4.07 variant.  
> 
> Any reason for not using the package-with-ocaml4.07 transformation?

No reason at all, thanks for noticing.

> 
> > gnu: ocaml: Update to 4.13.  
> 
> js-of-ocaml and ocaml-dot-merlin-reader are also updated in this
> commit. Could they be split to separate commits?

Unfortunately I cannot update these packages independently without
something breaking.

> 
> Other than that everything seems to be compiling and working
> fine. Thank you very much!
> 

Thanks for the review, pushed to master as
92c63bc491a4f3098e94e7e58ec83b89f771c13c to
3e8e6ebf000b1cbc4ff4b9ba84c7abdcbdf0ffb4

> -pukkamustard
> 
> 
> Julien Lepiller <julien@lepiller.eu> writes:
> 
> > Le Wed, 22 Dec 2021 14:51:49 +0100,
> > zimoun <zimon.toutoune@gmail.com> a écrit :
> >  
> >> 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  
> >
> > Here's v2 of the patch series: the first two patches build only the
> > 4.07 version for migrate-parsetree@1 and for ppx-tools-versioned.
> > That way, they don't fail when updating to ocaml 4.13. I checked
> > that everything builds like before. I still have issues with bap
> > because llvm@3.8.1 fails.
> >
> > [2. text/x-patch;
> > 0001-gnu-ocaml-ppx-tools-versioned-Only-build-ocaml-4.07-.patch]...
> >
> > [3. text/x-patch;
> > 0002-gnu-ocaml-migrate-parstree-1-Only-build-ocaml4.07-va.patch]...
> >
> > [4. text/x-patch; 0003-gnu-ocaml-Update-to-4.13.patch]...  
>
diff mbox series

Patch

From bb660bfc763b38747f67c8421663efd5acb7a1cb Mon Sep 17 00:00:00 2001
Message-Id: <bb660bfc763b38747f67c8421663efd5acb7a1cb.1640218270.git.julien@lepiller.eu>
In-Reply-To: <ed8cec81e6a30cc0a0e2f1562bb1a8f12e666dc1.1640218270.git.julien@lepiller.eu>
References: <ed8cec81e6a30cc0a0e2f1562bb1a8f12e666dc1.1640218270.git.julien@lepiller.eu>
From: Julien Lepiller <julien@lepiller.eu>
Date: Wed, 22 Dec 2021 04:13:53 +0100
Subject: [PATCH 3/3] 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 fd410c1ba9..5eaa0836e7 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
@@ -4739,7 +4759,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)
@@ -4749,7 +4769,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
@@ -7621,7 +7641,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)
@@ -7630,9 +7650,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