bug#64881: [translation] M-x texinfo-all-menus-update breaks translated cookbook
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
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
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
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
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
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