From a3a7c09b06027bd30a96ae4607fa40bd790af840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 7 Apr 2018 18:17:12 +0200 Subject: evaluate: Honor the given load path. * bin/evaluate.in (main): Prepend LOAD-PATH to '%load-path' for the dynamic extend of the 'primitive-load' call. --- bin/evaluate.in | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'bin') diff --git a/bin/evaluate.in b/bin/evaluate.in index 0d2ef9c..622e4c5 100644 --- a/bin/evaluate.in +++ b/bin/evaluate.in @@ -33,6 +33,9 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" (guix derivations) (guix store)) +(define %not-colon + (char-set-complement (char-set #\:))) + (define* (main #:optional (args (command-line))) (match args ((command load-path guix-package-path source specstr) @@ -40,12 +43,21 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@" (let ((%user-module (make-fresh-user-module)) (spec (with-input-from-string specstr read)) (stdout (current-output-port)) - (stderr (current-error-port))) + (stderr (current-error-port)) + (load-path (string-tokenize load-path %not-colon))) (save-module-excursion (lambda () (set-current-module %user-module) (with-directory-excursion source - (primitive-load (assq-ref spec #:file))))) + (let ((original-path %load-path)) + (dynamic-wind + (lambda () + (set! %load-path (append load-path original-path))) + (lambda () + (primitive-load (assq-ref spec #:file))) + (lambda () + (set! %load-path original-path))))))) + (with-store store (unless (assoc-ref spec #:use-substitutes?) ;; Make sure we don't resort to substitutes. -- cgit v1.2.3