summaryrefslogtreecommitdiff
path: root/guix/gexp.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-04-01 12:10:30 +0200
committerLudovic Courtès <ludo@gnu.org>2018-04-01 12:36:02 +0200
commite640c9e6f3da88d575f719a013b7b9806060a240 (patch)
tree1c00d59e78be443b1537e68e483feafa95522231 /guix/gexp.scm
parent6422bde9b4ea4507f794eb61eaca8d402939c2ab (diff)
downloadgnu-guix-e640c9e6f3da88d575f719a013b7b9806060a240.tar
gnu-guix-e640c9e6f3da88d575f719a013b7b9806060a240.tar.gz
gexp: compiled-modules: Factorize build code.
* guix/gexp.scm (compiled-modules)[build]: Factorize 'process-entry'.
Diffstat (limited to 'guix/gexp.scm')
-rw-r--r--guix/gexp.scm28
1 files changed, 12 insertions, 16 deletions
diff --git a/guix/gexp.scm b/guix/gexp.scm
index b47965d9eb..612af624fe 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1068,25 +1068,21 @@ they can refer to each other."
(define (regular? file)
(not (member file '("." ".."))))
+ (define (process-entry entry output)
+ (if (file-is-directory? entry)
+ (let ((output (string-append output "/" (basename entry))))
+ (mkdir-p output)
+ (process-directory entry output))
+ (let* ((base (basename entry ".scm"))
+ (output (string-append output "/" base ".go")))
+ (compile-file entry
+ #:output-file output
+ #:opts %auto-compilation-options))))
+
(define (process-directory directory output)
(let ((entries (map (cut string-append directory "/" <>)
(scandir directory regular?))))
- (for-each (lambda (entry)
- (if (file-is-directory? entry)
- (let ((output (string-append output "/"
- (basename entry))))
- (mkdir-p output)
- (process-directory entry output))
- (let* ((base (string-drop-right
- (basename entry)
- 4)) ;.scm
- (output (string-append output "/" base
- ".go")))
- (compile-file entry
- #:output-file output
- #:opts
- %auto-compilation-options))))
- entries)))
+ (for-each (cut process-entry <> output) entries)))
(set! %load-path (cons (ungexp modules) %load-path))
(mkdir (ungexp output))