[tex-live] script for LuaTeX font database updating

T T t34www at googlemail.com
Fri Feb 26 00:27:29 CET 2010


On 25 February 2010 18:43, Manuel Pégourié-Gonnard <mpg at elzevir.fr> wrote:
> Reinhard Kotucha a écrit :
>>
>> Since there are already some -sys scripts we can't get rid of, I think
>> it's worthwhile to consider whether it makes sense to follow this
>> scheme, just that such programs behave similar.
>>
> I think the new script should follow this scheme.

I think we should distinguish between mechanisms and policy in this
discussion. From the mechanisms POV (i.e. how to write the script) I
think it's best to have the --sys option *and* the condition on
argv[0]. This doesn't particularly complicate the script and gives us
the most flexibility without needlessly bothering the script author
should we change our policy.

>From the policy POV I don't have a strong opinion, but for admin-type
tools like sys-variants I lean towards using the --sys switch rather
than multiplying utilities in already overcrowded bin dir.

>> But the current wrapper only supports updmap-sys.  The result is that
>> fmtutil exists twice on the system and getnonfreefonts-sys doesn't
>> work anymore on Windows.
>>
> It's easy to add support for getnonfreefonts-sys.

Indeed. I was told that there is not need for getnonfreefonts-sys
support anymore. If this is not correct I suggest we discuss it off
the list.

>> Since the only difference between programs and the -sys variants is a
>> changed environment, I found the original behavior of the wrapper more
>> reasonable.
>>
> Or for all foobar-sys scripts if needed.

The only reason I didn't implement the old behaviour was that upon
review it turned out that updmap-sys was the only one actually needing
it (Akira took care of fmtutil-sys). There is no problem to restore
the old behaviour, though, I'm just not sure if that's what we want.

>> Tomek, what do you mean with "I can't alter argv[0] for scripts"?
>> Don't you have to simply pass argv[0] from the .exe to the wrapper and
>> process it there?
>>
> The point is, when the interpreter is not lua, the argument to system looks like
>
> executable = /path/to/perl.exe
> argv[0] = perl.exe
> argv[1] = c:/tlroot/texmf-dist/scripts/epstopdf/epstopdf.pl
> argv[2] = ...
>
> When perl.exe executes epstopdf.pl, it shifts all, so that $ARGV[0] is
> c:/tlroot/texmf-dist/scripts/epstopdf/epstopdf.pl. If you want to lie to the
> script about its $ARGV[0], you have to lie to perl.exe about its argv[1], which
> is impossible (or it will fail to find the file). One would need an option like
> "perl.exe --set-argv0=c:/blabla/bin/repstopdf otherarguments".
>
> On Unix, all works fine because the argv[1] of /usr/bin/perl is the name of the
> symlink, which still allows Perl to find the real file, and gives the expected
> $ARGV[0] in the script.
>
> This is the same for all other interpreters. As Tomek said, one could make an
> exception for texlua scripts, since the interpreter is the wrapper written by
> Tomek, hence we have total control over everything. But I don't think it would
> be a good idea: uniformity is better.

I'm glad I didn't rush with my reply. I couldn't explain that better myself :)

Cheers,

Tomek



More information about the tex-live mailing list