> >>>>> "Bruce" == Bruce Momjian <[EMAIL PROTECTED]> writes:
> 
> Bruce> I have the following compile error on 1.04: cd . && rm -f
> Bruce> stamp-cat-id && echo timestamp > stamp-cat-id file=./`echo sv |
> Bruce> sed 's,.*/,,'`.gmo \ && case "PATH=../src:$PATH msgfmt" in \
> Bruce> */msgfmt) rm -f $file && PATH=../src:$PATH msgfmt -o $file
> Bruce> sv.po;; \ *) touch $file ;; \ esac gmake[1]: *** No rule to
> Bruce> make target `s.gmo', needed by `all-yes'. Stop. gmake[1]:
> Bruce> Leaving directory `/var/local/src/lyx/lyx-1.0.4/po' gmake: ***
> Bruce> [all] Error 1
> 
> Bruce> It is complaining it can't find s.gmo. Well, I don't have an
> Bruce> s.gmo in my distribution. I had a similar problem with 1.02.
> 
> Bruce> I looked around, and see a mention of s.gmo in po/Makefile and
> Bruce> po/Makefile.in, so I am stumped.
> 
> What was the relevant line? Do you have some shell variables like
> CATALOGS or LINGUAS set to this `s'?

[CC'ing developer list.]

OK, I have a patch to fix this.  I thought that po/Makefile.in was
generated by configure.  I did not realize that only po/Makefile.in.in
was distributed, and the others were generated.

Looking through configure, I found the code that generates po/Makefile
and po/Makefile.in, and found out how s.gmo was being placed in there.

In configure, there is:

         NEW_LINGUAS=
         for lang in ${LINGUAS=$ALL_LINGUAS}; do
           case "$ALL_LINGUAS" in
            *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
           esac

There are two problems with this.  First ${var1=var2} is not defined in
either BSD sh or bash manual pages.  ${var1:=var2} with the colon is
defined, but it says to assign var1 to equal var2 if var1 is null.  In
the case of BSD 'sh', var1 is continually reassigned during the loop,
causing duplicates and improper values.  Not sure if I should report
this to BSDI as a bug because the behavior of using := as a 'for' loop
argument is pretty strange.

The proper code is attached.  A simple use of ${var1:-var2} does the
trick.  LINGUAS is assigned right after the loop anyway, so there is no
need to assign a value to it as part of the for loop.

Seems few people are using BSD sh as /bin/sh anymore.

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  [EMAIL PROTECTED]                |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
*** ./config/gettext.m4.orig    Mon Oct  4 10:41:02 1999
--- ./config/gettext.m4 Mon Oct  4 10:42:12 1999
***************
*** 216,222 ****
       else
         AC_MSG_CHECKING(for catalogs to be installed)
         NEW_LINGUAS=
!        for lang in ${LINGUAS=$ALL_LINGUAS}; do
           case "$ALL_LINGUAS" in
            *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
           esac
--- 216,222 ----
       else
         AC_MSG_CHECKING(for catalogs to be installed)
         NEW_LINGUAS=
!        for lang in ${LINGUAS:-$ALL_LINGUAS}; do
           case "$ALL_LINGUAS" in
            *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
           esac



Reply via email to