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
signature.asc
Description: This is a digitally signed message part.