[translation] M-x texinfo-all-menus-update breaks translated cookbook

  • Done
  • quality assurance status badge
Details
3 participants
  • Josselin Poiret
  • Maxim Cournoyer
  • pelzflorian (Florian Pelz)
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 26 Jul 2023 21:33
(name . bug-guix)(address . bug-guix@gnu.org)
87cz0ezcwb.fsf@gmail.com
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:

Toggle snippet (60 lines)
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 #<procedure 7ffff4f91f80 at ice-9/eval.scm:3?> ?)
In guix/build/utils.scm:
812:6 0 (invoke "/gnu/store/9d7c6c8id6dh0inpqvcgb708mmiqcj4c-t?" ?)

guix/build/utils.scm:812:6: In procedure invoke:
ERROR:
1. &invoke-error:
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

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

--
Thanks,
Maxim
P
P
pelzflorian (Florian Pelz) wrote on 27 Jul 2023 14:31
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 64881@debbugs.gnu.org)
874jlpfscg.fsf@pelzflorian.de
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 <maxim.cournoyer@gmail.com> writes:
Toggle quote (2 lines)
> 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
J
J
Josselin Poiret wrote on 27 Jul 2023 17:29
(address . 64881@debbugs.gnu.org)
877cqlmkyj.fsf@jpoiret.xyz
Hi everyone,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:

Toggle quote (4 lines)
> 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
-----BEGIN PGP SIGNATURE-----

iQHEBAEBCgAuFiEEOSSM2EHGPMM23K8vUF5AuRYXGooFAmTCjWQQHGRldkBqcG9p
cmV0Lnh5egAKCRBQXkC5FhcailDjDACL3XBssR+2u3NraQrYONHOUhwiWXq9AGIo
BMO8q1M77mOD23+B4tyG0LyKPEpgIvEHfehidKF6MgG7Q4tpjd/+cCZfC5IjdAZK
RYBvwDL02xYUMrxQHYf+2K/SlNvAi3kliDO1GMQpuwNb8C/Cn5aAPp0RuZT9FyTU
OUFaYKbfiIKgVWN43AzCGxkbXcYaoQX/+eBU3FJV0W6qFn8VjXJQCIXeDpwznQJb
B8HuAqYvt8cmYx/iuj/YWy/JlLHTSjUg81ZzLpKPUcq0QH9MeN7RYBsIA5RShwIc
dUsZkMXWonj+d7VAMrMB74ngZBXRi/Oek4qy2vFmzQ16bW3f/lupAoql0Qr/hPlc
z6HLkQNOx9s9ZeoNLy27dzSy1KaMOWWuWNFRM4hVamJA32d2i6m2IrdmHovGR6RD
6n9RdpbXmeSgjVCa9mvKaRm7ad3KMLikKHCxC10/ZerXo2gCdm9/Sd67ie/av+yQ
eJdezJ0Uf3EF3Q6AUDofXPOOKzMy5MA=
=QLOo
-----END PGP SIGNATURE-----

M
M
Maxim Cournoyer wrote on 27 Jul 2023 17:49
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
877cqlz767.fsf@gmail.com
Hello,

Josselin Poiret <dev@jpoiret.xyz> writes:

Toggle quote (12 lines)
> Hi everyone,
>
> "pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> 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'.
--
Thanks,
Maxim
P
P
pelzflorian (Florian Pelz) wrote on 27 Jul 2023 21:05
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87ila541kz.fsf@pelzflorian.de
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
Toggle quote (4 lines)
> 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 <dev@jpoiret.xyz> writes:
Toggle quote (4 lines)
> `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 <pelzflorian@pelzflorian.de>
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(-)

Toggle diff (209 lines)
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 yourself.
@menu
-* Xorg::
+* Xorg:: aq.
@end menu
@node Xorg
@@ -3092,8 +3092,8 @@ Guix System Containers
@menu
-* A Database Container::
-* Container Networking::
+* A Database Container:: ar.
+* Container Networking:: as.
@end menu
@node A Database Container
@@ -3378,11 +3378,11 @@ 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::
+* Basic setup with manifests:: at.
+* Required packages:: au.
+* Default profile:: av.
+* The benefits of manifests:: aw.
+* Reproducible profiles:: ax.
@end menu
@node Basic setup with manifests

base-commit: c7e45139faa27b60f2c7d0a4bc140f9793d97d47
prerequisite-patch-id: 44bba9c6a1eb16e10d96a8b736a9836366000060
--
2.40.1
M
M
Maxim Cournoyer wrote on 16 Aug 2023 17:20
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)
87ttszhv4p.fsf@gmail.com
Hi Florian,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:

Toggle quote (29 lines)
> Maxim Cournoyer <maxim.cournoyer@gmail.com> 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 <dev@jpoiret.xyz> 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
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 64881@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 64881
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch