bug#49910: Fwd: Re: [website] script generating POT files broken with guile@3.0.7
I’m closing this issue since a workaround is in place. The current behavior of the website’s sexp-xgettext script is wrong (and was wrong before with guile@3.0.2) when passing --keyword=quote or --keyword=unquote-splicing but nobody does that anyway. The script should be adapted with further development of (ice-9 read), for example if comment parsing gets added[0], the PEG parser in sexp-xgettext can be thrown away. [0] https://lists.gnu.org/archive/html/guile-user/2021-08/msg9.html Regards, Florian
bug#49910: Fwd: Re: [website] script generating POT files broken with guile@3.0.7
On Fri, Aug 06, 2021 at 02:16:16PM +0200, Leo Prikler wrote: > > guile -c '(with-input-from-string ",@" (lambda () (read)))' > The trick that I'm applying is to call syntax->datum on the return > value of (read). This must be a different error because guile errors out without return value, but thank you for making me read the guile NEWS file again. I had forgotten there was a rewrite of (read). I have pushed a workaround to guix-artwork as f66b87373b33974751d2567f8c433ce44d07f10a and will take another look at guile’s behavior now. Regards, Florian
bug#49910: Fwd: Re: [website] script generating POT files broken with guile@3.0.7
Misremembered the bug ID, sorry --- Begin Message --- Hi Florian, Am Freitag, den 06.08.2021, 12:53 +0200 schrieb pelzflorian (Florian Pelz): > Hello Guix! > > In the guix-artwork.git repo, the pot file generation > (scripts/sexp-xgettext.scm as described in the file i18n-howto) in > the website is broken since guile@3.0.7. Old guile@3.0.2 works. > > The issue is at the end of the procedure in the call to (read) within > token->string-symbol-or-keyw, specifically > > guile -c '(with-input-from-string ",@" (lambda () (read)))' > > I will investigate, but I don’t fully understand. Having written a Scheme-specific xgettext implementation myself, I think the issue here is that guile@3.0.7 returns syntax objects from (read), whereas previous guile does not. The trick that I'm applying is to call syntax->datum on the return value of (read). In older guile, this does nothing, whereas in newer guile it returns the symbol, keyword, list... whatever (read) would have returned in the old implementation. I hope this works out for you the way it did for me. Cheers! --- End Message ---