~ruther/guix-local

07a0f68fa528a88825cf7d908f0def921a5779a1 — Ludovic Courtès 9 years ago 838ba73
pull: Build package modules without optimizations on Guile 2.2.

* guix/build/pull.scm (%default-optimizations)
(%lightweight-optimizations): New variables.
(optimization-options): New procedure.  Taken from
build-aux/compile-all.scm.
(build-guix): Pass it to 'compile-file'.
1 files changed, 30 insertions(+), 1 deletions(-)

M guix/build/pull.scm
M guix/build/pull.scm => guix/build/pull.scm +30 -1
@@ 57,6 57,35 @@ indirectly, on Guile-SSH."
                     (string-prefix? gnu  b))
                (string<? a b))))))

(cond-expand
  (guile-2.2 (use-modules (language tree-il optimize)
                          (language cps optimize)))
  (else #f))

(define %default-optimizations
  ;; Default optimization options (equivalent to -O2 on Guile 2.2).
  (cond-expand
    (guile-2.2 (append (tree-il-default-optimization-options)
                       (cps-default-optimization-options)))
    (else '())))

(define %lightweight-optimizations
  ;; Lightweight optimizations (like -O0, but with partial evaluation).
  (let loop ((opts %default-optimizations)
             (result '()))
    (match opts
      (() (reverse result))
      ((#:partial-eval? _ rest ...)
       (loop rest `(#t #:partial-eval? ,@result)))
      ((kw _ rest ...)
       (loop rest `(#f ,kw ,@result))))))

(define (optimization-options file)
  (if (string-contains file "gnu/packages/")
      %lightweight-optimizations                  ;build faster
      '()))


(define* (build-guix out source
                     #:key
                     system


@@ 158,7 187,7 @@ containing the source code.  Write any debugging output to DEBUG-PORT."
             (parameterize ((current-warning-port (%make-void-port "w")))
               (compile-file file
                             #:output-file go
                             #:opts %auto-compilation-options)))
                             #:opts (optimization-options file))))
           (with-mutex mutex
             (set! completed (+ 1 completed))))
         files))))