diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-04-01 12:10:30 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-04-01 12:36:02 +0200 |
commit | e640c9e6f3da88d575f719a013b7b9806060a240 (patch) | |
tree | 1c00d59e78be443b1537e68e483feafa95522231 /guix/gexp.scm | |
parent | 6422bde9b4ea4507f794eb61eaca8d402939c2ab (diff) |
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.scm | 28 |
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)) |