aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/guile.scm11
-rw-r--r--guix/self.scm2
2 files changed, 12 insertions, 1 deletions
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))