[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/08: utils: 'version-compare' delays 'dynamic-link' code.
From: |
guix-commits |
Subject: |
03/08: utils: 'version-compare' delays 'dynamic-link' code. |
Date: |
Fri, 6 Dec 2019 18:28:10 -0500 (EST) |
civodul pushed a commit to branch wip-system-bootstrap
in repository guix.
commit 7ceaae7aa305a68bf2f8202b1f546796661f3243
Author: Ludovic Courtès <address@hidden>
Date: Fri Dec 6 23:07:13 2019 +0100
utils: 'version-compare' delays 'dynamic-link' code.
* guix/utils.scm (version-compare): Delay 'strverscmp' and force it when
called.
---
guix/utils.scm | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/guix/utils.scm b/guix/utils.scm
index 728039f..b3aacfa 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -508,14 +508,17 @@ a character other than '@'."
(define version-compare
(let ((strverscmp
- (let ((sym (or (dynamic-func "strverscmp" (dynamic-link))
- (error "could not find `strverscmp' (from GNU
libc)"))))
- (pointer->procedure int sym (list '* '*)))))
+ ;; Delay symbol resolution so that this module can be used even on a
+ ;; statically-linked Guile.
+ (delay
+ (let ((sym (or (dynamic-func "strverscmp" (dynamic-link))
+ (error "could not find `strverscmp' (from GNU
libc)"))))
+ (pointer->procedure int sym (list '* '*))))))
(lambda (a b)
"Return '> when A denotes a newer version than B,
'< when A denotes a older version than B,
or '= when they denote equal versions."
- (let ((result (strverscmp (string->pointer a) (string->pointer b))))
+ (let ((result ((force strverscmp) (string->pointer a) (string->pointer
b))))
(cond ((positive? result) '>)
((negative? result) '<)
(else '=))))))
- branch wip-system-bootstrap created (now 6ab64e3), guix-commits, 2019/12/06
- 01/08: machine: ssh: Deprecate missing 'host-key' field., guix-commits, 2019/12/06
- 04/08: monads: Add portability to Guile 2.0., guix-commits, 2019/12/06
- 03/08: utils: 'version-compare' delays 'dynamic-link' code.,
guix-commits <=
- 02/08: derivations: Add 'derivation-input-fold'., guix-commits, 2019/12/06
- 06/08: DRAFT gexp: Add 'raw-derivation-closure'., guix-commits, 2019/12/06
- 05/08: DRAFT gexp: Add 'raw-derivation-file'., guix-commits, 2019/12/06
- 07/08: DRAFT gexp: Add 'object-sources'., guix-commits, 2019/12/06
- 08/08: DRAFT system: Add (gnu system bootstrap)., guix-commits, 2019/12/06