2010-07-31 21:49:50 Alec Warner napisał(a):
> On Sat, Jul 31, 2010 at 7:44 AM, Arfrever Frehtes Taifersar Arahesis
> <arfre...@gentoo.org> wrote:
> > 2010-07-30 04:36:22 Brian Harring napisał(a):
> >> On Fri, Jul 30, 2010 at 01:16:42AM +0200, Arfrever Frehtes Taifersar 
> >> Arahesis wrote:
> >> > --- python.eclass
> >> > +++ python.eclass
> >> > @@ -355,6 +355,8 @@
> >> >     # Check if phase is pkg_setup().
> >> >     [[ "${EBUILD_PHASE}" != "setup" ]] && die "${FUNCNAME}() can be used 
> >> > only in pkg_setup() phase"
> >> >
> >> > +   local locale
> >> > +
> >> >     if [[ "$#" -ne 0 ]]; then
> >> >             die "${FUNCNAME}() does not accept arguments"
> >> >     fi
> >> > @@ -407,6 +409,16 @@
> >> >             unset -f python_pkg_setup_check_USE_flags
> >> >     fi
> >> >
> >> > +   locale="$(python -c 'import os; print(os.environ.get("LC_ALL", 
> >> > os.environ.get("LC_CTYPE", os.environ.get("LANG", "POSIX"))))')"
> >>
> >> You're using python to get the exported env.  Don't.  Use bash (you're
> >> invoking python from freaking bash after all)...
> >
> > Given variable can be set, but not exported.
> 
> If the variable is set but not exported then it is local to the shell
> env.  When bash goes to exec() python the local shell variables are
> not in the env; so os.environ() will not contain them.
> 
> anta...@kyoto ~ $ foo=BAR
> anta...@kyoto ~ $ echo $foo
> BAR
> anta...@kyoto ~ $ python -c 'import os; print os.environ.get("foo")'
> None
> anta...@kyoto ~ $ export foo
> anta...@kyoto ~ $ python -c 'import os; print os.environ.get("foo")'
> BAR

I want only variables exported to Python processes.

> so how is this any different than:
> 
> [[ -n $LC_TYPE ]] && locale=$LC_TYPE
> [[ -n $LC_ALL ]] && locale=$LC_ALL
> locale=${locale:-POSIX}

This code uses non-exported variables.

> if you want to keep it short; or the longer version with more ifs and
> less shell magic.  Normally I'm not a big performance man myself; but
> this is in an eclass used by lots of packages; not just one ebuild.

python_pkg_setup() is a rarely called function.

-- 
Arfrever Frehtes Taifersar Arahesis

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to