diff mbox series

[bug#56806,1/9] gnu: Add ocaml-luv.

Message ID HNANXaAbhLuLIARPOyft_4EvsW3Imo1zuAuPbBRC0nLK5N9DBRIuYjcJVrPOqk1bvAeQYREipIUQvg6wocn3rEAaECCMD6TM2Lm-H2TjwZ0=@protonmail.com
State Accepted
Headers show
Series Add the Haxe language and tools. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

John Kehayias July 28, 2022, 4:08 a.m. UTC
Empty Message
diff mbox series

Patch

From d96390019a22b1b01b5845f971e46523a42848e5 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Wed, 27 Jul 2022 23:31:26 -0400
Subject: [PATCH 1/9] gnu: Add ocaml-luv.

* gnu/packages/ocaml.scm (ocaml-luv): New variable.
---
 gnu/packages/ocaml.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index ff24861eb0..895b99320e 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -25,6 +25,7 @@ 
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2624,6 +2625,48 @@  (define-public ocaml-lwt
 locks or other synchronization primitives.")
     (license license:lgpl2.1)))
 
+(define-public ocaml-luv
+  (package
+    (name "ocaml-luv")
+    (version "0.5.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/aantron/luv/releases/download/"
+                                  version "/luv-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0hrsi8n2l31bcwgj847df4chjgqb9lmwkaky8fvvi15k25rz9v6c"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Remove bundled configure and libuv.
+                  (delete-file-recursively "src/c/vendor")
+                  #t))))
+    (build-system dune-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'use-system-libuv
+                 (lambda _
+                   (setenv "LUV_USE_SYSTEM_LIBUV" "yes")))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "dune" "runtest" "--no-buffer" "--force")))))))
+    (inputs (list libuv))
+    (propagated-inputs (list ocaml-ctypes ocaml-result ocaml-odoc))
+    (native-inputs (list ocaml-base ocaml-alcotest))
+    (home-page "https://github.com/aantron/luv")
+    (synopsis "Binding to libuv: cross-platform asynchronous I/O")
+    (description
+     "Luv is a binding to libuv, the cross-platform C library that does
+asynchronous I/O in Node.js and runs its main loop.  Besides asynchronous I/O,
+libuv also supports multiprocessing and multithreading.  Multiple event loops
+can be run in different threads.  libuv also exposes a lot of other
+functionality, amounting to a full OS API, and an alternative to the standard
+module Unix.")
+    (license license:expat)))
+
 (define-public ocaml-lwt-react
   (package
     (inherit ocaml-lwt)
-- 
2.37.1