~ruther/guix-local

646c1918e6b25b784638c91e71a83a8ad9c7bb47 — Simon Tournier 8 months ago 73f943f
gnu: ocaml-ctypes: Update to 0.23.0.

* gnu/packages/ocaml.scm (ocaml-ctypes): Update to 0.23.0.
[source]: Register patch.
[build-system]: Replace ocaml-build-system by dune-build-system.
[patches]: Fix OO tests failure because of the stricter compiler.
* gnu/packages/patches/ocaml-ctypes-test-oo.patch: New file.
* gnu/local.mk: Add it.

Fixes: guix/guix#1493
Reported-by: jahierwan
Change-Id: I0db64bffade8d78bc92d8b9b9f3206961b35840d
Signed-off-by: Andreas Enge <andreas@enge.fr>
3 files changed, 55 insertions(+), 4 deletions(-)

M gnu/local.mk
M gnu/packages/ocaml.scm
A gnu/packages/patches/ocaml-ctypes-test-oo.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1942,6 1942,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/nvi-db4.patch				\
  %D%/packages/patches/nyacc-binary-literals.patch		\
  %D%/packages/patches/obs-modules-location.patch		\
  %D%/packages/patches/ocaml-ctypes-test-oo.patch		\
  %D%/packages/patches/ocaml-multiple-definitions.patch		\
  %D%/packages/patches/ogre-next-add-riscv64-support.patch		\
  %D%/packages/patches/ocaml-4.07-dynamically-allocate-signal-stack.patch	\

M gnu/packages/ocaml.scm => gnu/packages/ocaml.scm +5 -4
@@ 15,7 15,7 @@
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020, 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020, 2021, 2025 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 divoplade <d@divoplade.fr>
;;; Copyright © 2020, 2021, 2022 pukkamustard <pukkamustard@posteo.net>
;;; Copyright © 2021 aecepoglu <aecepoglu@fastmail.fm>


@@ 5698,7 5698,7 @@ long and size_t whose sizes depend on the host platform.")
(define-public ocaml-ctypes
  (package
   (name "ocaml-ctypes")
   (version "0.20.1")
   (version "0.23.0")
   (home-page "https://github.com/ocamllabs/ocaml-ctypes")
   (source (origin
             (method git-fetch)


@@ 5708,8 5708,9 @@ long and size_t whose sizes depend on the host platform.")
             (file-name (git-file-name name version))
             (sha256
              (base32
               "0ilzq9qzvwv9rc08cc9wchsx636zp870i7qvqmbigaa2qb812m0z"))))
   (build-system ocaml-build-system)
               "16dxz2r070vlrkbqhza0c5y6izxpjn080vqmxj47i919wfqd75vx"))
             (patches (search-patches "ocaml-ctypes-test-oo.patch"))))
   (build-system dune-build-system)
   (arguments
    `(#:phases
      (modify-phases %standard-phases

A gnu/packages/patches/ocaml-ctypes-test-oo.patch => gnu/packages/patches/ocaml-ctypes-test-oo.patch +49 -0
@@ 0,0 1,49 @@
Backport upstream commit fe4be538e389d5caf6c0a562cd02e58fda9361cb.

    Add an explicit upcast in the OO-style test.

https://github.com/yallop/ocaml-ctypes/commit/fe4be538e389d5caf6c0a562cd02e58fda9361cb

It allows to deal with GCC@14 stricter than the previous versions.

diff --git a/tests/clib/test_functions.c b/tests/clib/test_functions.c
index d19db2b..486b7d1 100644
--- a/tests/clib/test_functions.c
+++ b/tests/clib/test_functions.c
@@ -293,6 +293,11 @@ struct chorse *new_chorse(int colour)
   h->colour = (enum colour)colour;
   return h;
 }
+
+struct animal *new_chorse_as_animal(int colour)
+{
+  return (struct animal *)new_chorse(colour);
+}
 /* (End of OO-style example) */
 
 int accept_pointers(float *float_p,
diff --git a/tests/clib/test_functions.h b/tests/clib/test_functions.h
index 5022e98..579f622 100644
--- a/tests/clib/test_functions.h
+++ b/tests/clib/test_functions.h
@@ -79,6 +79,8 @@ extern char *chorse_colour(struct chorse *);
 extern char *chorse_say(struct animal *);
 extern char *chorse_identify(struct animal *);
 extern struct chorse *new_chorse(int);
+extern struct animal *new_chorse_as_animal(int);
+
 extern int accept_pointers(float *,
                            double *,
                            short *,
diff --git a/tests/test-oo_style/stubs/functions.ml b/tests/test-oo_style/stubs/functions.ml
index 4434331..6a8e7bd 100644
--- a/tests/test-oo_style/stubs/functions.ml
+++ b/tests/test-oo_style/stubs/functions.ml
@@ -82,6 +82,6 @@ struct
   let check_name = foreign "check_name"
     (ptr animal @-> string @-> returning int)
 
-    let new_chorse = foreign "new_chorse"
+    let new_chorse = foreign "new_chorse_as_animal"
       (int @-> returning (ptr animal))
 end