From 66f217b43aca603326dab17d4dda1a398bf4fb8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 7 Dec 2017 17:13:47 +0100 Subject: pull: Build with an ABI-compatible Guile. Fixes . Reported by Vagrant Cascadian . * build-aux/build-self.scm (matching-guile-2.2): New procedure. (guile-for-build): Use it. --- build-aux/build-self.scm | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'build-aux') diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm index ed8ff5f4ce..6415978839 100644 --- a/build-aux/build-self.scm +++ b/build-aux/build-self.scm @@ -120,13 +120,30 @@ person's version identifier." ;; XXX: Replace with a Git commit id. (date->string (current-date 0) "~Y~m~d.~H")) +(define (matching-guile-2.2) + "Return a Guile 2.2 with the same version as the current one or immediately +older than then current one. This is so that we do not build ABI-incompatible +objects. See ." + (let loop ((packages (find-packages-by-name "guile" "2.2")) + (best #f)) + (match packages + (() + best) + ((head tail ...) + (if (string=? (package-version head) (version)) + head + (if best + (if (version>? (package-version head) (version)) + (loop tail best) + (loop tail head)) + (loop tail head))))))) + (define (guile-for-build) "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently running Guile." (package->derivation (cond-expand (guile-2.2 - (canonical-package - (specification->package "guile@2.2"))) + (canonical-package (matching-guile-2.2))) (else (canonical-package (specification->package "guile@2.0")))))) -- cgit v1.2.3