unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: pukkamustard <pukkamustard@posteo.net>
To: Marc Coquand <marc@mccd.space>
Cc: 69185@debbugs.gnu.org
Subject: [bug#69185] [PATCH master] gnu: ocaml: Update to 5.1.1
Date: Tue, 26 Mar 2024 21:03:49 +0000	[thread overview]
Message-ID: <86zfukofrg.fsf@posteo.net> (raw)
In-Reply-To: <87edby3uac.fsf@mccd.space>


Marc Coquand <marc@mccd.space> writes:

>> Do you think it would make sense to add a
>> `package-with-ocaml5.1` transformation in `(guix build-system ocaml)`?
>
> Absolutely, or replace the ocaml5.0 one.
>
>> 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?
>
> I see there is also in packages/ocaml.scm:
>
> - ocaml5.0-merlin-reader
> - ocaml5.0-ppx-expect
> - ocaml5.0-dune-bootstrap
> - ocaml5.0-crowbar
> - ocaml5.0-findlib
>
> I assume that if we replace the old 5.0 version, we would need to bump
> these packages as well, since they use Ocaml 5.0?

Yes.

> I am relatively new to software packaging, so I do not know what best
> practice is here: if it is best to replace the old version or create an
> entry for the new version.

Hm, I'd say it's good to keep versions around that are being used by
other packages in Guix or it is a version where we can assume that
significant amount of people are using it from Guix for things outside
of Guix.

I think OCaml 5.0 is neither:

- The ocaml5.0-* packages are mostly to get a working development
  environment (ocaml5.0-merlin and dependencies).
- Our ocaml5.0-eio is outdated and the recently released Eio 1.0.0 only
  supports OCaml 5.1.1 or later.
- There's not much reason to use OCaml 5.0 when OCaml 5.1 is available.

I'd suggest replacing OCaml 5.0 with OCaml 5.1 in Guix.

Happy hacking!

-pukkamustard

> pukkamustard <pukkamustard@posteo.net> writes:
>
>> 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 <marc@mccd.space> 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





  parent reply	other threads:[~2024-03-26 21:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-17 17:39 [bug#69185] [PATCH master] gnu: ocaml: Update to 5.1.1 Marc Coquand
2024-03-24  6:57 ` pukkamustard
     [not found]   ` <87edby3uac.fsf@mccd.space>
2024-03-26 21:03     ` pukkamustard [this message]
2024-03-29 22:19       ` Ludovic Courtès
2024-04-01  6:19         ` pukkamustard
2024-04-02 15:50           ` Ludovic Courtès
2024-04-02 17:42             ` Marc Coquand
2024-04-07 21:42               ` Marc Coquand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86zfukofrg.fsf@posteo.net \
    --to=pukkamustard@posteo.net \
    --cc=69185@debbugs.gnu.org \
    --cc=marc@mccd.space \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).