aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanjela Lura <danielaluraa@gmail.com>2020-08-07 18:52:30 +0200
committerChristopher Baines <mail@cbaines.net>2020-08-12 08:53:54 +0100
commitbef826cf2ef17d5d7d9a6f4b339b5b40c82075d0 (patch)
treef050571d3a51beefc28162735e2105820b0d6f02
parent5b3e5d9441948fe621c495a36556ec1011f65b41 (diff)
downloaddata-service-bef826cf2ef17d5d7d9a6f4b339b5b40c82075d0.tar
data-service-bef826cf2ef17d5d7d9a6f4b339b5b40c82075d0.tar.gz
Make call-with-time-logging handle multiple return values
Signed-off-by: Christopher Baines <mail@cbaines.net>
-rw-r--r--guix-data-service/utils.scm15
1 files changed, 9 insertions, 6 deletions
diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm
index 1eb3e4f..738f839 100644
--- a/guix-data-service/utils.scm
+++ b/guix-data-service/utils.scm
@@ -16,18 +16,21 @@
;;; <http://www.gnu.org/licenses/>.
(define-module (guix-data-service utils)
+ #:use-module (srfi srfi-11)
#:export (call-with-time-logging
with-time-logging
prevent-inlining-for-tests))
(define (call-with-time-logging action thunk)
(simple-format #t "debug: Starting ~A\n" action)
- (let* ((start-time (current-time))
- (result (thunk))
- (time-taken (- (current-time) start-time)))
- (simple-format #t "debug: Finished ~A, took ~A seconds\n"
- action time-taken)
- result))
+ (let-values
+ ((result
+ (thunk)))
+ (let* ((start-time (current-time))
+ (time-taken (- (current-time) start-time)))
+ (simple-format #t "debug: Finished ~A, took ~A seconds\n"
+ action time-taken)
+ (apply values result))))
(define-syntax-rule (with-time-logging action exp ...)
"Log under NAME the time taken to evaluate EXP."