Subject: [bug#69185] [PATCH master] gnu: ocaml: Update to 5.1.1

From: pukkamustard <[email-masked]>
Date: Sun, 24 Mar 2024 06:57:12 +0000

Thanks!

I wonder how useful the OCaml compiler itself is without a
`package-with-ocaml5.1` transformation? The `ocaml` package itself just
provides the compiler but no nice way (afaik) of using the compiler with
dependencies and all. Do you think it would make sense to add a
`package-with-ocaml5.1` transformation in `(guix build-system ocaml)`?

Maybe even better we can replace the OCaml 5.0 compiler with a newer
version. The only packages depending on ocaml-5.0 are ocaml5.0-merlin
and ocaml5.0-eio. They could be updated to use a newer OCaml
version. Maybe no point in keeping OCaml 5.0 around. What do you think?

-pukkamustard

Marc Coquand <[email-masked]> writes:

> * 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