Re: find_lang

Alexander Khryukin <[email protected]> Wed, 25 Jan 2012 00:18:53 +0300
Newsgroups gmane.linux.mandrake.cooker.devel
Message-ID <CABtOAfySHDk6K_4q8eCW41sGCsG8hSu_91vffxLi1w_XwCvneA@mail.gmail.com>
2012/1/24 Jeffrey Johnson <[email protected]>

>
> On Jan 24, 2012, at 3:29 PM, Alexander Khryukin wrote:
>
> >
> >
> > thread bump.
> >
> > I have same error.
> >
> > Package: wesnoth
> > In output i have a lot of *.mo files
> > but macro
> >
> > %find_lang %{name} --all-name
> >
> > %files -f %{name}.lang
> >
> > not working.
> > How to fix it?
> >
>
> Well I'm sure Per Oyvind is likely going to fix Real Soon Now.
>
> Meanwhile its just a script that breaks from time to time for lots
> of reasons.
>
> If all else fails, and you need to get a package built *now*, and can't
> wait for
> the "proper" fix for some reason:
>
> 1) Look at the %find_lang macro. Its just a template to invoke a
> convenience script:
>            rpm --showrc | grep find_lang
>
> 2) Expand the macro template either mentally or doing
>             rpm --eval '%find_lang %{name} --all-name'
>     Note that a --eval will have side effects and run other scripts; in
> the case of %find_lang
>     the consequences are likely minor (it will generate a %name.lang file
> in the current directory)
>
> 3) Grab a copy of the script and fix as needed: the script is usually in
> /usr/lib/rpm/find_lang.sh
>     by default, sometimes is elsewhere depending on how a build system
> configures rpm.
>
> 4) Put a copy of the script into a SourceN: directive (choosing N as
> appropriate):
>            SourceN: find_lang.sh
>    Every SourceN: directive also silently defines a %{SOURCEn} macro with
> full path
>    (and N == n chosen appropriately)
>
> 5) Replace the %find_lang macro in the *.spec with its expansion from step
> 2). Instead
>     of using the hardwired path to the script, substitute %{SOURCEn}.
>
> 6) Send the "… fix as needed …" patch from step 3) to Per Oyvind (who will
> likely
>     say "Thank you!".
>
> All I'm saying is that %find_lang is nothing more than a convenience
> wrapper
> to invoke a mostly simple script. Most of the conventional uses of macros
> in *.spec recipes
> are little more than convenience wrapper templates for common tasks in
> most cases.
>
> And scripts break because … well … they are scripts.
>
> hth
>
> 73 de Jeff
>
>
>
thanks a lot for response.