Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
On Tue, Nov 30, 2021 at 09:10:11PM +0200, Andy Shevchenko wrote: > On Tue, Nov 30, 2021 at 9:06 PM Tom Rini wrote: > > On Tue, Nov 30, 2021 at 08:58:25PM +0200, Andy Shevchenko wrote: > > > On Tue, Nov 30, 2021 at 8:52 PM Tom Rini wrote: > > > > On Tue, Nov 30, 2021 at 09:42:04PM +0300, Andy Shevchenko wrote: > > > > > +# > > > > > +# Do not pollute source tree with cache files: > > > > > +# https://stackoverflow.com/a/60024195/2511795 > > > > > +# https://bugs.python.org/issue33499 > > > > > +# > > > > > +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), > > > > > os.environ['srctree']) > > > > > + > > > > > # Bring in the patman and dtoc libraries (but don't override the > > > > > first path > > > > > # in PYTHONPATH) > > > > > our_path = os.path.dirname(os.path.realpath(__file__)) > > > > > > > > Do we need some wrapper around this so it doesn't blow up on older than > > > > Python 3.8? > > > > > > Why does it blow? Some global variables which won't be used by older > > > versions. > > > > Does it? I don't know, I wasn't clear enough, sorry. What happens on > > an older python here? Silent ignore is fine. > > Usually that's the idea that new features are hardly tried to be > backward compatible (yes, I know that the history of Python had a lot > of counter examples, but still). In any case, that one was never used > before. > > You may try yourself, btw: > > sys.foobar = "blablabla" Ah ok, thanks! -- Tom signature.asc Description: PGP signature
Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
On Tue, Nov 30, 2021 at 9:06 PM Tom Rini wrote: > On Tue, Nov 30, 2021 at 08:58:25PM +0200, Andy Shevchenko wrote: > > On Tue, Nov 30, 2021 at 8:52 PM Tom Rini wrote: > > > On Tue, Nov 30, 2021 at 09:42:04PM +0300, Andy Shevchenko wrote: > > > > +# > > > > +# Do not pollute source tree with cache files: > > > > +# https://stackoverflow.com/a/60024195/2511795 > > > > +# https://bugs.python.org/issue33499 > > > > +# > > > > +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), > > > > os.environ['srctree']) > > > > + > > > > # Bring in the patman and dtoc libraries (but don't override the first > > > > path > > > > # in PYTHONPATH) > > > > our_path = os.path.dirname(os.path.realpath(__file__)) > > > > > > Do we need some wrapper around this so it doesn't blow up on older than > > > Python 3.8? > > > > Why does it blow? Some global variables which won't be used by older > > versions. > > Does it? I don't know, I wasn't clear enough, sorry. What happens on > an older python here? Silent ignore is fine. Usually that's the idea that new features are hardly tried to be backward compatible (yes, I know that the history of Python had a lot of counter examples, but still). In any case, that one was never used before. You may try yourself, btw: sys.foobar = "blablabla" -- With Best Regards, Andy Shevchenko
Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
On Tue, Nov 30, 2021 at 08:58:25PM +0200, Andy Shevchenko wrote: > On Tue, Nov 30, 2021 at 8:52 PM Tom Rini wrote: > > On Tue, Nov 30, 2021 at 09:42:04PM +0300, Andy Shevchenko wrote: > > > > +# > > > +# Do not pollute source tree with cache files: > > > +# https://stackoverflow.com/a/60024195/2511795 > > > +# https://bugs.python.org/issue33499 > > > +# > > > +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), > > > os.environ['srctree']) > > > + > > > # Bring in the patman and dtoc libraries (but don't override the first > > > path > > > # in PYTHONPATH) > > > our_path = os.path.dirname(os.path.realpath(__file__)) > > > > Do we need some wrapper around this so it doesn't blow up on older than > > Python 3.8? > > Why does it blow? Some global variables which won't be used by older versions. Does it? I don't know, I wasn't clear enough, sorry. What happens on an older python here? Silent ignore is fine. -- Tom signature.asc Description: PGP signature
Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
On Tue, Nov 30, 2021 at 8:52 PM Tom Rini wrote: > On Tue, Nov 30, 2021 at 09:42:04PM +0300, Andy Shevchenko wrote: > > +# > > +# Do not pollute source tree with cache files: > > +# https://stackoverflow.com/a/60024195/2511795 > > +# https://bugs.python.org/issue33499 > > +# > > +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), > > os.environ['srctree']) > > + > > # Bring in the patman and dtoc libraries (but don't override the first path > > # in PYTHONPATH) > > our_path = os.path.dirname(os.path.realpath(__file__)) > > Do we need some wrapper around this so it doesn't blow up on older than > Python 3.8? Why does it blow? Some global variables which won't be used by older versions. > Looking over the logs, we force 3.8 to be the minimum > version, I think it's 3.6. Which means that we aren't documenting the > minimum version well, and should. But, 3.8 is only 2 years old and I > always get a little itchy around saying we need tools that feel to me to > be super recent still. P.S. scratch above, I have a v2 -- With Best Regards, Andy Shevchenko
Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
On Tue, Nov 30, 2021 at 09:42:04PM +0300, Andy Shevchenko wrote: > Importing libraries in Python caches the bytecode by default. > Since we run scripts in source tree it ignores the current directory > settings, which is $(srctree), and creates cache just in the middle > of the source tree. Move cache to the current directory. > > Signed-off-by: Andy Shevchenko > --- > tools/binman/main.py | 7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/tools/binman/main.py b/tools/binman/main.py > index 8c1e478d54ce..d5ab59948ec9 100755 > --- a/tools/binman/main.py > +++ b/tools/binman/main.py > @@ -16,6 +16,13 @@ import sys > import traceback > import unittest > > +# > +# Do not pollute source tree with cache files: > +# https://stackoverflow.com/a/60024195/2511795 > +# https://bugs.python.org/issue33499 > +# > +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), > os.environ['srctree']) > + > # Bring in the patman and dtoc libraries (but don't override the first path > # in PYTHONPATH) > our_path = os.path.dirname(os.path.realpath(__file__)) Do we need some wrapper around this so it doesn't blow up on older than Python 3.8? Looking over the logs, we force 3.8 to be the minimum version, I think it's 3.6. Which means that we aren't documenting the minimum version well, and should. But, 3.8 is only 2 years old and I always get a little itchy around saying we need tools that feel to me to be super recent still. -- Tom signature.asc Description: PGP signature
[PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`
Importing libraries in Python caches the bytecode by default. Since we run scripts in source tree it ignores the current directory settings, which is $(srctree), and creates cache just in the middle of the source tree. Move cache to the current directory. Signed-off-by: Andy Shevchenko --- tools/binman/main.py | 7 +++ 1 file changed, 7 insertions(+) diff --git a/tools/binman/main.py b/tools/binman/main.py index 8c1e478d54ce..d5ab59948ec9 100755 --- a/tools/binman/main.py +++ b/tools/binman/main.py @@ -16,6 +16,13 @@ import sys import traceback import unittest +# +# Do not pollute source tree with cache files: +# https://stackoverflow.com/a/60024195/2511795 +# https://bugs.python.org/issue33499 +# +sys.pycache_prefix = os.path.relpath(os.path.dirname(sys.argv[0]), os.environ['srctree']) + # Bring in the patman and dtoc libraries (but don't override the first path # in PYTHONPATH) our_path = os.path.dirname(os.path.realpath(__file__)) -- 2.33.0