build: support Guix.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 20 Jul 2017 06:16:54 +0000 (08:16 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:08 +0000 (11:36 +0200)
* guile/guix/make.scm (link-or-cp): New function.
  (assert-link, store): Use it.

guile/guix/make.scm

index 9c5746f92d602bfb16b2347f0ccf042f6c314068..55fc88a6e710ae7ed3843dedf9f4af56de853ee9 100644 (file)
   (string-append %store-dir "/" (if (string? o) o
                                     (target-hash o))))
 
+(define (link-or-cp existing-file new-file)
+  (catch #t
+    (lambda _ (link existing-file new-file))
+    (lambda _ (copy-file existing-file new-file))))
+
 (define (assert-link existing-file new-file)
-  (if (not (file-exists? new-file)) (link existing-file new-file)))
+  (if (not (file-exists? new-file)) (link-or-cp existing-file new-file)))
 
 (define store
   (let ((*store* '()))
                        (file-name (target-file-name get)))
                    (and (file-exists? store-file)
                         (if (file-exists? file-name) (delete-file file-name))
-                        (link store-file file-name)
+                        (link-or-cp store-file file-name)
                         (store #:add get #:key key)))))
             (get (assoc-ref *store* get))
             (delete (and (assoc-ref *store* delete)