aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2021-05-09 21:29:46 +0200
committerMarius Bakke <marius@gnu.org>2021-05-09 21:29:46 +0200
commitf03426420497cd9839f5fb3cb547dbecd8d6053b (patch)
tree220cdbab5b58b27c63d2df3ee711ad4bfdda074b /doc
parent3cf1afb7e7249992b2db2f4f00899fd22237e89a (diff)
parent069399ee9dbf75b7c89583f03346a63b2cfe4ac6 (diff)
downloadguix-f03426420497cd9839f5fb3cb547dbecd8d6053b.tar
guix-f03426420497cd9839f5fb3cb547dbecd8d6053b.tar.gz
Merge branch 'master' into core-updates
Conflicts: gnu/local.mk gnu/packages/bioinformatics.scm gnu/packages/django.scm gnu/packages/gtk.scm gnu/packages/llvm.scm gnu/packages/python-web.scm gnu/packages/python.scm gnu/packages/tex.scm guix/build-system/asdf.scm guix/build/emacs-build-system.scm guix/profiles.scm
Diffstat (limited to 'doc')
-rw-r--r--doc/build.scm6
-rw-r--r--doc/contributing.texi270
-rw-r--r--doc/guix.texi189
-rw-r--r--doc/htmlxref.cnf10
-rw-r--r--doc/local.mk30
5 files changed, 454 insertions, 51 deletions
diff --git a/doc/build.scm b/doc/build.scm
index 63d8fd65de..564b0e1591 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -63,9 +63,9 @@
"guix"))
(define %languages
- ;; The cookbook is currently only translated into German.
+ ;; The cookbook is not translated in the same languages as the manual
(if (string=? %manual "guix-cookbook")
- '("de" "en")
+ '("de" "en" "fr")
'("de" "en" "es" "fr" "ru" "zh_CN")))
(define (texinfo-manual-images source)
@@ -948,7 +948,7 @@ from SOURCE."
(div
(ul
(li (a (@ (href "html_node"))
- "HTML, with one page per node"))
+ "HTML, with a separate page per node"))
(li (a (@ (href
,(string-append
#$manual
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 9a09de93e6..ffa57e7cdf 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -29,6 +29,7 @@ choice.
* Tracking Bugs and Patches:: Using Debbugs.
* Commit Access:: Pushing to the official repository.
* Updating the Guix Package:: Updating the Guix package definition.
+* Translating Guix:: Make Guix speak your native language.
@end menu
@node Building from Git
@@ -1079,12 +1080,14 @@ rebuilding induced, commits go to different branches, along these lines:
@code{staging} branch (non-disruptive changes). This branch is intended
to be merged in @code{master} every 6 weeks or so. Topical changes
(e.g., an update of the GNOME stack) can instead go to a specific branch
-(say, @code{gnome-updates}).
+(say, @code{gnome-updates}). This branch is not expected to be
+buildable or usable until late in its development process.
@item more than 1,800 dependent packages
@code{core-updates} branch (may include major and potentially disruptive
changes). This branch is intended to be merged in @code{master} every
-6 months or so.
+6 months or so. This branch is not expected to be buildable or usable
+until late in its development process.
@end table
All these branches are @uref{@value{SUBSTITUTE-URL},
@@ -1429,3 +1432,266 @@ This check can be disabled, @emph{at your own peril}, by setting the
@code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable. When
this variable is set, the updated package source is also added to the
store. This is used as part of the release process of Guix.
+
+@cindex translation
+@cindex l10n
+@cindex i18n
+@cindex native language support
+@node Translating Guix
+@section Translating Guix
+
+Writing code and packages is not the only way to provide a meaningful
+contribution to Guix. Translating to a language you speak is another
+example of a valuable contribution you can make. This section is designed
+to describe the translation process. It gives you advice on how you can
+get involved, what can be translated, what mistakes you should avoid and
+what we can do to help you!
+
+Guix is a big project that has multiple components that can be translated.
+We coordinate the translation effort on a
+@uref{https://translate.fedoraproject.org/projects/guix/,Weblate instance}
+hosted by our friends at Fedora. You will need an account to submit
+translations.
+
+Some of the software packaged in Guix also contain translations. We do not
+host a translation platform for them. If you want to translate a package
+provided by Guix, you should contact their developers or find the information
+on their website. As an example, you can find the homepage of the
+@code{hello} package by typing @code{guix show hello}. On the ``homepage''
+line, you will see @url{https://www.gnu.org/software/hello/} as the homepage.
+
+Many GNU and non-GNU packages can be translated on the
+@uref{https://translationproject.org,Translation Project}. Some projects
+with multiple components have their own platform. For instance, GNOME has
+its own platform, @uref{https://l10n.gnome.org/,Damned Lies}.
+
+Guix has five components hosted on Weblate.
+
+@itemize
+@item @code{guix} contains all the strings from the Guix software (the
+ guided system installer, the package manager, etc), excluding packages.
+@item @code{packages} contains the synopsis (single-sentence description
+ of a package) and description (longer description) of packages in Guix.
+@item @code{website} contains the official Guix website, except for
+ blog posts and multimedia content.
+@item @code{documentation-manual} corresponds to this manual.
+@item @code{documentation-cookbook} is the component for the cookbook.
+@end itemize
+
+@subsubheading General Directions
+
+Once you get an account, you should be able to select a component from
+@uref{https://translate.fedoraproject.org/projects/guix/,the guix project},
+and select a language. If your language does not appear in the list, go
+to the bottom and click on the ``Start new translation'' button. Select
+the language you want to translate to from the list, to start your new
+translation.
+
+Like lots of other free software packages, Guix uses
+@uref{https://www.gnu.org/software/gettext,GNU Gettext} for its translations,
+with which translatable strings are extracted from the source code to so-called
+PO files.
+
+Even though PO files are text files, changes should not be made with a text
+editor but with PO editing software. Weblate integrates PO editing
+functionality. Alternatively, translators can use any of various
+free-software tools for filling in translations, of which
+@uref{https://poedit.net/,Poedit} is one example, and (after logging in)
+@uref{https://docs.weblate.org/en/latest/user/files.html,upload} the changed
+file. There is also a special
+@uref{https://www.emacswiki.org/emacs/PoMode,PO editing mode} for users of GNU
+Emacs. Over time translators find out what software they are happy with and
+what features they need.
+
+On Weblate, you will find various links to the editor, that will show various
+subsets (or all) of the strings. Have a look around and at the
+@uref{https://docs.weblate.org/en/latest/,documentation} to familiarize
+yourself with the platform.
+
+@subsubheading Translation Components
+
+In this section, we provide more detailed guidance on the translation
+process, as well as details on what you should or should not do. When in
+doubt, please contact us, we will be happy to help!
+
+@table @asis
+@item guix
+Guix is written in the Guile programming language, and some strings contain
+special formating that is interpreted by Guile. These special formating
+should be highlighted by Weblate. They start with @code{~} followed by one
+or more characters.
+
+When printing the string, Guile replaces the special formating symbols with
+actual values. For instance, the string @samp{ambiguous package specification
+`~a'} would be substituted to contain said package specification instead of
+@code{~a}. To properly translate this string, you must keep the formating
+code in your translation, although you can place it where it makes sense in
+your language. For instance, the French translation says @samp{spécification
+du paquet « ~a » ambiguë} because the adjective needs to be placed in the
+end of the sentence.
+
+If there are multiple formating symbols, make sure to respect the order.
+Guile does not know in which order you intended the string to be read, so it
+will substitute the symbols in the same order as the English sentence.
+
+As an example, you cannot translate @samp{package '~a' has been superseded by
+'~a'} by @samp{'~a' superseeds package '~a'}, because the meaning would be
+reversed. If @var{foo} is superseded by @var{bar}, the translation would read
+@samp{'foo' superseeds package 'bar'}. To work around this problem, it
+is possible to use more advanced formating to select a given piece of data,
+instead of following the default English order. @xref{Formatted Output,,,
+guile, GNU Guile Reference Manual}, for more information on formating in Guile.
+
+@item packages
+
+Package descriptions occasionally contain Texinfo markup (@pxref{Synopses
+and Descriptions}). Texinfo markup looks like @samp{@@code@{rm -rf@}},
+@samp{@@emph@{important@}}, etc. When translating, please leave markup as is.
+
+The characters after ``@@'' form the name of the markup, and the text between
+``@{'' and ``@}'' is its content. In general, you should not translate the
+content of markup like @code{@@code}, as it contains literal code that do not
+change with language. You can translate the content of formating markup such
+as @code{@@emph}, @code{@@i}, @code{@@itemize}, @code{@@item}. However, do
+not translate the name of the markup, or it will not be recognized. Do
+not translate the word after @code{@@end}, it is the name of the markup that
+is closed at this position (e.g.@: @code{@@itemize ... @@end itemize}).
+
+@item documentation-manual and documentation-cookbook
+
+The first step to ensure a successful translation of the manual is to find
+and translate the following strings @emph{first}:
+
+@itemize
+@item @code{version.texi}: Translate this string as @code{version-xx.texi},
+ where @code{xx} is your language code (the one shown in the URL on
+ weblate).
+@item @code{contributing.texi}: Translate this string as
+ @code{contributing.xx.texi}, where @code{xx} is the same language code.
+@item @code{Top}: Do not translate this string, it is important for Texinfo.
+ If you translate it, the document will be empty (missing a Top node).
+ Please look for it, and register @code{Top} as its translation.
+@end itemize
+
+Translating these strings first ensure we can include your translation in
+the guix repository without breaking the make process or the
+@command{guix pull} machinery.
+
+The manual and the cookbook both use Texinfo. As for @code{packages}, please
+keep Texinfo markup as is. There are more possible markup types in the manual
+than in the package descriptions. In general, do not translate the content
+of @code{@@code}, @code{@@file}, @code{@@var}, @code{@@value}, etc. You
+should translate the content of formating markup such as @code{@@emph},
+@code{@@i}, etc.
+
+The manual contains sections that can be refered to by name by @code{@@ref},
+@code{@@xref} and @code{@@pxref}. We have a mechanism in place so you do
+not have to translate their content. If you keep the English title, we will
+automatically replace it with your translation of that title. This ensures
+that Texinfo will always be able to find the node. If you decide to change
+the translation of the title, the references will automatically be updated
+and you will not have to update them all yourself.
+
+When translating references from the cookbook to the manual, you need to
+replace the name of the manual and the name of the section. For instance,
+to translate @code{@@pxref@{Defining Packages,,, guix, GNU Guix Reference
+Manual@}}, you would replace @code{Defining Packages} with the title of that
+section in the translated manual @emph{only} if that title is translated.
+If the title is not translated in your language yet, do not translate it here,
+or the link will be broken. Replace @code{guix} with @code{guix.xx} where
+@code{xx} is your language code. @code{GNU Guix Reference Manual} is the
+text of the link. You can translate it however you wish.
+
+@item website
+
+The website pages are written using SXML, an s-expression version of HTML,
+the basic language of the web. We have a process to extract translatable
+strings from the source, and replace complex s-expressions with a more familiar
+XML markup, where each markup is numbered. Translators can arbitrarily change
+the ordering, as in the following example.
+
+@example
+#. TRANSLATORS: Defining Packages is a section name
+#. in the English (en) manual.
+#: apps/base/templates/about.scm:64
+msgid "Packages are <1>defined<1.1>en</1.1><1.2>Defining-Packages.html</1.2></1> as native <2>Guile</2> modules."
+msgstr "Pakete werden als reine <2>Guile</2>-Module <1>definiert<1.1>de</1.1><1.2>Pakete-definieren.html</1.2></1>."
+@end example
+
+Note that you need to include the same markups. You cannot skip any.
+@end table
+
+In case you make a mistake, the component might fail to build properly with your
+language, or even make guix pull fail. To prevent that, we have a process
+in place to check the content of the files before pushing to our repository.
+We will not be able to update the translation for your language in Guix, so
+we will notify you (through weblate and/or by email) so you get a chance to
+fix the issue.
+
+@subsubheading Outside of Weblate
+
+Currently, some parts of Guix cannot be translated on Weblate, help wanted!
+
+@itemize
+@item @command{guix pull} news can be translated in @file{news.scm}, but is not
+ available from Weblate. If you want to provide a translation, you
+ can prepare a patch as described above, or simply send us your
+ translation with the name of the news entry you translated and your
+ language. @xref{Writing Channel News}, for more information about
+ channel news.
+@item Guix blog posts cannot currently be translated.
+@item The installer script (for foreign distributions) is entirely in English.
+@item Some of the libraries Guix uses cannot be translated or are translated
+ outside of the Guix project. Guile itself is not internationalized.
+@item Other manuals linked from this manual or the cookbook might not be
+ translated.
+@end itemize
+
+@subsubheading Translation Infrastructure
+
+Weblate is backed by a git repository from which it discovers new strings to
+translate and pushes new and updated translations. Normally, it would be
+enough to give it commit access to our repositories. However, we decided
+to use a separate repository for two reasons. First, we would have to give
+Weblate commit access and authorize its signing key, but we do not trust it
+in the same way we trust guix developers, especially since we do not manage
+the instance ourselves. Second, if translators mess something up, it can
+break the generation of the website and/or guix pull for all our users,
+independently of their language.
+
+For these reasons, we use a dedicated repository to host translations, and we
+synchronize it with our guix and artworks repositories after checking no issue
+was introduced in the translation.
+
+Developers can download the latest PO files from weblate in the Guix
+repository by runnig the @command{make download-po} target. It will
+automatically download the latest files from weblate, reformat them to a
+canonical form, and check they do not contain issues. The manual needs to be
+built again to check for additional issues that might crash Texinfo.
+
+Before pushing new translation files, developers should add them to the
+make machinery so the translations are actually available. The process
+differs for the various components.
+
+@itemize
+@item New po files for the @code{guix} and @code{packages} components must
+ be registered by adding the new language to @file{po/guix/LINGUAS} or
+ @file{po/packages/LINGUAS}.
+@item New po files for the @code{documentation-manual} component must be
+ registered by adding the file name to @code{DOC_PO_FILES} in
+ @file{po/doc/local.mk}, the generated @file{%D%/guix.xx.texi} manual to
+ @code{info_TEXINFOS} in @file{doc/local.mk} and the generated
+ @file{%D%/guix.xx.texi} and @file{%D%/contributing.xx.texi} to
+ @code{TRANSLATED_INFO} also in @file{doc/local.mk}.
+@item New po files for the @code{documentation-cookbook} component must be
+ registered by adding the file name to @code{DOC_COOKBOOK_PO_FILES} in
+ @file{po/doc/local.mk}, the generated @file{%D%/guix-cookbook.xx.texi}
+ manual to @code{info_TEXINFOS} in @file{doc/local.mk} and the generated
+ @file{%D%/guix-cookbook.xx.texi} to @code{TRANSLATED_INFO} also
+ in @file{doc/local.mk}.
+@item New po files for the @code{website} component must be added to the
+ @code{guix-artwork} repository, in @file{website/po/}.
+ @file{website/po/LINGUAS} and @file{website/po/ietf-tags.scm} must
+ be updated accordingly (see @file{website/i18n-howto.txt} for more
+ information on the process).
+@end itemize
diff --git a/doc/guix.texi b/doc/guix.texi
index a89701dd68..b6df0dcb64 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36,7 +36,7 @@ Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@*
-Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Julien Lepiller@*
+Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@*
Copyright @copyright{} 2017, 2018, 2019 Clément Lassieur@*
@@ -68,7 +68,7 @@ Copyright @copyright{} 2019 Ivan Petkov@*
Copyright @copyright{} 2019 Jakob L. Kreuze@*
Copyright @copyright{} 2019 Kyle Andrews@*
Copyright @copyright{} 2019 Alex Griffin@*
-Copyright @copyright{} 2019, 2020 Guillaume Le Vaillant@*
+Copyright @copyright{} 2019, 2020, 2021 Guillaume Le Vaillant@*
Copyright @copyright{} 2020 Leo Prikler@*
Copyright @copyright{} 2019, 2020 Simon Tournier@*
Copyright @copyright{} 2020 Wiktor Żelazny@*
@@ -88,6 +88,7 @@ Copyright @copyright{} 2020 John Soo@*
Copyright @copyright{} 2020 Jonathan Brielmaier@*
Copyright @copyright{} 2020 Edgar Vincent@*
Copyright @copyright{} 2021 Maxime Devos@*
+Copyright @copyright{} 2021 B. Wilson@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -146,7 +147,7 @@ Spanish (@pxref{Top,,, guix.es, Manual de referencia de GNU Guix}), and
Russian (@pxref{Top,,, guix.ru, Руководство GNU Guix}). If you
would like to translate it in your native language, consider joining
@uref{https://translate.fedoraproject.org/projects/guix/documentation-manual,
-Weblate}.
+Weblate} (@pxref{Translating Guix}).
@menu
* Introduction:: What is Guix about?
@@ -11427,36 +11428,6 @@ and outputs a package expression:
guix import json hello.json
@end example
-@item nix
-Import metadata from a local copy of the source of the
-@uref{https://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This
-relies on the @command{nix-instantiate} command of
-@uref{https://nixos.org/nix/, Nix}.}. Package definitions in Nixpkgs are
-typically written in a mixture of Nix-language and Bash code. This
-command only imports the high-level package structure that is written in
-the Nix language. It normally includes all the basic fields of a
-package definition.
-
-When importing a GNU package, the synopsis and descriptions are replaced
-by their canonical upstream variant.
-
-Usually, you will first need to do:
-
-@example
-export NIX_REMOTE=daemon
-@end example
-
-@noindent
-so that @command{nix-instantiate} does not try to open the Nix database.
-
-As an example, the command below imports the package definition of
-LibreOffice (more precisely, it imports the definition of the package
-bound to the @code{libreoffice} top-level attribute):
-
-@example
-guix import nix ~/path/to/nixpkgs libreoffice
-@end example
-
@item hackage
@cindex hackage
Import metadata from the Haskell community's central package archive
@@ -19958,6 +19929,9 @@ Socket file to use for local (non-network) connections.
@item @code{extra-content} (default: @code{""})
Additional settings for the @file{my.cnf} configuration file.
+@item @code{extra-environment} (default: @code{#~'()})
+List of environment variables passed to the @command{mysqld} process.
+
@item @code{auto-upgrade?} (default: @code{#t})
Whether to automatically run @command{mysql_upgrade} after starting the
service. This is necessary to upgrade the @dfn{system schema} after
@@ -20106,6 +20080,38 @@ This is used by imap (for shared users) and lda.
It defaults to @samp{"/var/run/dovecot/auth-userdb"}.
@end deftypevr
+@deftypevr {@code{protocol-configuration} parameter} boolean imap-metadata?
+Whether to enable the @code{IMAP METADATA} extension as defined in
+@uref{https://tools.ietf.org/html/rfc5464,RFC@tie{}5464}, which provides
+a means for clients to set and retrieve per-mailbox, per-user metadata
+and annotations over IMAP.
+
+If this is @samp{#t}, you must also specify a dictionary @i{via} the
+@code{mail-attribute-dict} setting.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
+@deftypevr {@code{protocol-configuration} parameter} space-separated-string-list managesieve-notify-capabilities
+Which NOTIFY capabilities to report to clients that first connect to
+the ManageSieve service, before authentication. These may differ from the
+capabilities offered to authenticated users. If this field is left empty,
+report what the Sieve interpreter supports by default.
+
+Defaults to @samp{()}.
+@end deftypevr
+
+@deftypevr {@code{protocol-configuration} parameter} space-separated-string-list managesieve-sieve-capability
+Which SIEVE capabilities to report to clients that first connect to
+the ManageSieve service, before authentication. These may differ from the
+capabilities offered to authenticated users. If this field is left empty,
+report what the Sieve interpreter supports by default.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
@deftypevr {@code{protocol-configuration} parameter} space-separated-string-list mail-plugins
Space separated list of plugins to load.
@end deftypevr
@@ -20804,6 +20810,17 @@ could allow a user to delete others' mailboxes, or @code{ln -s
@samp{""}.
@end deftypevr
+@deftypevr {@code{dovecot-configuration} parameter} string mail-attribute-dict
+The location of a dictionary used to store @code{IMAP METADATA}
+as defined by @uref{https://tools.ietf.org/html/rfc5464, RFC@tie{}5464}.
+
+The IMAP METADATA commands are available only if the ``imap''
+protocol configuration's @code{imap-metadata?} field is @samp{#t}.
+
+Defaults to @samp{""}.
+
+@end deftypevr
+
@deftypevr {@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?
Allow full file system access to clients. There's no access checks
other than what the operating system does for the active UID/GID@. It
@@ -27039,6 +27056,12 @@ The peer public-key represented as a base64 string.
A list of IP addresses from which incoming traffic for this peer is
allowed and to which incoming traffic for this peer is directed.
+@item @code{keep-alive} (default: @code{#f})
+An optional time interval in seconds. A packet will be sent to the
+server endpoint once per time interval. This helps receiving
+incoming connections from this peer when you are behind a NAT or
+a firewall.
+
@end table
@end deftp
@@ -29061,10 +29084,11 @@ By default, it produces
@lisp
'("--device" "rtl8139,netdev=net0"
- "--netdev" "user,id=net0\
- ,hostfwd=tcp:127.0.0.1:@var{secrets-port}-:1004\
- ,hostfwd=tcp:127.0.0.1:@var{ssh-port}-:2222\
- ,hostfwd=tcp:127.0.0.1:@var{vnc-port}-:5900")
+ "--netdev" (string-append
+ "user,id=net0,"
+ "hostfwd=tcp:127.0.0.1:@var{secrets-port}-:1004,"
+ "hostfwd=tcp:127.0.0.1:@var{ssh-port}-:2222,"
+ "hostfwd=tcp:127.0.0.1:@var{vnc-port}-:5900"))
@end lisp
with forwarded ports:
@@ -31189,6 +31213,15 @@ will use the current system it's running on as the default.
@item @code{max-parallel-builds} (default: @code{1})
The number of builds to perform in parallel.
+@item @code{max-1min-load-average} (default: @code{#f})
+Load average value to look at when considering starting new builds, if
+the 1 minute load average exceeds this value, the agent will wait before
+starting new builds.
+
+This will be unspecified if the value is @code{#f}, and the agent will
+use the number of cores reported by the system as the max 1 minute load
+average.
+
@item @code{derivation-substitute-urls} (default: @code{#f})
URLs from which to attempt to fetch substitutes for derivations, if the
derivations aren't already available.
@@ -31292,7 +31325,7 @@ The Guix Build Coordinator package to use.
@item @code{user} (default: @code{"guix-build-coordinator-queue-builds"})
The system user to run the service as.
-@item @code{coordinator} (default: @code{"http://localhost:8745"})
+@item @code{coordinator} (default: @code{"http://localhost:8746"})
The URI to use when connecting to the coordinator.
@item @code{systems} (default: @code{#f})
@@ -31467,6 +31500,86 @@ parameters, can be done as follow:
@end lisp
@end deffn
+@cindex rasdaemon
+@cindex Platform Reliability, Availability and Serviceability daemon
+@subsubheading Rasdaemon Service
+
+The Rasdaemon service provides a daemon which monitors platform
+@acronym{RAS, Reliability@comma{} Availability@comma{} and Serviceability} reports from
+Linux kernel trace events, logging them to syslogd.
+
+Reliability, Availability and Serviceability is a concept used on servers meant
+to measure their robustness.
+
+@strong{Relability} is the probability that a system will produce correct
+outputs:
+
+@itemize @bullet
+@item Generally measured as Mean Time Between Failures (MTBF), and
+@item Enhanced by features that help to avoid, detect and repair hardware
+faults
+@end itemize
+
+@strong{Availability} is the probability that a system is operational at a
+given time:
+
+@itemize @bullet
+@item Generally measured as a percentage of downtime per a period of time, and
+@item Often uses mechanisms to detect and correct hardware faults in runtime.
+@end itemize
+
+@strong{Serviceability} is the simplicity and speed with which a system can be
+repaired or maintained:
+
+@itemize @bullet
+@item Generally measured on Mean Time Between Repair (MTBR).
+@end itemize
+
+
+Among the monitoring measures, the most usual ones include:
+
+@itemize @bullet
+@item CPU – detect errors at instruction execution and at L1/L2/L3 caches;
+@item Memory – add error correction logic (ECC) to detect and correct errors;
+@item I/O – add CRC checksums for transferred data;
+@item Storage – RAID, journal file systems, checksums, Self-Monitoring,
+Analysis and Reporting Technology (SMART).
+@end itemize
+
+By monitoring the number of occurrences of error detections, it is possible to
+identify if the probability of hardware errors is increasing, and, on such
+case, do a preventive maintenance to replace a degraded component while those
+errors are correctable.
+
+For detailed information about the types of error events gathered and how to
+make sense of them, see the kernel administrator's guide at
+@url{https://www.kernel.org/doc/html/latest/admin-guide/ras.html}.
+
+@defvr {Scheme Variable} rasdaemon-service-type
+Service type for the @command{rasdaemon} service. It accepts a
+@code{rasdaemon-configuration} object. Instantiating like
+
+@lisp
+(service rasdaemon-service-type)
+@end lisp
+
+will load with a default configuration, which monitors all events and logs to
+syslogd.
+@end defvr
+
+@deftp {Data Type} rasdaemon-configuration
+The data type representing the configuration of @command{rasdaemon}.
+
+@table @asis
+@item @code{record?} (default: @code{#f})
+
+A boolean indicating whether to record the events in an SQLite database. This
+provides a more structured access to the information contained in the log file.
+The database location is hard-coded to @file{/var/lib/rasdaemon/ras-mc_event.db}.
+
+@end table
+@end deftp
+
@cindex zram
@cindex compressed swap
@cindex Compressed RAM-based block devices
diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf
index 960f0f08fe..c1589453ed 100644
--- a/doc/htmlxref.cnf
+++ b/doc/htmlxref.cnf
@@ -397,15 +397,15 @@ guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/
guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
guile-rpc node ${GS}/guile-rpc/manual/html_node/
-guix.de mono ${GS}/guix/manual/de/guix.html
+guix.de mono ${GS}/guix/manual/de/guix.de.html
guix.de node ${GS}/guix/manual/de/html_node/
-guix.es mono ${GS}/guix/manual/es/guix.html
+guix.es mono ${GS}/guix/manual/es/guix.es.html
guix.es node ${GS}/guix/manual/es/html_node/
-guix.fr mono ${GS}/guix/manual/fr/guix.html
+guix.fr mono ${GS}/guix/manual/fr/guix.fr.html
guix.fr node ${GS}/guix/manual/fr/html_node/
-guix.ru mono ${GS}/guix/manual/ru/guix.html
+guix.ru mono ${GS}/guix/manual/ru/guix.ru.html
guix.ru node ${GS}/guix/manual/ru/html_node/
-guix.zh_CN mono ${GS}/guix/manual/zh-cn/guix.html
+guix.zh_CN mono ${GS}/guix/manual/zh-cn/guix.zh_CN.html
guix.zh_CN node ${GS}/guix/manual/zh-cn/html_node/
guix mono ${GS}/guix/manual/en/guix.html
guix node ${GS}/guix/manual/en/html_node/
diff --git a/doc/local.mk b/doc/local.mk
index 97122c737d..d69a2feabd 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -24,11 +24,20 @@
info_TEXINFOS = %D%/guix.texi \
%D%/guix.de.texi \
%D%/guix.es.texi \
+ %D%/guix.fa.texi \
%D%/guix.fr.texi \
+ %D%/guix.it.texi \
+ %D%/guix.ko.texi \
+ %D%/guix.pt_BR.texi \
%D%/guix.ru.texi \
+ %D%/guix.sk.texi \
%D%/guix.zh_CN.texi \
%D%/guix-cookbook.texi \
- %D%/guix-cookbook.de.texi
+ %D%/guix-cookbook.de.texi \
+ %D%/guix-cookbook.fa.texi \
+ %D%/guix-cookbook.fr.texi \
+ %D%/guix-cookbook.ko.texi \
+ %D%/guix-cookbook.zh_Hans.texi
%C%_guix_TEXINFOS = \
%D%/contributing.texi \
@@ -61,18 +70,33 @@ OS_CONFIG_EXAMPLES_TEXI = \
%D%/os-config-desktop.texi \
%D%/os-config-lightweight-desktop.texi
+# Do not forget to update these, when updating info_TEXINFOS
TRANSLATED_INFO = \
%D%/guix.de.texi \
%D%/guix.es.texi \
+ %D%/guix.fa.texi \
%D%/guix.fr.texi \
+ %D%/guix.it.texi \
+ %D%/guix.ko.texi \
+ %D%/guix.pt_BR.texi \
%D%/guix.ru.texi \
+ %D%/guix.sk.texi \
%D%/guix.zh_CN.texi \
%D%/contributing.de.texi \
%D%/contributing.es.texi \
+ %D%/contributing.fa.texi \
%D%/contributing.fr.texi \
+ %D%/contributing.it.texi \
+ %D%/contributing.ko.texi \
+ %D%/contributing.pt_BR.texi \
%D%/contributing.ru.texi \
+ %D%/contributing.sk.texi \
%D%/contributing.zh_CN.texi \
- %D%/guix-cookbook.de.texi
+ %D%/guix-cookbook.de.texi \
+ %D%/guix-cookbook.fa.texi \
+ %D%/guix-cookbook.fr.texi \
+ %D%/guix-cookbook.ko.texi \
+ %D%/guix-cookbook.zh_Hans.texi
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
@@ -100,7 +124,7 @@ cat "$@.tmp" | egrep '@p?x?ref' -A1 | sed 'N;s|--\n||g;P;D' | sed 's|^| |g' | \
line=$$(grep -n "^msgid \"$$e\"" "$<" | cut -f1 --delimiter=":") ;\
((line++)) ;\
if [ "$$line" != "1" ]; then \
- translation=$$(head -n "$$line" "$<" | tail -1 | grep msgstr | sed 's|msgstr "\(.*\)"|\1|') ;\
+ translation=$$(head -n "$$line" "$<" | tail -1 | grep msgstr | sed 's|msgstr "\([^"]*\)"|\1|') ;\
if [ "$$translation" != "" ]; then \
sed "N;s@\(p\?x\?ref\){$$(echo $$e | sed 's| |[\\n ]|g')\(,\|}\)@\1{$$translation\2@g;P;D" -i "$@.tmp" ;\
fi ;\