Syntax-change and tmp-files

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Syntax-change and tmp-files

Jean ABOU SAMRA
> Hi,
>
> the following code works up to 2.21.4:
>
> \version "2.18.2"
> pts-list = #'(-0.5 0 0.5 0 0 1)
> #(define test-stencil
>    (ly:make-stencil
>      `(polygon ',pts-list 0.1 #t)
>      '(-0.5 . 0.5)
>      '(0 . 1)))
> \markup \stencil #test-stencil
>
> With recent master (2.21.7) I get:
>
> Unsupported SCM value for format: (-0.5 0 0.5 0 0 1)
> Converting to `atest-105.pdf'...
> warning: `(gs -q -dNODISPLAY -dNOSAFER -dNOPAUSE -dBATCH
> -dAutoRotatePages=/None -dPrinted=false /tmp/lilypond-tmp-287200)'
> failed (256)
> fatal error: failed files: "atest-105.ly"
>
> And two tmp-files are generated (ps and pdf) and _not_ deleted.
>
> With 2.21.7 the correct syntax would be:
> pts-list = #'(-0.5 0 0.5 0 0 1)
> #(define test-stencil
>    (ly:make-stencil
>      `(polygon ,pts-list 0.1 #t)
>      '(-0.5 . 0.5)
>      '(0 . 1)))
> \markup \stencil #test-stencil
>
> Note: ',pts-list vs ,pts-list
>
> Is it possible to write a convert-rule? (I needed two hours to track it down)
> Furthermore, those tmp-files are going on my nerves. I collected 20 of
> them before I found the above mentioned culprit. Any chance to delete
> them, if compilation fails?
>
> Cheers,
>    Harm
> Afaict, the syntax-change happened with
>
> commit 06ba7f0823a14da773391ccf3c10244a54e812d4
> Author: Han-Wen Nienhuys <[hidden email]>
> Date:   Sun Aug 2 21:47:25 2020 +0200
>
>      Dispatch stencil routines using explicit tables
> [...]
>      * Stencil expressions are no longer passed through the eval
>        function. This means that all inner (quasi)quoting should be
>        removed.
> [...]
>
> To be clear, I support this change, from my point of view it's now more logical.
> Alas, debugging of older code is difficult without a better error
> message or a convert-rule...
We can surely make interesting things happen in convert-ly. The
question is, what is the exact specification of the change it
should operate? Off the top of my head, I don't see an easy implementation
for converting all kinds of quotes without tools like regex as mentioned
in https://gitlab.com/lilypond/lilypond/-/merge_requests/369. Maybe
just add a NOT_SMART warning whenever ly:make-stencil is used?

Best,
Jean