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

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 16 Aug 2023 15:21:02 +0000

Your bug report

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

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
64881: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64881
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#64881: [translation] M-x texinfo-all-menus-update breaks translated cookbook
From: Maxim Cournoyer <[email-masked]>
To: "pelzflorian (Florian Pelz)" <[email-masked]>
Cc: Josselin Poiret <[email-masked]>, [email-masked]
Date: Wed, 16 Aug 2023 11:20:06 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Florian,

"pelzflorian (Florian Pelz)" <[email-masked]> writes:

> Maxim Cournoyer <[email-masked]> 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 <[email-masked]> 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

Subject: [translation] M-x texinfo-all-menus-update breaks translated cookbook
From: Maxim Cournoyer <[email-masked]>
To: bug-guix <[email-masked]>
Date: Wed, 26 Jul 2023 15:33:08 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

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 #<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
--8<---------------cut here---------------end--------------->8---

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

-- 
Thanks,
Maxim