~ruther/guix-local

e786293e769f4d69e14d77905bf3a5745557033f — Ludovic Courtès 11 years ago 5c2033f
derivations: Add 'derivation-name'.

* guix/derivations.scm (derivation-name): New procedure.
* tests/derivations.scm ("derivation-name"): New test.
2 files changed, 11 insertions(+), 0 deletions(-)

M guix/derivations.scm
M tests/derivations.scm
M guix/derivations.scm => guix/derivations.scm +6 -0
@@ 56,6 56,7 @@
            derivation-input-sub-derivations
            derivation-input-output-paths

            derivation-name
            fixed-output-derivation?
            offloadable-derivation?
            substitutable-derivation?


@@ 128,6 129,11 @@
                                          (derivation-outputs drv)))
                                    (number->string (object-address drv) 16))))

(define (derivation-name drv)
  "Return the base name of DRV."
  (let ((base (store-path-package-name (derivation-file-name drv))))
    (string-drop-right base 4)))

(define (fixed-output-derivation? drv)
  "Return #t if DRV is a fixed-output derivation, such as the result of a
download with a fixed hash (aka. `fetchurl')."

M tests/derivations.scm => tests/derivations.scm +5 -0
@@ 173,6 173,11 @@
                (= (stat:ino (lstat file1))
                   (stat:ino (lstat file2))))))))

(test-equal "derivation-name"
  "foo-0.0"
  (let ((drv (derivation %store "foo-0.0" %bash '())))
    (derivation-name drv)))

(test-assert "offloadable-derivation?"
  (and (offloadable-derivation? (derivation %store "foo" %bash '()))
       (not (offloadable-derivation?