gnu: guile-fibers: Add 1.3.1.

* gnu/packages/guile-xyz.scm (guile-fibers-1.3): New variable.
(guile-fibers-1.1): Inherit from it.
* gnu/packages/patches/guile-fibers-libevent-32-bit.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
Ludovic Courtès 2023-06-06 23:50:38 +02:00
parent 09449ef6f6
commit 49119eee2b
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 59 additions and 13 deletions

View file

@ -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 \

View file

@ -92,6 +92,7 @@ (define-module (gnu packages guile-xyz)
#: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 @@ (define-public guile2.2-dsv
(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 @@ (define-public guile-fibers-1.1
(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 @@ (define-public guile-fibers-1.1
(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 @@ (define-public guile-fibers-1.1
(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"))

View file

@ -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;
}