Subject: [PATCH master] gnu: ocaml: Update to 5.1.1

From: Marc Coquand <[email-masked]>
Date: Sat, 17 Feb 2024 11:39:29 -0600

* gnu/packages/ocaml.scm (ocaml): Update to 5.1.1

Change-Id: Ie95f2e31185a5f5ef345839d357d5768e4299fcc
---
 gnu/packages/ocaml.scm | 56 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 0f4c351141..f7b9f9b81a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -191,6 +191,62 @@ (define-public camlboot
 This package produces a native @command{ocamlc} and a bytecode @command{ocamllex}.")
       (license license:expat))))
 
+(define-public ocaml-5.1
+  (package
+    (name "ocaml")
+    (version "5.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/ocaml")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19sjc8r2c78y7g47jjxb1c30zzvkdhgy8yp3i1kkz1hm6nj96adr"))))
+    (build-system gnu-build-system)
+    (native-search-paths
+     (list (search-path-specification
+            (variable "OCAMLPATH")
+            (files (list "lib/ocaml" "lib/ocaml/site-lib")))
+           (search-path-specification
+            (variable "CAML_LD_LIBRARY_PATH")
+            (files (list "lib/ocaml/site-lib/stubslibs"
+                         "lib/ocaml/site-lib/stublibs")))))
+    (native-inputs (list perl pkg-config))
+    (inputs (list libx11 libiberty ;needed for objdump support
+                  zlib)) ;also needed for objdump support
+    (arguments
+     `(#:configure-flags '("--enable-ocamltest")
+       #:test-target "tests"
+       #:make-flags '("defaultentry")
+       #: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$")))))))))
+    (home-page "https://ocaml.org/")
+    (synopsis "The OCaml programming language")
+    (description
+     "OCaml is a general purpose industrial-strength programming language with
+an emphasis on expressiveness and safety.  Developed for more than 20 years at
+Inria it benefits from one of the most advanced type systems and supports
+functional, imperative and object-oriented styles of programming.")
+    ;; The compiler is distributed under qpl1.0 with a change to choice of
+    ;; law: the license is governed by the laws of France.  The library is
+    ;; distributed under lgpl2.0.
+    (license (list license:qpl license:lgpl2.0))))
+
 (define-public ocaml-5.0
   (package
     (name "ocaml")

base-commit: 3cf199dbcf85a44fa8370e786e568fc3feb7067c
-- 
2.43.2