summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/guile-xyz.scm53
-rw-r--r--gnu/packages/patches/guile-fibers-libevent-32-bit.patch18
3 files changed, 59 insertions, 13 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 3d3e54406b..bc3cdbbaed 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1321,6 +1321,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-fibers-epoll-instance-is-dead.patch \
%D%/packages/patches/guile-fibers-fd-finalizer-leak.patch \
%D%/packages/patches/guile-fibers-wait-for-io-readiness.patch \
+ %D%/packages/patches/guile-fibers-libevent-32-bit.patch \
%D%/packages/patches/guile-fix-invalid-unicode-handling.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 69e4d02472..4acd756f9a 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -92,6 +92,7 @@
#:use-module (gnu packages hurd)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
@@ -783,10 +784,10 @@ Unix-style DSV format and RFC 4180 format.")
(inputs (list guile-2.2))
(propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
-(define-public guile-fibers-1.1
+(define-public guile-fibers-1.3
(package
(name "guile-fibers")
- (version "1.1.1")
+ (version "1.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -795,11 +796,9 @@ Unix-style DSV format and RFC 4180 format.")
(file-name (git-file-name name version))
(sha256
(base32
- "0ll63d7202clapg1k4bilbnlmfa4qvpjnsd7chbkka4kxf5klilc"))
+ "0wvdi4l58f9a5c9wi3cdc9l1bniscsixb6w2zj86mch7j7j814lc"))
(patches
- (search-patches "guile-fibers-wait-for-io-readiness.patch"
- "guile-fibers-epoll-instance-is-dead.patch"
- "guile-fibers-fd-finalizer-leak.patch"))))
+ (search-patches "guile-fibers-libevent-32-bit.patch"))))
(build-system gnu-build-system)
(arguments
(list #:make-flags
@@ -817,17 +816,15 @@ Unix-style DSV format and RFC 4180 format.")
(substitute* "Makefile"
(("tests/speedup.scm") ""))))))))
(native-inputs
- (list texinfo pkg-config autoconf automake libtool
+ (list texinfo pkg-config autoconf-2.71 automake libtool
guile-3.0 ;for 'guild compile
;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
gettext-minimal))
(inputs
- (list guile-3.0)) ;for libguile-3.0.so
- (supported-systems
- ;; This version requires 'epoll' and is thus limited to Linux-based
- ;; systems, but this may change soon:
- ;; <https://github.com/wingo/fibers/pull/53>.
- (filter (cut string-suffix? "-linux" <>) %supported-systems))
+ (append (list guile-3.0) ;for libguile-3.0.so
+ (if (hurd-target?)
+ (list libevent)
+ '())))
(synopsis "Lightweight concurrency facility for Guile")
(description
"Fibers is a Guile library that implements a a lightweight concurrency
@@ -844,6 +841,36 @@ is not available for Guile 2.0.")
(properties '((upstream-name . "fibers")))
(license license:lgpl3+)))
+(define-public guile-fibers-1.1
+ (package
+ (inherit guile-fibers-1.3)
+ (version "1.1.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wingo/fibers")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "guile-fibers" version))
+ (sha256
+ (base32
+ "0ll63d7202clapg1k4bilbnlmfa4qvpjnsd7chbkka4kxf5klilc"))
+ (patches
+ (search-patches "guile-fibers-wait-for-io-readiness.patch"
+ "guile-fibers-epoll-instance-is-dead.patch"
+ "guile-fibers-fd-finalizer-leak.patch"))))
+ (native-inputs
+ (list texinfo pkg-config autoconf automake libtool
+ guile-3.0 ;for 'guild compile
+ ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'
+ gettext-minimal))
+ (inputs
+ (list guile-3.0)) ;for libguile-3.0.so
+ (supported-systems
+ ;; This version requires 'epoll' and is thus limited to Linux-based
+ ;; systems, which is fixed in 1.2.0:
+ ;; <https://github.com/wingo/fibers/pull/53>.
+ (filter (cut string-suffix? "-linux" <>) %supported-systems))))
+
(define-public guile-fibers-next
(let ((commit "99fc3e38048f732de67c43fde52e949fa294aa7d")
(revision "1"))
diff --git a/gnu/packages/patches/guile-fibers-libevent-32-bit.patch b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
new file mode 100644
index 0000000000..a1cc99fdbe
--- /dev/null
+++ b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
@@ -0,0 +1,18 @@
+This fixes a bug with the libevent backend on 32-bit platforms:
+
+ https://github.com/wingo/fibers/issues/86
+
+diff --git a/extensions/libevent.c b/extensions/libevent.c
+index 4f44de9..52c9d73 100644
+--- a/extensions/libevent.c
++++ b/extensions/libevent.c
+@@ -215,7 +215,8 @@ run_event_loop (void *p)
+ microsec = -1;
+ else if (data->timeout >= 0)
+ {
+- microsec = data->timeout / time_units_per_microsec;
++ microsec = (time_units_per_microsec == 0)
++ ? 0 : data->timeout / time_units_per_microsec;
+ tv.tv_sec = 0;
+ tv.tv_usec = microsec;
+ }