diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-12-07 17:13:47 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-12-07 17:13:47 +0100 |
commit | 66f217b43aca603326dab17d4dda1a398bf4fb8c (patch) | |
tree | 1cfedcf99159469a9dec9f7421b4877d30310c42 /build-aux | |
parent | 28faa40c40270e01ebe18d9f178d1dbdd2ce425b (diff) | |
download | guix-66f217b43aca603326dab17d4dda1a398bf4fb8c.tar.gz |
pull: Build with an ABI-compatible Guile.
Fixes <https://bugs.gnu.org/29570>. Reported by Vagrant Cascadian <vagrant@debian.org>. * build-aux/build-self.scm (matching-guile-2.2): New procedure. (guile-for-build): Use it.
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/build-self.scm | 21 |
1 files changed, 19 insertions, 2 deletions
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 <https://bugs.gnu.org/29570>." + (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")))))) |