summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/guile.scm16
-rw-r--r--gnu/packages/patches/guile-finalization-crash.patch61
4 files changed, 12 insertions, 70 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index a88a0102f6..bd4522162b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -980,7 +980,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-default-utf8.patch			\
   %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch	\
-  %D%/packages/patches/guile-finalization-crash.patch		\
   %D%/packages/patches/guile-linux-syscalls.patch		\
   %D%/packages/patches/guile-present-coding.patch		\
   %D%/packages/patches/guile-relocatable.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3079114492..51a74302e4 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -211,10 +211,10 @@ and provides a \"top-like\" mode (monitoring).")
      `(("pkg-config" ,pkg-config)
 
        ;; This is the Guile we use as a cross-compiler...
-       ("guile" ,guile-2.2/bug-fix)))
+       ("guile" ,guile-2.2.7)))
     (inputs
      ;; ... and this is the one that appears in shebangs when cross-compiling.
-     `(("guile" ,guile-2.2/bug-fix)          ;for <https://bugs.gnu.org/37757>
+     `(("guile" ,guile-2.2.7)                ;for <https://bugs.gnu.org/37757>
 
        ;; The 'shepherd' command uses Readline when used interactively.  It's
        ;; an unusual use case though, so we don't propagate it.
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a5466f8672..9c83f3339b 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -250,17 +250,21 @@ without requiring the source code to be rewritten.")
             (variable "GUILE_LOAD_COMPILED_PATH")
             (files '("lib/guile/2.2/site-ccache")))))))
 
-(define-public guile-2.2/bug-fix
-  ;; This variant contains a bug fix for a relatively rare crash that could
+(define-public guile-2.2.7
+  ;; This version contains a bug fix for a relatively rare crash that could
   ;; affect shepherd as PID 1: <https://bugs.gnu.org/37757>.
   (package
     (inherit guile-2.2)
-    (version (string-append (package-version guile-2.2) "-1"))
+    (version "2.2.7")
     (source (origin
               (inherit (package-source guile-2.2))
-              (patches
-               (append (search-patches "guile-finalization-crash.patch")
-                       (origin-patches (package-source guile-2.2))))))))
+              (uri (string-append "mirror://gnu/guile/guile-" version
+                                  ".tar.xz"))
+              (sha256
+               (base32
+                "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd"))))))
+
+(define-deprecated guile-2.2/bug-fix guile-2.2.7)
 
 (define-public guile-2.2/fixed
   ;; A package of Guile 2.2 that's rarely changed.  It is the one used
diff --git a/gnu/packages/patches/guile-finalization-crash.patch b/gnu/packages/patches/guile-finalization-crash.patch
deleted file mode 100644
index 098249e49f..0000000000
--- a/gnu/packages/patches/guile-finalization-crash.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-commit edf5aea7ac852db2356ef36cba4a119eb0c81ea9
-Author: Ludovic Courtès <ludo@gnu.org>
-Date:   Mon Dec 9 14:44:59 2019 +0100
-
-    Fix non-deterministic crash in 'finalization_thread_proc'.
-    
-    Fixes <https://bugs.gnu.org/37757>.
-    Reported by Jesse Gibbons <jgibbons2357@gmail.com>.
-    
-    * libguile/finalizers.c (finalization_thread_proc): Do not enter the
-    "switch (data.byte)" condition when data.n <= 0.
-
-diff --git a/libguile/finalizers.c b/libguile/finalizers.c
-index c5d69e8e3..94a6e6b0a 100644
---- a/libguile/finalizers.c
-+++ b/libguile/finalizers.c
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2012, 2013, 2014 Free Software Foundation, Inc.
-+/* Copyright (C) 2012, 2013, 2014, 2019 Free Software Foundation, Inc.
-  *
-  * This library is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU Lesser General Public License
-@@ -211,21 +211,26 @@ finalization_thread_proc (void *unused)
- 
-       scm_without_guile (read_finalization_pipe_data, &data);
-       
--      if (data.n <= 0 && data.err != EINTR) 
-+      if (data.n <= 0)
-         {
--          perror ("error in finalization thread");
--          return NULL;
-+          if (data.err != EINTR)
-+            {
-+              perror ("error in finalization thread");
-+              return NULL;
-+            }
-         }
--
--      switch (data.byte)
-+      else
-         {
--        case 0:
--          scm_run_finalizers ();
--          break;
--        case 1:
--          return NULL;
--        default:
--          abort ();
-+          switch (data.byte)
-+            {
-+            case 0:
-+              scm_run_finalizers ();
-+              break;
-+            case 1:
-+              return NULL;
-+            default:
-+              abort ();
-+            }
-         }
-     }
- }