syscalls: Delay resolution of "scm_set_automatic_finalization_enabled".

* guix/build/syscalls.scm (%set-automatic-finalization-enabled?!) [guile-2.2]:
Wrap in 'delay'.
master
Ludovic Courtès 2017-07-18 15:29:45 +02:00
parent 2acfe022a7
commit ef03d8dc37
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 10 additions and 6 deletions

View File

@ -725,15 +725,19 @@ mounted at FILE."
(cond-expand
(guile-2.2
(define %set-automatic-finalization-enabled?!
(let ((proc (pointer->procedure int
(dynamic-func
"scm_set_automatic_finalization_enabled"
(dynamic-link))
(list int))))
;; When using a statically-linked Guile, for instance in the initrd, we
;; cannot resolve this symbol, but most of the time we don't need it
;; anyway. Thus, delay it.
(let ((proc (delay
(pointer->procedure int
(dynamic-func
"scm_set_automatic_finalization_enabled"
(dynamic-link))
(list int)))))
(lambda (enabled?)
"Switch on or off automatic finalization in a separate thread.
Turning finalization off shuts down the finalization thread as a side effect."
(->bool (proc (if enabled? 1 0))))))
(->bool ((force proc) (if enabled? 1 0))))))
(define-syntax-rule (without-automatic-finalization exp)
"Turn off automatic finalization within the dynamic extent of EXP."