summaryrefslogtreecommitdiff
path: root/guix/scripts/build.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-03-01 21:55:42 +0100
committerLudovic Courtès <ludo@gnu.org>2013-03-01 21:55:42 +0100
commiteb0880e71d326753829a41b7afd66392960434cc (patch)
tree94fe7fc3f4773c23ae21032f15df9a0858b917ed /guix/scripts/build.scm
parent5d4b411f8a3372455a8c92d10a28e88e9edba6eb (diff)
ui: Factorize `read/eval-package-expression'.
* guix/scripts/package.scm (read/eval-package-expression): Move to... * guix/ui.scm (read/eval-package-expression): ... here. * guix/scripts/build.scm (derivations-from-package-expressions): Use it.
Diffstat (limited to 'guix/scripts/build.scm')
-rw-r--r--guix/scripts/build.scm33
1 files changed, 14 insertions, 19 deletions
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index fbd22a9e29..a49bfdbeb8 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -38,21 +38,18 @@
(define %store
(make-parameter #f))
-(define (derivations-from-package-expressions exp system source?)
- "Eval EXP and return the corresponding derivation path for SYSTEM.
+(define (derivations-from-package-expressions str system source?)
+ "Read/eval STR and return the corresponding derivation path for SYSTEM.
When SOURCE? is true, return the derivations of the package sources."
- (let ((p (eval exp (current-module))))
- (if (package? p)
- (if source?
- (let ((source (package-source p))
- (loc (package-location p)))
- (if source
- (package-source-derivation (%store) source)
- (leave (_ "~a: error: package `~a' has no source~%")
- (location->string loc) (package-name p))))
- (package-derivation (%store) p system))
- (leave (_ "expression `~s' does not evaluate to a package~%")
- exp))))
+ (let ((p (read/eval-package-expression str)))
+ (if source?
+ (let ((source (package-source p))
+ (loc (package-location p)))
+ (if source
+ (package-source-derivation (%store) source)
+ (leave (_ "~a: error: package `~a' has no source~%")
+ (location->string loc) (package-name p))))
+ (package-derivation (%store) p system))))
;;;
@@ -119,9 +116,7 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
(alist-cons 'derivations-only? #t result)))
(option '(#\e "expression") #t #f
(lambda (opt name arg result)
- (alist-cons 'expression
- (call-with-input-string arg read)
- result)))
+ (alist-cons 'expression arg result)))
(option '(#\K "keep-failed") #f #f
(lambda (opt name arg result)
(alist-cons 'keep-failed? #t result)))
@@ -227,8 +222,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
(let* ((src? (assoc-ref opts 'source?))
(sys (assoc-ref opts 'system))
(drv (filter-map (match-lambda
- (('expression . exp)
- (derivations-from-package-expressions exp sys
+ (('expression . str)
+ (derivations-from-package-expressions str sys
src?))
(('argument . (? derivation-path? drv))
drv)