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

2023-08-16 Thread Maxim Cournoyer
Hi Florian,

"pelzflorian (Florian Pelz)"  writes:

> Maxim Cournoyer  writes:
>> 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).
>
> Oops my bad.  I should have expected that Emacs commands are invisible
> unless the right Emacs mode is used.  Thank you for clarifying and
> presenting as a patch.
>
> Josselin Poiret  writes:
>> `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.
>
> Oh hmm doc/guix-cookbook.de.texi is not checked in, so even `make
> as-derivation` should have worked ...
>
> This got nothing to do with stray .de.texi files.  Apparently it is
> because the menu entries lack menu descriptions (which should be
> optional according to `info texinfo').
>
> The attached patch on top of your patch helps ...
>
> Either we add optional descriptions everywhere or not update menu
> entries without description or change how po4a translates the menu
> entries in po4a source file lib/Locale/Po4a/Texinfo.pm in
> translate_buffer_menuentry, to make po4a translate when there is no
> description.  I don’t plan to do that though.

I've modified po4a to support this use case, with tests and all!  Pushed
as 352c49e1a5c48eb76389ee384eb95fc2e4a6ab32, with coobook menus updated
in the following commit.

Thanks for the analysis and pointers!

-- 
Thanks,
Maxim





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

2023-07-27 Thread pelzflorian (Florian Pelz)
Maxim Cournoyer  writes:
> 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).

Oops my bad.  I should have expected that Emacs commands are invisible
unless the right Emacs mode is used.  Thank you for clarifying and
presenting as a patch.

Josselin Poiret  writes:
> `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.

Oh hmm doc/guix-cookbook.de.texi is not checked in, so even `make
as-derivation` should have worked ...

This got nothing to do with stray .de.texi files.  Apparently it is
because the menu entries lack menu descriptions (which should be
optional according to `info texinfo').

The attached patch on top of your patch helps ...

Either we add optional descriptions everywhere or not update menu
entries without description or change how po4a translates the menu
entries in po4a source file lib/Locale/Po4a/Texinfo.pm in
translate_buffer_menuentry, to make po4a translate when there is no
description.  I don’t plan to do that though.

Regards,
Florian
From: Florian Pelz 
Date: Thu, 27 Jul 2023 20:12:15 +0200
Subject: [PATCH] doc: guix-cookbook: Also add Texinfo menu description
 dummies.

* doc/guix-cookbook.texi: Add dummy menu descriptions to Texinfo menus.
---
 doc/guix-cookbook.texi | 100 -
 1 file changed, 50 insertions(+), 50 deletions(-)

diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index 5698614c00..2697331412 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -89,7 +89,7 @@ Top
 
 Scheme tutorials
 
-* A Scheme Crash Course::
+* A Scheme Crash Course::a.
 
 Packaging
 
@@ -97,26 +97,26 @@ Top
 
 Packaging Tutorial
 
-* A ``Hello World'' package::
-* Setup::
-* Extended example::
-* Other build systems::
-* Programmable and automated package definition::
-* Getting help::
-* Conclusion::
-* References::
+* A ``Hello World'' package::  b.
+* Setup::  c.
+* Extended example::  d.
+* Other build systems::  e.
+* Programmable and automated package definition::  f.
+* Getting help::  g.
+* Conclusion::  h.
+* References::  i.
 
 Setup
 
-* Local file::
-* Channels::
-* Direct checkout hacking::
+* Local file::  j.
+* Channels::  k.
+* Direct checkout hacking::  l.
 
 Programmable and automated package definition
 
-* Recursive importers::
-* Automatic update::
-* Inheritance::
+* Recursive importers::  m.
+* Automatic update::  n.
+* Inheritance::  o.
 
 System Configuration
 
@@ -134,12 +134,12 @@ Top
 
 Customizing a Window Manager
 
-* StumpWM::
-* Session lock::
+* StumpWM::  p.
+* Session lock::  q.
 
 Session lock
 
-* Xorg::
+* Xorg::  r.
 
 Containers
 
@@ -148,8 +148,8 @@ Top
 
 Guix System Containers
 
-* A Database Container::
-* Container Networking::
+* A Database Container::  s.
+* Container Networking::  t.
 
 Advanced package management
 
@@ -157,11 +157,11 @@ Top
 
 Guix Profiles in Practice
 
-* Basic setup with manifests::
-* Required packages::
-* Default profile::
-* The benefits of manifests::
-* Reproducible profiles::
+* Basic setup with manifests::  u.
+* Required packages::  v.
+* Default profile::  w.
+* The benefits of manifests::  x.
+* Reproducible profiles::  y.
 
 Environment management
 
@@ -194,7 +194,7 @@ Scheme tutorials
 Let's get started!
 
 @menu
-* A Scheme Crash Course::
+* A Scheme Crash Course::  z.
 @end menu
 
 @node A Scheme Crash Course
@@ -492,14 +492,14 @@ Packaging Tutorial
 basic programming knowledge.
 
 @menu
-* A ``Hello World'' package::
-* Setup::
-* Extended example::
-* Other build systems::
-* Programmable and automated package definition::
-* Getting help::
-* Conclusion::
-* References::
+* A ``Hello World'' package::  aa.
+* Setup::  ab.
+* Extended example::  ac.
+* Other build systems::  ad.
+* Programmable and automated package definition::  ae.
+* Getting help::  af.
+* Conclusion::  ag.
+* References::  ah.
 @end menu
 
 @node A ``Hello World'' package
@@ -708,9 +708,9 @@ Setup
 But first, let's look at other possibilities.
 
 @menu
-* Local file::
-* Channels::
-* Direct checkout hacking::
+* Local file::  ai.
+* Channels::  aj.
+* Direct checkout hacking::  ak.
 @end menu
 
 @node Local file
@@ -1364,9 +1364,9 @@ Programmable and automated package definition
 Let's illustrate this with some awesome features of Guix!
 
 @menu
-* Recursive importers::
-* Automatic update::
-* Inheritance::
+* Recursive importers::  al.
+* Automatic update::  am.
+* Inheritance::  an.
 @end menu
 
 @node Recursive importers
@@ -2180,8 +2180,8 @@ Customizing a Window Manager
 @cindex wm
 
 @menu
-* StumpWM::
-* Session lock::
+* StumpWM::  ao.
+* Session lock::  ap.
 @end menu
 
 @node StumpWM
@@ -2240,7 +2240,7 @@ Session lock
 StumpWM or EXWM, you might have to set it up 

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

2023-07-27 Thread Maxim Cournoyer
Hello,

Josselin Poiret  writes:

> Hi everyone,
>
> "pelzflorian (Florian Pelz)"  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: <825fdcfdc444a0f6836f0f24cd1173e03d91e5a0.1690472916.git.maxim.courno...@gmail.com>
From: Maxim Cournoyer 
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 

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

2023-07-27 Thread Josselin Poiret via Bug reports for GNU Guix
Hi everyone,

"pelzflorian (Florian Pelz)"  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.

Best,
-- 
Josselin Poiret


signature.asc
Description: PGP signature


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

2023-07-27 Thread pelzflorian (Florian Pelz)
Hello Maxim,

I never used M-x texinfo-all-menus-update before and do not know which
package or output provides it.

As I understand, presumably the PO4A / POXREF step of make was
interrupted and therefore there are half-complete stray .de.texi files.
Otherwise, the references would be translated or the .de.texi files
would not exist.

Maxim Cournoyer  writes:
> variants do not, which breaks 'make as-derivation' (or 'guix pull').

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.

Regards,
Florian





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

2023-07-26 Thread Maxim Cournoyer
Hi,

When attempting to run `M-x texinfo-all-menus-update' from Emacs on the
guix-cookbook.texi file, it builds fine, but auto-generated translated
variants do not, which breaks 'make as-derivation' (or 'guix pull').

The error reported by 'make as-derivation' is:

--8<---cut here---start->8---
guix.es.texi:19860: warning: `.' or `,' must follow @xref, not p
guix.es.texi:46332: warning: `.' or `,' must follow @xref, not p
guix.fr.texi:15422: warning: `.' or `,' must follow @xref, not p
Wide character in warn at 
/gnu/store/9d7c6c8id6dh0inpqvcgb708mmiqcj4c-texinfo-6.8/bin/makeinfo line 637.
guix.ru.texi:13064: warning: `.' or `,' must follow @xref, not д
guix-cookbook.de.texi:570: @menu reference to nonexistent node `A ``Hello 
World'' package'
guix-cookbook.de.texi:571: @menu reference to nonexistent node `Setup'
guix-cookbook.de.texi:572: @menu reference to nonexistent node `Extended 
example'
guix-cookbook.de.texi:573: @menu reference to nonexistent node `Other build 
systems'
guix-cookbook.de.texi:574: @menu reference to nonexistent node `Programmable 
and automated package definition'
guix-cookbook.de.texi:575: @menu reference to nonexistent node `Getting help'
guix-cookbook.de.texi:576: @menu reference to nonexistent node `Conclusion'
guix-cookbook.de.texi:801: @menu reference to nonexistent node `Local file'
guix-cookbook.de.texi:802: @menu reference to nonexistent node `Channels'
guix-cookbook.de.texi:1510: @menu reference to nonexistent node `Recursive 
importers'
guix-cookbook.de.texi:1511: @menu reference to nonexistent node `Automatic 
update'
guix-cookbook.de.texi:3358: @menu reference to nonexistent node `A Database 
Container'
guix-cookbook.de.texi:3657: @menu reference to nonexistent node `Basic setup 
with manifests'
guix-cookbook.de.texi:3658: @menu reference to nonexistent node `Required 
packages'
guix-cookbook.de.texi:3659: @menu reference to nonexistent node `Default 
profile'
guix-cookbook.de.texi:3660: @menu reference to nonexistent node `The benefits 
of manifests'
guix-cookbook.de.texi:116: @detailmenu reference to nonexistent node `A ``Hello 
World'' package'
guix-cookbook.de.texi:117: @detailmenu reference to nonexistent node `Setup'
guix-cookbook.de.texi:118: @detailmenu reference to nonexistent node `Extended 
example'
guix-cookbook.de.texi:119: @detailmenu reference to nonexistent node `Other 
build systems'
guix-cookbook.de.texi:120: @detailmenu reference to nonexistent node 
`Programmable and automated package definition'
guix-cookbook.de.texi:121: @detailmenu reference to nonexistent node `Getting 
help'
guix-cookbook.de.texi:122: @detailmenu reference to nonexistent node 
`Conclusion'
guix-cookbook.de.texi:129: @detailmenu reference to nonexistent node `Local 
file'
guix-cookbook.de.texi:130: @detailmenu reference to nonexistent node `Channels'
guix-cookbook.de.texi:137: @detailmenu reference to nonexistent node `Recursive 
importers'
guix-cookbook.de.texi:138: @detailmenu reference to nonexistent node `Automatic 
update'
guix-cookbook.de.texi:193: @detailmenu reference to nonexistent node `A 
Database Container'
guix-cookbook.de.texi:207: @detailmenu reference to nonexistent node `Basic 
setup with manifests'
guix-cookbook.de.texi:208: @detailmenu reference to nonexistent node `Required 
packages'
guix-cookbook.de.texi:209: @detailmenu reference to nonexistent node `Default 
profile'
guix-cookbook.de.texi:210: @detailmenu reference to nonexistent node `The 
benefits of manifests'
Backtrace:
   3 (primitive-load "/gnu/store/jcpsgx9pswha51a014fdi5rlpsk?")
In ice-9/eval.scm:
619:8  2 (_ #f)
In ice-9/boot-9.scm:
   260:13  1 (for-each # ?)
In guix/build/utils.scm:
812:6  0 (invoke "/gnu/store/9d7c6c8id6dh0inpqvcgb708mmiqcj4c-t?" ?)

guix/build/utils.scm:812:6: In procedure invoke:
ERROR:
  1. :
  program: 
"/gnu/store/9d7c6c8id6dh0inpqvcgb708mmiqcj4c-texinfo-6.8/bin/makeinfo"
  arguments: ("./guix-cookbook.de.texi" "-I" 
"/gnu/store/ah2fdy1vkac5blsdm2ai654h4gwgib21-doc" "-I" "." "-o" 
"/gnu/store/zb7vmqbbwl5s9i26zdhxpks1xrcr5npz-guix-manual/guix-cookbook.de.info")
  exit-status: 1
  term-signal: #f
  stop-signal: #f
builder for `/gnu/store/6fah4ipa15w46npk919f4i5hka5jhphg-guix-manual.drv' 
failed with exit code 1
cannot build derivation 
`/gnu/store/x34kb0nk9h2mdjj6hydlvsjphdakakpr-guix-20230726.19.drv': 1 
dependencies couldn't be built
error: build of 
`/gnu/store/x34kb0nk9h2mdjj6hydlvsjphdakakpr-guix-20230726.19.drv' failed
make: *** [Makefile:7009 : as-derivation] Erreur 1
--8<---cut here---end--->8---

Would someone know how to get this to work?  Manually maintaining menus
in Texinfo is a pain.

-- 
Thanks,
Maxim