emacs: info: Generalize inserting and formatting.
* emacs/guix-info.el: Use a more flexible format for inserting any data.
(guix-info-ignore-empty-vals): Rename to...
(guix-info-ignore-empty-values): ... this.
(guix-info-insert-methods): Merge this and...
(guix-info-displayed-params): ... this into...
(guix-info-format): ... this. Change format specifications.
(guix-info-title-aliases, guix-info-value-aliases): New variables.
(guix-info-displayed-params): Adjust for the new format.
(guix-info-insert-entry): Likewise.
(guix-package-info-fill-heading): Replace with...
(guix-info-fill): ... this.
(guix-info-insert-param): Replace with...
(guix-info-insert-entry-unit): ... this.
(guix-info-insert-title-default): Replace with...
(guix-info-insert-title-format): ... this.
(guix-info-insert-val-default): Replace with...
(guix-info-insert-value-format): ... this.
(guix-info-insert-val-simple): Replace with...
(guix-info-insert-value-indent): ... this.
(guix-package-info-insert-source): Adjust accordingly.
(guix-package-info-insert-heading): Insert only name and version.
(guix-package-info-define-insert-inputs): Do not generate
'guix-package-info-insert-ENTRY-TYPE-inputs' procedures.
(guix-info-fill-column, guix-info-insert-entry-default)
(guix-info-method-funcall, guix-info-insert-file-path)
(guix-info-insert-url, guix-info-insert-package-function)
(guix-info-insert-installed-function)
(guix-info-insert-output-function)
(guix-info-insert-generation-function)
(guix-package-info-heading-params)
(guix-package-info-insert-with-heading)
(guix-package-info-insert-description)
(guix-package-info-insert-location)
(guix-package-info-insert-full-names)
(guix-package-info-insert-source-url): Remove.
(guix-info-fill-column, guix-info-param-title)
(guix-info-title-function, guix-info-value-function)
(guix-info-title-method->function)
(guix-info-value-method->function)
(guix-info-insert-value-simple): New procedures.
* emacs/guix-utils.el (guix-buttonize, guix-button-type?): New
procedures.
(guix-split-string): Split multi-line strings and ignore empty lines.
* doc/emacs.texi (Emacs Appearance): Adjust accordingly.
emacs: list: Split 'guix-list-format' variable.
* emacs/guix-list.el: Generate 'guix-ENTRY-TYPE-list-format' variables
for 'package', 'output' and 'generation' entry types.
(guix-list-format): Remove.
(guix-list-define-entry-type): Add ':format' keyword.
* doc/emacs.texi (Emacs Appearance): Adjust accordingly.
emacs: list: Configure format in one place.
* emacs/guix-list.el: (guix-list-column-format): Merge this and...
(guix-list-column-value-methods): ... this into...
(guix-list-format): ... this. New variable.
(guix-list-tabulated-vector): Adjust accordingly.
(guix-list-tabulated-format): Likewise.
(guix-list-tabulated-entry): Likewise.
* doc/emacs.texi (Emacs Appearance): Likewise.
doc: Mention how to verify signatures.
* doc/guix.texi (Binary Installation): Be more precise about signature
verification. Suggested by Carl Hansen <carlhansen1234@gmail.com>.
daemon: Build in /tmp/guix-build-*.
* nix/libstore/build.cc (DerivationGoal::startBuilder): Use "guix-build"
instead of "nix-build" for TMPDIR.
* doc/guix.texi (Build Environment Setup): Adjust accordingly.
file-systems: Add a 'mount?' field.
Fixes <http://bugs.gnu.org/22176>.
Reported by Florian Paul Schmidt <mista.tapas@gmx.net>.
* gnu/system/file-systems.scm (<file-system>)[mount?]: New field.
(file-system->spec): Adjust accordingly.
* gnu/services/base.scm (file-system-dmd-service): Return the empty list
when FILE-SYSTEM has 'mount?' set to false.
(user-processes-service): Select the subset of FILE-SYSTEMS that matches
'file-system-mount?'.
* doc/guix.texi (File Systems): Document it.
doc: Explain significance of partition labels.
* doc/guix.texi (Preparing for Installation): Point out relationship
between partition labels and the file-system configuration.
doc: Fix outdated claim about CRAN importer.
* doc/guix.texi: The CRAN importer no longer extracts information from
the HTML package description but from the package's DESCRIPTION file.
gnu: Add dovecot service
* gnu/services/mail.scm: New file.
(&dovecot-configuration-error, dovecot-configuration-error?)
(dovecot-service, dovecot-configuration, dict-configuration)
(passdb-configuration, userdb-configuration)
(unix-listener-configuration, fifo-listener-configuration)
(inet-listener-configuration, service-configuration)
(protocol-configuration, plugin-configuration, mailbox-configuration)
(namespace-configuration, opaque-dovecot-configuration): New public
variables.
* gnu-system.am (GNU_SYSTEM_MODULES): Add (gnu services mail).
* doc/guix.texi (Mail Services): New node.
doc: Give another example use of 'propagated-inputs'.
Suggested by Leo Famulari <leo@famulari.name>.
* doc/guix.texi (package Reference): Explain 'propagated-inputs' for
non-C languages.
gexp: 'local-file' resolves relative file names.
* guix/gexp.scm (<local-file>): Rename constructor to '%%local-file'.
Add 'absolute' field.
(%local-file, extract-directory, absolute-file-name): New procedures.
(current-source-directory): New macro.
(local-file): Adjust call to '%local-file'.
(local-file-absolute-file-name): New procedure.
(local-file-compiler): Force the 'absolute' field.
* tests/guix-system.sh: Test whether 'local-file' canonicalization
works.
* doc/guix.texi (G-Expressions): Adjust.
daemon: Add '--rounds'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_BUILD_ROUNDS): New macro.
(options): Add --rounds.
(parse_opt): Honor it.
* doc/guix.texi (Invoking guix-daemon): Document it.
doc: Reword description of 'inputs' & co.
* doc/guix.texi (package Reference): Reword explanation of 'inputs',
'native-inputs', and 'propagated-inputs'. Add example.
doc: Fix typo in "Setuid Programs".
* doc/guix.texi (Setuid Programs): Remove extra 's'.
doc: rephrase code of conduct.
* doc/contributing.texi (Contributing): Rephrase 'code of conduct'
section.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
daemon: Use deterministic $TMPDIR in chroot.
Rather than using $<host-TMPDIR>/nix-build-<drvname>-<number>, the
temporary directory is now always /tmp/nix-build-<drvname>-0. This
improves bitwise-exact reproducibility for builds that store $TMPDIR
in their build output. (Of course, those should still be fixed...)
* nix/libstore/build.cc (DerivationGoal)[tmpDirInSandbox]: New field.
(DerivationGoal::startBuilder): Initialize 'useChroot' earlier. Compute
'tmpDirInSandbox', and use it when populating 'dirsInChroot'.
* doc/guix.texi (Build Environment Setup): Document it.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
guix build: Add '--check'.
* guix/derivations.scm (build-derivations): Add optional 'mode'
parameter.
* guix/scripts/build.scm (%default-options): Add 'build-mode'.
(show-help, %options): Add '--check'.
(guix-build): Honor 'build-mode' key of OPTS. Pass it to
'show-what-to-build' and 'build-derivations'.
* doc/guix.texi (Invoking guix build): Document it.
(Substitutes): Mention it.
guix build: Add '--rounds'.
* guix/scripts/build.scm (show-build-options-help)
(%standard-build-options): Add --rounds.
(set-build-options-from-command-line): Honor it.
* doc/guix.texi (Invoking guix build): Document it.
* doc/contributing.texi (Submitting Patches): Mention it.
gnu-maintenance: Add GNOME updater.
* guix/gnu-maintenance.scm (ftp-server/directory)[quirks]: Remove glib.
(false-if-ftp-error): New macro.
(latest-release*): Use it.
(non-emacs-gnu-package?): Rename to...
(pure-gnu-package?): ... this. Add call to 'gnome-package?'.
(%gnu-updater): Adjust accordingly.
(gnome-package?, latest-gnome-release): New procedures.
(%gnome-updater): New variable.
* guix/scripts/refresh.scm (%updaters): Add %GNOME-UPDATER.
* doc/guix.texi (Invoking guix refresh): Mention it.