summaryrefslogtreecommitdiff
path: root/guix/build/copy-build-system.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-02-28 19:07:46 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-02-28 19:07:46 +0100
commitd614f0bba90c86c836131eea3ebb9cbd30f19abf (patch)
tree22e6250fc344f86e0e356e0dcad254b95373877a /guix/build/copy-build-system.scm
parent7fe962788ac330fce18d7cc39f613bb1f961d6ea (diff)
parent20c87138a9ca1bbccef2ee91589f11ec70985555 (diff)
Merge branch 'master' into staging
Diffstat (limited to 'guix/build/copy-build-system.scm')
-rw-r--r--guix/build/copy-build-system.scm8
1 files changed, 7 insertions, 1 deletions
diff --git a/guix/build/copy-build-system.scm b/guix/build/copy-build-system.scm
index 6d9dc8f93b..a86f0cde29 100644
--- a/guix/build/copy-build-system.scm
+++ b/guix/build/copy-build-system.scm
@@ -91,7 +91,13 @@ if TARGET ends with a '/', the source is installed underneath."
file))))
(format (current-output-port) "`~a' -> `~a'~%" file dest)
(mkdir-p (dirname dest))
- (copy-file file dest)))
+ (let ((stat (lstat file)))
+ (case (stat:type stat)
+ ((symlink)
+ (let ((target (readlink file)))
+ (symlink target dest)))
+ (else
+ (copy-file file dest))))))
(define* (make-file-predicate suffixes matches-regexp #:optional (default-value #t))
"Return a predicate that returns #t if its file argument matches the