Subject: Re: bug#64881: [translation] M-x texinfo-all-menus-update breaks translated cookbook

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 27 Jul 2023 11:49:04 -0400

Hello,

Josselin Poiret <[email-masked]> writes:

> Hi everyone,
>
> "pelzflorian (Florian Pelz)" <[email-masked]> writes:
>
>> IIUC 'make as-derivation' uses the files from the guix directory, but
>> 'guix pull' uses the files from a repo checkout and was not / cannot be
>> broken by stray files.
>
> `make as-derivation` uses #:select? git? to restrict to only files
> that are checked out in git.  It doesn't try to get the contents of HEAD
> though, the working directory's state is used instead.

Both 'make as-derivation' and 'guix pull' exhibit the same problem, in
case that wasn't clear.

M-x texinfo-update-all-menus is available out-of-the-box in Emacs, when
visiting a .texi file (you invoke it via Alt-x texinfo-update-all-menus
or by visiting the 'Texinfo -> Update All Menus' menu).

Attached is the patch resulting from such action, the one that when
applied breaks 'make as-derivation'.
>From 825fdcfdc444a0f6836f0f24cd1173e03d91e5a0 Mon Sep 17 00:00:00 2001
Message-ID: <825fdcf[email-masked]>
From: Maxim Cournoyer <[email-masked]>
Date: Thu, 27 Jul 2023 11:47:55 -0400
Subject: [PATCH] doc: guix-cookbook: Update all Texinfo menus.

* doc/guix-cookbook.texi: Update all Texinfo menus, via 'M-x
texinfo-update-all-menus' in Emacs.
---
 doc/guix-cookbook.texi | 160 +++++++++++++++++++++++++++++++++--------
 1 file changed, 129 insertions(+), 31 deletions(-)

diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index 2e58c6c795..5698614c00 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -78,7 +78,7 @@ Top
 * Containers::                  Isolated environments and nested systems
 * Advanced package management::  Power to the users!
 * Environment management::      Control environment
-* Installing Guix on a Cluster:: High-performance computing.
+* Installing Guix on a Cluster::  High-performance computing.
 
 * Acknowledgments::             Thanks!
 * GNU Free Documentation License::  The license of this document.
@@ -87,36 +87,85 @@ Top
 @detailmenu
  --- The Detailed Node Listing ---
 
+Scheme tutorials
+
+* A Scheme Crash Course::
+
 Packaging
 
-* Packaging Tutorial::         A tutorial on how to add packages to Guix.
+* Packaging Tutorial::          A tutorial on how to add packages to Guix.
+
+Packaging Tutorial
+
+* A ``Hello World'' package::
+* Setup::
+* Extended example::
+* Other build systems::
+* Programmable and automated package definition::
+* Getting help::
+* Conclusion::
+* References::
+
+Setup
+
+* Local file::
+* Channels::
+* Direct checkout hacking::
+
+Programmable and automated package definition
+
+* Recursive importers::
+* Automatic update::
+* Inheritance::
 
 System Configuration
 
-* Auto-Login to a Specific TTY:: Automatically Login a User to a Specific TTY
-* Customizing the Kernel::       Creating and using a custom Linux kernel on Guix System.
-* Guix System Image API::        Customizing images to target specific platforms.
-* Using security keys::          How to use security keys with Guix System.
+* Auto-Login to a Specific TTY::  Automatically Login a User to a Specific TTY
+* Customizing the Kernel::      Creating and using a custom Linux kernel on Guix System.
+* Guix System Image API::       Customizing images to target specific platforms.
+* Using security keys::         How to use security keys with Guix System.
 * Connecting to Wireguard VPN::  Connecting to a Wireguard VPN.
-* Customizing a Window Manager:: Handle customization of a Window manager on Guix System.
-* Running Guix on a Linode Server:: Running Guix on a Linode Server
-* Setting up a bind mount:: Setting up a bind mount in the file-systems definition.
-* Getting substitutes from Tor:: Configuring Guix daemon to get substitutes through Tor.
-* Setting up NGINX with Lua:: Configuring NGINX web-server to load Lua modules.
-* Music Server with Bluetooth Audio:: Headless music player with Bluetooth output.
+* Customizing a Window Manager::  Handle customization of a Window manager on Guix System.
+* Running Guix on a Linode Server:: Running Guix on a Linode Server.  Running Guix on a Linode Server
+* Setting up a bind mount::     Setting up a bind mount in the file-systems definition.
+* Getting substitutes from Tor::  Configuring Guix daemon to get substitutes through Tor.
+* Setting up NGINX with Lua::   Configuring NGINX web-server to load Lua modules.
+* Music Server with Bluetooth Audio::  Headless music player with Bluetooth output.
+
+Customizing a Window Manager
+
+* StumpWM::
+* Session lock::
+
+Session lock
+
+* Xorg::
 
 Containers
 
-* Guix Containers::            Perfectly isolated environments
-* Guix System Containers::     A system inside your system
+* Guix Containers::             Perfectly isolated environments
+* Guix System Containers::      A system inside your system
+
+Guix System Containers
+
+* A Database Container::
+* Container Networking::
 
 Advanced package management
 
-* Guix Profiles in Practice::     Strategies for multiple profiles and manifests.
+* Guix Profiles in Practice::   Strategies for multiple profiles and manifests.
+
+Guix Profiles in Practice
+
+* Basic setup with manifests::
+* Required packages::
+* Default profile::
+* The benefits of manifests::
+* Reproducible profiles::
 
 Environment management
 
-* Guix environment via direnv:: Setup Guix environment with direnv
+* Guix environment via direnv::  Setup Guix environment with direnv
 
 Installing Guix on a Cluster
 
@@ -144,6 +193,10 @@ Scheme tutorials
 
 Let's get started!
 
+@menu
+* A Scheme Crash Course::
+@end menu
+
 @node A Scheme Crash Course
 @section A Scheme Crash Course
 
@@ -396,7 +449,7 @@ Packaging
 them.
 
 @menu
-* Packaging Tutorial::         A tutorial on how to add packages to Guix.
+* Packaging Tutorial::          A tutorial on how to add packages to Guix.
 @end menu
 
 @node Packaging Tutorial
@@ -438,6 +491,17 @@ Packaging Tutorial
 The reader is only expected to be familiar with the command line and to have some
 basic programming knowledge.
 
+@menu
+* A ``Hello World'' package::
+* Setup::
+* Extended example::
+* Other build systems::
+* Programmable and automated package definition::
+* Getting help::
+* Conclusion::
+* References::
+@end menu
+
 @node A ``Hello World'' package
 @subsection A ``Hello World'' package
 
@@ -643,6 +707,12 @@ Setup
 
 But first, let's look at other possibilities.
 
+@menu
+* Local file::
+* Channels::
+* Direct checkout hacking::
+@end menu
+
 @node Local file
 @subsubsection Local file
 
@@ -1293,6 +1363,12 @@ Programmable and automated package definition
 
 Let's illustrate this with some awesome features of Guix!
 
+@menu
+* Recursive importers::
+* Automatic update::
+* Inheritance::
+@end menu
+
 @node Recursive importers
 @subsubsection Recursive importers
 
@@ -1456,17 +1532,17 @@ System Configuration
 reference.
 
 @menu
-* Auto-Login to a Specific TTY:: Automatically Login a User to a Specific TTY
-* Customizing the Kernel::       Creating and using a custom Linux kernel on Guix System.
-* Guix System Image API::        Customizing images to target specific platforms.
-* Using security keys::          How to use security keys with Guix System.
+* Auto-Login to a Specific TTY::  Automatically Login a User to a Specific TTY
+* Customizing the Kernel::      Creating and using a custom Linux kernel on Guix System.
+* Guix System Image API::       Customizing images to target specific platforms.
+* Using security keys::         How to use security keys with Guix System.
 * Connecting to Wireguard VPN::  Connecting to a Wireguard VPN.
-* Customizing a Window Manager:: Handle customization of a Window manager on Guix System.
-* Running Guix on a Linode Server:: Running Guix on a Linode Server
-* Setting up a bind mount:: Setting up a bind mount in the file-systems definition.
-* Getting substitutes from Tor:: Configuring Guix daemon to get substitutes through Tor.
-* Setting up NGINX with Lua:: Configuring NGINX web-server to load Lua modules.
-* Music Server with Bluetooth Audio:: Headless music player with Bluetooth output.
+* Customizing a Window Manager::  Handle customization of a Window manager on Guix System.
+* Running Guix on a Linode Server:: Running Guix on a Linode Server.  Running Guix on a Linode Server
+* Setting up a bind mount::     Setting up a bind mount in the file-systems definition.
+* Getting substitutes from Tor::  Configuring Guix daemon to get substitutes through Tor.
+* Setting up NGINX with Lua::   Configuring NGINX web-server to load Lua modules.
+* Music Server with Bluetooth Audio::  Headless music player with Bluetooth output.
 @end menu
 
 @node Auto-Login to a Specific TTY
@@ -2103,6 +2179,11 @@ Customizing a Window Manager
 @section Customizing a Window Manager
 @cindex wm
 
+@menu
+* StumpWM::
+* Session lock::
+@end menu
+
 @node StumpWM
 @subsection StumpWM
 @cindex stumpwm
@@ -2158,6 +2239,10 @@ Session lock
 like GNOME or KDE, it's usually built in. If you use a plain window manager like
 StumpWM or EXWM, you might have to set it up yourself.
 
+@menu
+* Xorg::
+@end menu
+
 @node Xorg
 @subsubsection Xorg
 
@@ -2821,8 +2906,8 @@ Containers
 system-wide.
 
 @menu
-* Guix Containers::            Perfectly isolated environments
-* Guix System Containers::     A system inside your system
+* Guix Containers::             Perfectly isolated environments
+* Guix System Containers::      A system inside your system
 @end menu
 
 @node Guix Containers
@@ -3006,6 +3091,11 @@ Guix System Containers
 software are satisfied through the deployment of system services.

+@menu
+* A Database Container::
+* Container Networking::
+@end menu
+
 @node A Database Container
 @subsection A Database Container
 
@@ -3208,7 +3298,7 @@ Advanced package management
 reference.
 
 @menu
-* Guix Profiles in Practice::     Strategies for multiple profiles and manifests.
+* Guix Profiles in Practice::   Strategies for multiple profiles and manifests.
 @end menu
 
 @node Guix Profiles in Practice
@@ -3287,6 +3377,14 @@ Guix Profiles in Practice
 
 Let's dive in the set up!
 
+@menu
+* Basic setup with manifests::
+* Required packages::
+* Default profile::
+* The benefits of manifests::
+* Reproducible profiles::
+@end menu
+
 @node Basic setup with manifests
 @subsection Basic setup with manifests
 
@@ -3601,7 +3699,7 @@ Environment management
 demonstrate such utilities.
 
 @menu
-* Guix environment via direnv:: Setup Guix environment with direnv
+* Guix environment via direnv::  Setup Guix environment with direnv
 @end menu
 
 @node Guix environment via direnv

base-commit: c7e45139faa27b60f2c7d0a4bc140f9793d97d47
-- 
2.41.0

-- 
Thanks,
Maxim