From 4ca0b4101d2d15fc41c0a875f09553ded27091bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 26 Jul 2014 22:21:43 +0200 Subject: [PATCH] profiles: Get rid of the 'inputs' field of 'manifest-entry'. * guix/profiles.scm ()[inputs]: Remove. (profile-derivation): Rely on 'item' and 'deps' instead of 'inputs'. Adjust 'builder' accordingly. * guix/scripts/package.scm (options->installable)[package->manifest-entry]: Remove 'inputs' field. Change 'dependencies' field to contain packages. --- guix/profiles.scm | 28 ++++++++++------------------ guix/scripts/package.scm | 11 +++++++---- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 64c69c4429..96c8ca0514 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -86,10 +86,8 @@ (define-record-type* manifest-entry (output manifest-entry-output ; string (default "out")) (item manifest-entry-item) ; package | store path - (dependencies manifest-entry-dependencies ; list of store paths - (default '())) - (inputs manifest-entry-inputs ; list of inputs to build - (default '()))) ; this entry + (dependencies manifest-entry-dependencies ; (store path | package)* + (default '()))) (define-record-type* manifest-pattern make-manifest-pattern @@ -210,11 +208,11 @@ (define (profile-derivation manifest) (define inputs (append-map (match-lambda (($ name version - output path deps (inputs ..1)) - inputs) + output (? package? package) deps) + `((,package ,output) ,@deps)) (($ name version output path deps) ;; Assume PATH and DEPS are already valid. - `((,name ,path) ,@deps))) + `(,path ,@deps))) (manifest-entries manifest))) (define builder @@ -225,17 +223,11 @@ (define builder (setvbuf (current-output-port) _IOLBF) (setvbuf (current-error-port) _IOLBF) - (let ((inputs '#$(map (match-lambda - ((label thing) - thing) - ((label thing output) - `(,thing ,output))) - inputs))) - (union-build #$output inputs - #:log-port (%make-void-port "w")) - (call-with-output-file (string-append #$output "/manifest") - (lambda (p) - (pretty-print '#$(manifest->gexp manifest) p)))))) + (union-build #$output '#$inputs + #:log-port (%make-void-port "w")) + (call-with-output-file (string-append #$output "/manifest") + (lambda (p) + (pretty-print '#$(manifest->gexp manifest) p))))) (gexp->derivation "profile" builder #:modules '((guix build union)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index bc2c854853..3fe7385bc2 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -647,15 +647,18 @@ (define (package->manifest-entry p output) ;; When given a package via `-e', install the first of its ;; outputs (XXX). (let* ((output (or output (car (package-outputs p)))) - (deps (deduplicate (package-transitive-propagated-inputs p)))) + (deps (map (match-lambda + ((label package) + `(,package "out")) + ((label package output) + `(,package ,output))) + (package-transitive-propagated-inputs p)))) (manifest-entry (name (package-name p)) (version (package-version p)) (output output) (item p) - (dependencies deps) - (inputs (cons (list (package-name p) p output) - deps))))) + (dependencies (delete-duplicates deps))))) (define upgrade-regexps (filter-map (match-lambda