Skip to content
Snippets Groups Projects
Unverified Commit a4d76a51 authored by Ludovic Courtès's avatar Ludovic Courtès
Browse files

compile: Reduce optimization levels for gnu/services and gnu/packages.

* guix/build/compile.scm (optimization-options)[strip-option]
[override-option]: New procedures.
Add case for "gnu/services".  Change "gnu/packages" to
'-O0 -Opartial-eval'.
parent ad263045
No related branches found
No related tags found
No related merge requests found
...@@ -84,9 +84,32 @@ (define %warnings ...@@ -84,9 +84,32 @@ (define %warnings
(define (optimization-options file) (define (optimization-options file)
"Return the default set of optimizations options for FILE." "Return the default set of optimizations options for FILE."
(if (string-contains file "gnu/packages/") (define (strip-option option lst)
(optimizations-for-level 1) ;build faster (let loop ((lst lst)
(optimizations-for-level 3))) (result '()))
(match lst
(()
(reverse result))
((kw value rest ...)
(if (eq? kw option)
(append (reverse result) rest)
(loop rest (cons* value kw result)))))))
(define (override-option option value lst)
`(,option ,value ,@(strip-option option lst)))
(cond ((string-contains file "gnu/packages/")
;; Level 0 is good enough but partial evaluation helps preserve the
;; "macro writer's bill of rights".
(override-option #:partial-eval? #t
(optimizations-for-level 0)))
((string-contains file "gnu/services/")
;; '-O2 -Ono-letrectify' compiles about ~20% faster than '-O2' for
;; large files like gnu/services/mail.scm.
(override-option #:letrectify? #f
(optimizations-for-level 2)))
(else
(optimizations-for-level 3))))
(define (scm->go file) (define (scm->go file)
"Strip the \".scm\" suffix from FILE, and append \".go\"." "Strip the \".scm\" suffix from FILE, and append \".go\"."
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment