summaryrefslogtreecommitdiff
path: root/guix/discovery.scm
diff options
context:
space:
mode:
authorLeo Famulari <leo@famulari.name>2017-07-10 14:37:53 -0400
committerLeo Famulari <leo@famulari.name>2017-07-10 14:37:53 -0400
commitc8eb2b8c60d954b4522555a5c75b7bb4be5a1a4d (patch)
tree3a2e569e333ccd9265237868d3f46b2d1e04e3a9 /guix/discovery.scm
parentad22c7185395a52bd90ea5890a2ac79f44d00352 (diff)
parent61adfb00b11cc16a70e60f19fd8e0a838a3ef608 (diff)
downloadguix-patches-c8eb2b8c60d954b4522555a5c75b7bb4be5a1a4d.tar
guix-patches-c8eb2b8c60d954b4522555a5c75b7bb4be5a1a4d.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'guix/discovery.scm')
-rw-r--r--guix/discovery.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/guix/discovery.scm b/guix/discovery.scm
index 292df2bd9c..2741725b9d 100644
--- a/guix/discovery.scm
+++ b/guix/discovery.scm
@@ -60,11 +60,21 @@ DIRECTORY is not accessible."
(case (entry-type absolute properties)
((directory)
(append (scheme-files absolute) result))
- ((regular symlink)
- ;; XXX: We don't recurse if we find a symlink.
+ ((regular)
(if (string-suffix? ".scm" name)
(cons absolute result)
result))
+ ((symlink)
+ (cond ((string-suffix? ".scm" name)
+ (cons absolute result))
+ ((stat absolute #f)
+ =>
+ (match-lambda
+ (#f result)
+ ((= stat:type 'directory)
+ (append (scheme-files absolute)
+ result))
+ (_ result)))))
(else
result))))))
'()