~ruther/guix-local

0bb1aa9e05bd103a71378307b7e26e22fea5ebab — Ludovic Courtès 13 years ago d808559
derivations: Optimize `build-expression->derivation'.

This reduces the execution time of
"guix build -e '(@ (gnu packages emacs) emacs)' -d" by 6%, from
1.15s to 1.08s.

* guix/derivations.scm (build-expression->derivation): Write the builder
  as UTF-8.
1 files changed, 15 insertions(+), 8 deletions(-)

M guix/derivations.scm
M guix/derivations.scm => guix/derivations.scm +15 -8
@@ 741,14 741,21 @@ omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
                      (unsetenv "LD_LIBRARY_PATH")))
         (builder  (add-text-to-store store
                                      (string-append name "-guile-builder")
                                      (string-append
                                       (object->string prologue)
                                       (object->string
                                        `(exit
                                          ,(match exp
                                             ((_ ...)
                                              (remove module-form? exp))
                                             (_ `(,exp))))))

                                      ;; Explicitly use UTF-8 for determinism,
                                      ;; and also because UTF-8 output is faster.
                                      (with-fluids ((%default-port-encoding
                                                     "UTF-8"))
                                        (call-with-output-string
                                         (lambda (port)
                                           (write prologue port)
                                           (write
                                            `(exit
                                              ,(match exp
                                                 ((_ ...)
                                                  (remove module-form? exp))
                                                 (_ `(,exp))))
                                            port))))

                                      ;; The references don't really matter
                                      ;; since the builder is always used in