~ruther/guix-local

acb01e37466a1d3fff81f10e00fe15a4ef20e2db — Ludovic Courtès 10 years ago 70ac09a
grafts: Add record type printer.

* guix/grafts.scm (write-graft): New procedure.  Register it as a
printer for <graft>.
1 files changed, 17 insertions(+), 0 deletions(-)

M guix/grafts.scm
M guix/grafts.scm => guix/grafts.scm +17 -0
@@ 21,6 21,7 @@
  #:use-module (guix derivations)
  #:use-module ((guix utils) #:select (%current-system))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9 gnu)
  #:use-module (srfi srfi-26)
  #:use-module (ice-9 match)
  #:export (graft?


@@ 44,6 45,22 @@
  (replacement-output graft-replacement-output    ;string | #f
                      (default "out")))

(define (write-graft graft port)
  "Write a concise representation of GRAFT to PORT."
  (define (->string thing output)
    (if (derivation? thing)
        (derivation->output-path thing output)
        thing))

  (match graft
    (($ <graft> origin origin-output replacement replacement-output)
     (format port "#<graft ~a ==> ~a ~a>"
             (->string origin origin-output)
             (->string replacement replacement-output)
             (number->string (object-address graft) 16)))))

(set-record-type-printer! <graft> write-graft)

(define* (graft-derivation store drv grafts
                           #:key
                           (name (derivation-name drv))