civodul pushed a commit to branch core-updates in repository guix. commit a13c1bf4ca0b15fa53235c2bd6aa53e4a75c7d0f Merge: babeea3 1a3e316 Author: Ludovic Courtès <l...@gnu.org> Date: Fri Jun 1 23:41:40 2018 +0200
Merge branch 'master' into core-updates .dir-locals.el | 3 + Makefile.am | 19 ++ configure.ac | 5 + doc/guix.texi | 94 ++++++- gnu/bootloader/grub.scm | 19 +- gnu/build/file-systems.scm | 4 +- gnu/build/marionette.scm | 27 ++ gnu/build/svg.scm | 11 +- gnu/local.mk | 1 + gnu/packages/build-tools.scm | 2 + gnu/packages/display-managers.scm | 4 +- gnu/packages/emacs.scm | 205 ++++++++++----- gnu/packages/gnuzilla.scm | 12 +- gnu/packages/haskell.scm | 160 ++++++++++++ gnu/packages/messaging.scm | 4 +- .../patches/sddm-fix-build-with-qt-5.11-1024.patch | 28 ++ gnu/packages/python.scm | 23 ++ gnu/packages/qt.scm | 10 + gnu/packages/rust.scm | 62 +++-- gnu/packages/version-control.scm | 129 +++++++++ gnu/packages/web.scm | 81 ++++++ gnu/services/web.scm | 72 ++++- gnu/system.scm | 4 +- gnu/system/vm.scm | 95 ++++--- gnu/tests/dict.scm | 19 +- gnu/tests/ssh.scm | 290 ++++++++++----------- gnu/tests/web.scm | 82 +++++- guix/config.scm.in | 6 + guix/docker.scm | 6 +- guix/gexp.scm | 196 +++++++++++--- guix/man-db.scm | 6 +- guix/profiles.scm | 68 +++-- guix/records.scm | 31 ++- guix/scripts/pack.scm | 41 ++- guix/scripts/system.scm | 8 +- guix/self.scm | 25 +- guix/store/database.scm | 234 +++++++++++++++++ guix/store/deduplication.scm | 148 +++++++++++ m4/guix.m4 | 18 ++ tests/gexp.scm | 86 ++++++ tests/pack.scm | 12 +- tests/store-database.scm | 54 ++++ tests/store-deduplication.scm | 64 +++++ 43 files changed, 1993 insertions(+), 475 deletions(-) diff --cc guix/gexp.scm index c6d70e4,338c339..153b29b --- a/guix/gexp.scm +++ b/guix/gexp.scm @@@ -1075,8 -1120,14 +1120,16 @@@ last one is created from the given <sch "Return a derivation that builds a tree containing the `.go' files corresponding to MODULES. All the MODULES are built in a context where they can refer to each other." + (define total (length modules)) + + (define build-utils-hack? + ;; To avoid a full rebuild, we limit the fix below to the case where + ;; MODULE-PATH is different from %LOAD-PATH. This happens when building + ;; modules for 'compute-guix-derivation' upon 'guix pull'. TODO: Make + ;; this unconditional on the next rebuild cycle. + (and (member '(guix build utils) modules) + (not (equal? module-path %load-path)))) + (mlet %store-monad ((modules (imported-modules modules #:system system #:guile guile @@@ -1098,34 -1147,70 +1151,74 @@@ (define (regular? file) (not (member file '("." "..")))) - (define (process-directory directory output) + (define (process-entry entry output processed) + (if (file-is-directory? entry) + (let ((output (string-append output "/" (basename entry)))) + (mkdir-p output) + (process-directory entry output processed)) + (let* ((base (basename entry ".scm")) + (output (string-append output "/" base ".go"))) + (format #t "[~2@a/~2@a] Compiling '~a'...~%" + (+ 1 processed) (ungexp total) entry) + (compile-file entry + #:output-file output + #:opts %auto-compilation-options) + (+ 1 processed)))) + + (define (process-directory directory output processed) (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))) + (fold (cut process-entry <> output <>) + processed + entries))) + + (setvbuf (current-output-port) + (cond-expand (guile-2.2 'line) (else _IOLBF))) + (ungexp-splicing + (if build-utils-hack? + (gexp ((define mkdir-p + ;; Capture 'mkdir-p'. + (@ (guix build utils) mkdir-p)))) + '())) + + ;; Add EXTENSIONS to the search path. + ;; TODO: Remove the outer 'ungexp-splicing' on the next rebuild cycle. + (ungexp-splicing + (if (null? extensions) + '() + (gexp ((set! %load-path + (append (map (lambda (extension) + (string-append extension + "/share/guile/site/" + (effective-version))) + '((ungexp-native-splicing extensions))) + %load-path)) + (set! %load-compiled-path + (append (map (lambda (extension) + (string-append extension "/lib/guile/" + (effective-version) + "/site-ccache")) + '((ungexp-native-splicing extensions))) + %load-compiled-path)))))) + (set! %load-path (cons (ungexp modules) %load-path)) + + (ungexp-splicing + (if build-utils-hack? + ;; Above we loaded our own (guix build utils) but now we may + ;; need to load a compile a different one. Thus, force a + ;; reload. + (gexp ((let ((utils (ungexp + (file-append modules + "/guix/build/utils.scm")))) + (when (file-exists? utils) + (load utils))))) + '())) + (mkdir (ungexp output)) (chdir (ungexp modules)) - (process-directory "." (ungexp output))))) + (process-directory "." (ungexp output) 0)))) ;; TODO: Pass MODULES as an environment variable. (gexp->derivation name build