build-system/glib-or-gtk: Fix default value of #:glib-or-gtk-wrap-excluded-outputs. Fixes <http://bugs.gnu.org/19321>. Reported by Mark H Weaver <mhw@netris.org>. * guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Change default value of #:glib-or-gtk-wrap-excluded-outputs to ''().
gnu: licenses: Add NCSA license. * guix/licenses.scm (ncsa): New variable.
substitute-binary: Add missing newline in download progress report. Fixes <http://bugs.gnu.org/19313>. Reported by rekado <rekado@elephly.net>. * guix/scripts/substitute-binary.scm (guix-substitute-binary) <--substitute>: Add 'newline' call.
system: Don't make /boot/grub/grub.cfg a symlink to the store. This would not work when /boot is a separate partition, as reported by Nikita Karetnikov <nikita@karetnikov.org> in <http://bugs.gnu.org/19220>. This fixes a regression introduced in 39d1f82. * gnu/build/install.scm (install-grub): Copy GRUB.CFG instead of symlinking it, as was the case before 39d1f82. * gnu/build/vm.scm (register-grub.cfg-root): Add 'grub.cfg' parameter. Make it a permanent GC root instead of an indirect GC root. (initialize-hard-disk): Adjust accordingly. * guix/scripts/system.scm (install-grub*): Replace use of 'add-indirect-root' by the addition of a permanent GC root in %GC-ROOTS-DIRECTORY.
build-system/python: Add handling of 'propagated-inputs' in 'package-with-explicit-python'. * guix/build-system/python.scm (package-with-explicit-python): Add mapping for 'propagated-inputs'.
guix system: Fix typo affecting 'guix system init'. Fixes <http://bugs.gnu.org/19279>. Fixes a regression introduced in cc7fa59. Reported by Tomas Cech <tcech@suse.cz>. * guix/scripts/system.scm (install): Fix order of arguments to 'lift' and 'lift2'.
guix: scripts: Parse $GUIX_BUILD_OPTIONS separately. Appending to "raw" args broke optional parameters in 'guix package -I' and 'guix package -A', and possibly other places. Therefore, switch to parsing each set of options on its own and append resulting alists together afterwards. * guix/scripts/archive.scm (parse-options-from): Rename from (parse-options) and add explicit argument. New form of (parse-options) using its old algorithm via -from function. * guix/scripts/build.scm: Ditto. * guix/scripts/environment.scm: Ditto. * guix/scripts/package.scm: Ditto. * guix/scripts/system.scm: Ditto. * tests/guix-package.sh: Add test. * doc/guix.texi (Invoking guix build): Make it clear that the options are parsed independently. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
system: Make /boot/grub/grub.cfg an indirect GC root. Fixes <http://bugs.gnu.org/19160>. * guix/scripts/system.scm (install-grub*): Make /boot/grub/grub.cfg an indirect GC root. * gnu/build/install.scm (install-grub): Make TARGET a symlink. * gnu/build/vm.scm (register-grub.cfg-root): New procedure. (initialize-hard-disk): Use it.
guix system: Factorize 'grub-install' error handling, and use more 'mbegin'. * guix/scripts/system.scm (install-grub*): New procedure. (install): Use it, and use 'mwhen?'. (perform-action) <reconfigure>: Likewise.
build: emacs-utils: Add 'emacs-generate-autoloads'. * guix/build/emacs-utils.scm (emacs-generate-autoloads): New procedure.
packages: Use the target's system Guile when downloading patches. * guix/packages.scm (patch-and-repack)[patch-inputs]: Pass SYSTEM in 'package-source-derivation' call.
derivations: Export 'derivation-builder'. * guix/derivations.scm: Export 'derivation-builder'.
monads: Add 'lift0'. * guix/monads.scm (lift0): New variable.
monads: Add 'mwhen' and 'munless'. * guix/monads.scm (mbegin): Add special '%current-monad' syntactic keyword. (mwhen, munless): New macros.
guix system: Use 'mbegin' for 'install'. * guix/scripts/system.scm (install): Use 'mbegin'. Lift FORMAT and POPULATE-ROOT-FILE-SYSTEM, and use the result.
build-system/glib-or-gtk: Allow specific outputs to be excluded from wrapping. * guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Add #:glib-or-gtk-wrap-excluded-outputs parameter and honor it. * guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Add #:glib-or-gtk-wrap-excluded-outputs parameter and pass it in BUILDER. * doc/guix.texi (Build Systems): Mention it.
build-system/glib-or-gtk: Correctly handle multiple-output packages. * guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Move body to 'handle-output' inner procedure, and parametrize it by output name and directory. Call it for each element of OUTPUTS. (compile-glib-schemas): Likewise.
build-system/glib-or-gtk: Use 'for-each' and 'cut' as appropriate. * guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Use 'for-each' instead of 'map' in for-effect contexts. Use 'cut' instead of 'lambda' when appropriate.
build-system/glib-or-gtk: Clean up whitespace. * guix/build/glib-or-gtk-build-system.scm: M-x whitespace-cleanup.
guix: scripts: Add GUIX_BUILD_OPTIONS environment handling. * doc/guix.texi (Invoking guix build): Mention 'GUIX_BUILD_OPTIONS'. * guix/scripts/archive.scm: (append args (environment-build-options)). * guix/scripts/build.scm: Ditto. * guix/scripts/environment.scm: Ditto. * guix/scripts/package.scm: Ditto. * guix/scripts/system.scm: Ditto. * guix/ui.scm (environment-build-options): New function. * guix/utils.scm (arguments-from-environment-variable): New function. * tests/guix-build.sh: Add tests. * test-env.in: Unset GUIX_BUILD_OPTIONS. Co-authored-by: Ludovic Courtès <ludo@gnu.org>