[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [urgent] update-fontlang new checks



Hi,

(CC'ing you because of the urgency)

Norbert Preining <preining@logic.at> wrote:

> As discussen in the IRC meeting today we want to have another check in
> user-mode of update-* scripts. Rational: Therespective file is normally
> generated in TEXMFVAR, which is in usermode normally .texmf-var. Now
> there could be the same file in TEXMFCONFIG, .texmf-config which will
> shadow the former one, the one in TEXMFVAR.

I didn't check whether it would effectively shadow the one in TEXMFVAR
(I don't remember the proper kpse incantation!), but trusting that, I
agree there is a usability problem.

> We decided that the update-* scripts should still continue, but give a
> warning.

Fine.

> The first change defines an additional PATH_COMPONENT:

Looks correct, but you can factor out the:

  SYSPATH_BASE=/var/lib/texmf

since it's the same setting in all three cases.

> NOTE NOTE NOTE: I believe this was also a bug in the current version: It
> called:
> 	output_file="$texmfvar/web2c/$DEFAULT_OUTPUTFILE_BASENAME"
> which for update-language was wrong, as it put the language.dat into
> texmfvar/web2c/language.dat, and I don't believe it would be found
> there. So I changed this, too.

I agree. In system-wide mode, it would go to
TEXMFSYSVAR/tex/generic/config/, whereas in user-specific mode, it would
go to TEXMFVAR/web2c/. That is not consistent, at best.

> @@ -409,7 +415,26 @@
>      texmfvar=$(kpsewhich --expand-path '$TEXMFVAR')
>      if ! echo "$texmfvar" | grep -e ':'; then
> -        output_file="$texmfvar/web2c/$DEFAULT_OUTPUTFILE_BASENAME"
> +        output_file="$texmfvar/$PATH_COMPONENT/$DEFAULT_OUTPUTFILE_BASENAME"
> +        # it could be that there is a DEFAULT_OUTPUTFILE_BASENAME file 
> +        # in TEXMFCONFIG, which would be found instead of the
> +        # output_file. So we check for this and give a warning in case
> +        # the created file would be shadowed.
> +        OLDIFS="$IFS"
> +        IFS=:
> +        for d in "$texmfconfig"; do
> +            if [ -r "$d/$PATH_COMPONENT/$DEFAULT_OUTPUTFILE_BASENAME" ]; then

                 or -f...

> +                printf "\
> +You are about to generate the file 
> +        $output_file
> +but at the same time you have a file
> +        $d/$PATH_COMPONENT/$DEFAULT_OUTPUTFILE_BASENAME
> +which will shadow the former one. We will continue generating the first
> +file, but to make TeX and friends find it, you have to remove the later one.\n"

<trivial stuff>
Not a native english speaker, but I would rather write:

> +which will shadow the former. We'll continue generating the first
> +file, but to let TeX and friends find it, you'll have to remove the
> +second one.\n"

(make or let, don't really like either one here...)

I see no good reason for using printf instead of echo here---except if
you generally dislike echo for its non-portability---but it's correct.
</trivial stuff>

> +            fi
> +            break

<important stuff>
Achtung! If I'm not mistaken, you should put the 'break' *before* the
'fi'.

Oh, wait. I think I would even get rid of the break, because you want to
warn the user for *any* $DEFAULT_OUTPUTFILE_BASENAME file found in
TEXMFCONFIG, since *any* of them would shadow the one in TEXMFVAR that
we are going to create.
</important stuff>

> +        done
> +        IFS="$OLDIFS"
>      else
>          # We don't know what to do in this case, therefore: do nothing unless
>          # the output file is specified with the correponding option.

Okay.

-- 
Florent



Reply to: