From 07a33b1d21e240781072352f93206cfdc765f907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 30 Nov 2020 23:16:57 +0100 Subject: services: profile: Create manifest at monadic-bind time. Fixes . Reported by Mathieu Othacehe . * gnu/services.scm (packages->profile-entry): Change 'with-monad' to 'mlet' with one binding. --- gnu/services.scm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'gnu/services.scm') diff --git a/gnu/services.scm b/gnu/services.scm index 4b30399adc..13259dfaee 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -788,7 +788,13 @@ executables, making them setuid-root."))) (define (packages->profile-entry packages) "Return a system entry for the profile containing PACKAGES." - (with-monad %store-monad + ;; XXX: 'mlet' is needed here for one reason: to get the proper + ;; '%current-target' and '%current-target-system' bindings when + ;; 'packages->manifest' is called, and thus when the 'package-inputs' + ;; etc. procedures are called on PACKAGES. That way, conditionals in those + ;; inputs see the "correct" value of these two parameters. See + ;; . + (mlet %store-monad ((_ (current-target-system))) (return `(("profile" ,(profile (content (packages->manifest (delete-duplicates packages eq?))))))))) -- cgit v1.2.3