~ruther/guix-local

4ca0b4101d2d15fc41c0a875f09553ded27091bd — Ludovic Courtès 11 years ago a54c94a
profiles: Get rid of the 'inputs' field of 'manifest-entry'.

* guix/profiles.scm (<manifest-entry>)[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.
2 files changed, 17 insertions(+), 22 deletions(-)

M guix/profiles.scm
M guix/scripts/package.scm
M guix/profiles.scm => guix/profiles.scm +10 -18
@@ 86,10 86,8 @@
  (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> manifest-pattern
  make-manifest-pattern


@@ 210,11 208,11 @@ the given MANIFEST."
  (define inputs
    (append-map (match-lambda
                 (($ <manifest-entry> name version
                                      output path deps (inputs ..1))
                  inputs)
                                      output (? package? package) deps)
                  `((,package ,output) ,@deps))
                 (($ <manifest-entry> 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 @@ the given MANIFEST."
        (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))

M guix/scripts/package.scm => guix/scripts/package.scm +7 -4
@@ 647,15 647,18 @@ return the new list of manifest entries."
    ;; 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