Gentoo Archives: gentoo-dev

From: Arfrever Frehtes Taifersar Arahesis <Arfrever@g.o>
To: Gentoo Development <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] Locale check in python_pkg_setup()
Date: Sat, 31 Jul 2010 20:10:42
Message-Id: 201007312211.03680.Arfrever@gentoo.org
In Reply to: Re: [gentoo-dev] Locale check in python_pkg_setup() by Alec Warner
2010-07-31 21:49:50 Alec Warner napisał(a):
> On Sat, Jul 31, 2010 at 7:44 AM, Arfrever Frehtes Taifersar Arahesis > <Arfrever@g.o> 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. > > antarus@kyoto ~ $ foo=BAR > antarus@kyoto ~ $ echo $foo > BAR > antarus@kyoto ~ $ python -c 'import os; print os.environ.get("foo")' > None > antarus@kyoto ~ $ export foo > antarus@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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-dev] Locale check in python_pkg_setup() "Petteri Räty" <betelgeuse@g.o>