projects/guix·blob ruby-team · refs

332 lines · 12.9 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <[email protected]>
3;;; Copyright © 2015, 2017 Mark H Weaver <[email protected]>
4;;; Copyright © 2015 Eric Dvorsak <[email protected]>
5;;; Copyright © 2016 David Thompson <[email protected]>
6;;; Copyright © 2017, 2019, 2020 Marius Bakke <[email protected]>
7;;; Copyright © 2017 Efraim Flashner <[email protected]>
8;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <[email protected]>
9;;; Copyright © 2019 Pierre Neidhardt <[email protected]>
10;;; Copyright © 2022 Luis Henrique Gomes Higino <[email protected]>
11;;; Copyright © 2023 Ricardo Wurmus <[email protected]>
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28(define-module (gnu packages libevent)
29 #:use-module (gnu packages)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (guix packages)
32 #:use-module (guix download)
33 #:use-module (guix git-download)
34 #:use-module (guix build-system gnu)
35 #:use-module (guix build-system perl)
36 #:use-module (gnu packages autotools)
37 #:use-module (gnu packages base)
38 #:use-module (gnu packages perl)
39 #:use-module (gnu packages perl-check)
40 #:use-module (gnu packages pkg-config)
41 #:use-module (gnu packages python)
42 #:use-module (gnu packages tls))
43
44(define-public libevent
45 (package
46 (name "libevent")
47 (version "2.1.12")
48 (source (origin
49 (method url-fetch)
50 (uri (string-append
51 "https://github.com/libevent/libevent/releases/download/release-"
52 version "-stable/libevent-" version "-stable.tar.gz"))
53 (sha256
54 (base32
55 "1fq30imk8zd26x8066di3kpc5zyfc5z6frr3zll685zcx4dxxrlj"))))
56 (build-system gnu-build-system)
57 (outputs '("out" "bin"))
58 (arguments
59 ;; This skips some of the tests which fail on armhf and aarch64.
60 '(#:configure-flags '("--disable-libevent-regress"
61 "--disable-openssl")))
62 (inputs
63 (list python-wrapper)) ;for 'event_rpcgen.py'
64 (native-inputs
65 (list which))
66 (home-page "https://libevent.org/")
67 (synopsis "Event notification library")
68 (description
69 "The libevent API provides a mechanism to execute a callback
70function when a specific event occurs on a file descriptor or after a
71timeout has been reached. Furthermore, libevent also support callbacks
72due to signals or regular timeouts.
73
74libevent is meant to replace the event loop found in event driven
75network servers. An application just needs to call event_dispatch() and
76then add or remove events dynamically without having to change the event
77loop.")
78 (license license:bsd-3)))
79
80(define-public libevent-with-openssl
81 (package/inherit libevent
82 (name "libevent-with-openssl")
83 (inputs (modify-inputs inputs
84 (prepend openssl)))
85 (arguments
86 ;; This skips some of the tests which fail on armhf and aarch64.
87 '(#:configure-flags '("--disable-libevent-regress")))))
88
89(define-public libev
90 (package
91 (name "libev")
92 (version "4.33")
93 (source (origin
94 (method url-fetch)
95 (uri (string-append "http://dist.schmorp.de/libev/Attic/libev-"
96 version
97 ".tar.gz"))
98 (sha256
99 (base32
100 "1sjs4324is7fp21an4aas2z4dwsvs6z4xwrmp72vwpq1s6wbfzjh"))))
101 (build-system gnu-build-system)
102 (arguments
103 '(#:configure-flags '("--disable-static")))
104 (home-page "http://software.schmorp.de/pkg/libev.html")
105 (synopsis "Event loop loosely modelled after libevent")
106 (description
107 "libev provides a full-featured and high-performance event loop that is
108loosely modelled after libevent. It includes relative timers, absolute timers
109with customized rescheduling, synchronous signals, process status change
110events, event watchers dealing with the event loop itself, file watchers, and
111limited support for fork events.")
112 (license (list license:bsd-2 license:gpl2+))))
113
114(define-public libuv
115 (package
116 (name "libuv")
117 (version "1.44.2")
118 (source (origin
119 (method url-fetch)
120 (uri (string-append "https://dist.libuv.org/dist/v" version
121 "/libuv-v" version ".tar.gz"))
122 (sha256
123 (base32
124 "1d1wy1061cf2mfygr2j6jbm0da2mhsf0l9yq4rjkqrsmijbdrz6c"))))
125 (build-system gnu-build-system)
126 (arguments
127 '(#:configure-flags '("--disable-static")
128 ;; XXX: Some tests want /dev/tty, attempt to make connections, etc.
129 #:tests? #f))
130 (native-inputs (list autoconf automake libtool
131 ;; libuv.pc is installed only when pkg-config is found.
132 pkg-config))
133 (home-page "https://github.com/libuv/libuv")
134 (synopsis "Library for asynchronous I/O")
135 (description
136 "libuv is a multi-platform support library with a focus on asynchronous
137I/O. Among other things, it supports event loops via epoll, kqueue, and
138similar IOCP, and event ports, asynchronous TCP/UDP sockets, asynchronous DNS
139resolution, asynchronous file system operations, and threading primitives.")
140
141 ;; A few files fall under other non-copyleft licenses; see 'LICENSE' for
142 ;; details. Documentation is CC-BY 4.0 as of 1.12.0; see 'LICENSE-docs'.
143 (license (list license:expat license:cc-by4.0))))
144
145(define-public libuv-for-node
146 ;; When upgrading Node, also upgrade this. Get the version from
147 ;; https://github.com/nodejs/node/blob/master/deps/uv/include/uv/version.h
148 (package
149 (inherit libuv)
150 (name "libuv")
151 (version "1.42.0")
152 (source (origin
153 (method url-fetch)
154 (uri (string-append "https://dist.libuv.org/dist/v" version
155 "/libuv-v" version ".tar.gz"))
156 (sha256
157 (base32
158 "0wpb9pz3r8nksnrf4zbixj2kk9whr7abi45ydrwyv2js2ljrc4j3"))))
159 (properties '((hidden? . #t)))))
160
161(define-public libuv-for-node-lts
162 ;; When upgrading Node, also upgrade this. Get the version from
163 ;; https://github.com/nodejs/node/blob/main/deps/uv/include/uv/version.h
164 (package
165 (inherit libuv)
166 (name "libuv")
167 (version "1.52.1")
168 (source (origin
169 (method url-fetch)
170 (uri (string-append "https://dist.libuv.org/dist/v" version
171 "/libuv-v" version ".tar.gz"))
172 (sha256
173 (base32
174 "1rzrrylgqyjcnjarph3r2h5i3cxjpx7j7svr4bkc0d73wswi3mb6"))))
175 (properties '((hidden? . #t)))))
176
177(define-public libuv-for-r-httpuv
178 ;; When upgrading r-httpuv, also upgrade this.
179 (package
180 (inherit libuv)
181 (name "libuv")
182 (version "1.43.0")
183 (source (origin
184 (method url-fetch)
185 (uri (string-append "https://dist.libuv.org/dist/v" version
186 "/libuv-v" version ".tar.gz"))
187 (sha256
188 (base32
189 "194kwq3jfj9s628kzkchdca534rikjw0xiyas0cjbphqmsvjpmwh"))))
190 (properties '((hidden? . #t)))))
191
192(define-public libuv-julia
193 (let ((commit "e6f0e4900e195c8352f821abe2b3cffc3089547b")
194 (revision "4"))
195 ;; When upgrading Julia, also upgrade this. Get the commit from
196 ;; https://github.com/JuliaLang/julia/blob/v1.8.2/deps/libuv.version
197 (package
198 (inherit libuv)
199 (name "libuv-julia")
200 (version (git-version "2.0.0" revision commit))
201 (source (origin
202 (method git-fetch)
203 (uri (git-reference
204 (url "https://github.com/JuliaLang/libuv")
205 (commit commit)))
206 (file-name (git-file-name name version))
207 (sha256
208 (base32
209 "0ib2cprvbyviwrzm0fw6dqvlbm9akf2kj3vjzp82q3gii74cv3c9"))))
210 (arguments
211 '(#:configure-flags '("--with-pic")
212 #:tests? #f))
213 (home-page "https://github.com/JuliaLang/libuv")
214 (properties '((hidden? . #t))))))
215
216(define-public libuv-for-luv
217 ;; When upgrading make-lua-luv, also upgrade this. Get the version from
218 ;; https://github.com/luvit/luv/blob/master/CMakeLists.txt
219 (package
220 (inherit libuv)
221 (name "libuv")
222 (version "1.52.1")
223 (source (origin
224 (method url-fetch)
225 (uri (string-append "https://dist.libuv.org/dist/v" version
226 "/libuv-v" version ".tar.gz"))
227 (sha256
228 (base32
229 "1rzrrylgqyjcnjarph3r2h5i3cxjpx7j7svr4bkc0d73wswi3mb6"))))
230 (properties '((hidden? . #t)))))
231
232(define-public perl-anyevent
233 (package
234 (name "perl-anyevent")
235 (version "7.17")
236 (source (origin
237 (method url-fetch)
238 (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
239 "AnyEvent-" version ".tar.gz"))
240 (sha256
241 (base32
242 "11drlj8r02czhjgzkb39axnr8zzyp506r043xfmf93q9kilfmgjh"))))
243 (build-system perl-build-system)
244 (native-inputs
245 (list perl-canary-stability))
246 (propagated-inputs
247 (list perl-async-interrupt
248 perl-ev
249 perl-guard
250 perl-json
251 perl-json-xs
252 perl-net-ssleay
253 perl-task-weaken))
254 (home-page "https://metacpan.org/release/AnyEvent")
255 (synopsis
256 "API for I/O, timer, signal, child process and completion events")
257 (description
258 "This module allows using a variety of events without forcing module
259authors to pick a specific event loop, and without noticeable overhead.
260Currently supported event loops are EV, Event, Glib/Gtk2, Tk, Qt,
261@code{Event::Lib}, Irssi, @code{IO::Async} and POE (and thus also WxWidgets
262and Prima). It also comes with a very fast Pure Perl event loop that does
263not rely on XS.")
264 (license license:perl-license)))
265
266(define-public perl-ev
267 (package
268 (name "perl-ev")
269 (version "4.31")
270 (source (origin
271 (method url-fetch)
272 (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/EV-"
273 version ".tar.gz"))
274 (sha256
275 (base32
276 "1jxlhnvrqim39977zwavjrcbdf9bifb46pwaxvm0s8klq121kjwb"))
277 (modules '((guix build utils)))
278 (snippet
279 '(begin
280 ;; Drop bundled libev.
281 (delete-file-recursively "libev")
282 #t))))
283 (build-system perl-build-system)
284 (arguments
285 '(#:phases
286 (modify-phases %standard-phases
287 (add-after 'unpack 'unpack-libev
288 ;; This package requires the libev *sources* in order
289 ;; to build. Unpack system libev here...
290 (lambda* (#:key inputs #:allow-other-keys)
291 (mkdir "./libev")
292 (invoke "tar" "-xf" (assoc-ref inputs "libev-source")
293 "-C" "./libev" "--strip-components=1"))))))
294 (native-inputs
295 `(("libev-source" ,(package-source libev))
296 ("perl-canary-stability" ,perl-canary-stability)))
297 (propagated-inputs
298 (list perl-common-sense))
299 (home-page "https://metacpan.org/release/EV")
300 (synopsis "Perl interface to libev")
301 (description
302 "This module provides an interface to @code{libev}, a high performance
303full-featured event loop. It can be used through the @code{AnyEvent} module
304and still be faster than other event loops currently supported in Perl.")
305 (license license:perl-license)))
306
307(define-public perl-rpc-epc-service
308 (package
309 (name "perl-rpc-epc-service")
310 (version "0.0.11")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (string-append
315 "mirror://cpan/authors/id/K/KI/KIWANAMI/RPC-EPC-Service-"
316 "v" version ".tar.gz"))
317 (sha256
318 (base32
319 "1qwb284z4ig3xzy21m1b3w8bkb8k6l2ij6cjz93znn2j6qs42pwp"))))
320 (build-system perl-build-system)
321 (native-inputs
322 (list perl-module-build perl-test-simple))
323 (propagated-inputs
324 (list perl-anyevent perl-data-sexpression))
325 (arguments
326 ;; Tests seem to fail because they try to start a server.
327 `(#:tests? #f))
328 (home-page "https://metacpan.org/release/RPC-EPC-Service")
329 (synopsis "Asynchronous remote procedure stack")
330 (description "RPC::EPC::Service enables to connect the other process with
331the S-expression protocol, like the Swank protocol of the SLIME.")
332 (license license:perl-license)))