Re: [PATCH v1 1/1] binman: Do not pollute source tree when build with `make O=...`

2021-11-30 Thread Tom Rini
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=...`

2021-11-30 Thread Andy Shevchenko
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=...`

2021-11-30 Thread Tom Rini
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=...`

2021-11-30 Thread Andy Shevchenko
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=...`

2021-11-30 Thread Tom Rini
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=...`

2021-11-30 Thread Andy Shevchenko
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