Subject: [bug#40684] [PATCH v2] guix: self: Use guile with libgc-7.

From: Christopher Baines <[email-masked]>
Date: Sat, 18 Apr 2020 09:08:47 +0100

Rather than libgc version 8. This should avoid crashes that can occur,
particularly when loading data in to the Guix Data Service [1].

1: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40525

* gnu/packages/guile.scm (guile-3.0/libgc-7): New variable.
* guix/self.scm (specification->package): Use guile-3.0/libgc-7 for guile.
---
 gnu/packages/guile.scm | 11 +++++++++++
 guix/self.scm          |  2 +-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 8ccbc22f26..a262553ba1 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -309,6 +309,17 @@ without requiring the source code to be rewritten.")
 
 (define-public guile-next guile-3.0)
 
+(define-public guile-3.0/libgc-7
+  ;; Using libgc-7 avoid crashes that can occur, particularly when loading
+  ;; data in to the Guix Data Service:
+  ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40525
+  (hidden-package
+   (package
+     (inherit guile-3.0)
+     (propagated-inputs
+      `(("bdw-gc" ,libgc-7)
+        ,@(srfi-1:alist-delete "bdw-gc" (package-propagated-inputs guile-3.0)))))))
+
 (define-public guile-3.0/fixed
   ;; A package of Guile that's rarely changed.  It is the one used in the
   ;; `base' module, and thus changing it entails a full rebuild.
diff --git a/guix/self.scm b/guix/self.scm
index 842161400e..905f931aeb 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -48,7 +48,7 @@
   (let ((ref (lambda (module variable)
                (module-ref (resolve-interface module) variable))))
     (match-lambda
-      ("guile"      (ref '(gnu packages guile) 'guile-3.0))
+      ("guile"      (ref '(gnu packages guile) 'guile-3.0/libgc-7))
       ("guile-json" (ref '(gnu packages guile) 'guile-json-3))
       ("guile-ssh"  (ref '(gnu packages ssh)   'guile-ssh))
       ("guile-git"  (ref '(gnu packages guile) 'guile-git))
-- 
2.26.0