All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
@ 2019-12-03 16:51 Thomas Petazzoni
  2019-12-03 19:36 ` Arnout Vandecappelle
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Thomas Petazzoni @ 2019-12-03 16:51 UTC (permalink / raw)
  To: buildroot

With Python 3.7, genrandconfig fails with:

'str' object has no attribute 'decode'

We are already working on str objects, and there is no need to decode
them, so we drop the call to decode_byte_list() and its definition as
it was only used there.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
This is of course very strange, as the decode_byte_list() function was
introduced specifically to handle Python 3.x. Does anyone has an
explanation?
---
 utils/genrandconfig | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/utils/genrandconfig b/utils/genrandconfig
index fb28f4d356..5b60bc21d6 100755
--- a/utils/genrandconfig
+++ b/utils/genrandconfig
@@ -39,14 +39,6 @@ def urlopen_closing(uri):
     return contextlib.closing(_urllib.urlopen(uri))
 
 
-if sys.hexversion >= 0x3000000:
-    def decode_byte_list(bl):
-        return [b.decode() for b in bl]
-else:
-    def decode_byte_list(e):
-        return e
-
-
 class SystemInfo:
     DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"]
     DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar", "diffoscope"]
@@ -128,7 +120,7 @@ def get_toolchain_configs(toolchains_csv, buildrootdir):
     with open(toolchains_csv) as r:
         # filter empty lines and comments
         lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#']
-        toolchains = decode_byte_list(lines)
+        toolchains = lines
     configs = []
 
     (_, _, _, _, hostarch) = os.uname()
-- 
2.23.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 16:51 [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3 Thomas Petazzoni
@ 2019-12-03 19:36 ` Arnout Vandecappelle
  2019-12-03 19:58   ` Thomas Petazzoni
  2019-12-03 22:01 ` Arnout Vandecappelle
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Arnout Vandecappelle @ 2019-12-03 19:36 UTC (permalink / raw)
  To: buildroot



On 03/12/2019 17:51, Thomas Petazzoni wrote:
> With Python 3.7, genrandconfig fails with:
> 
> 'str' object has no attribute 'decode'
> 
> We are already working on str objects, and there is no need to decode
> them, so we drop the call to decode_byte_list() and its definition as
> it was only used there.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
> This is of course very strange, as the decode_byte_list() function was
> introduced specifically to handle Python 3.x. Does anyone has an
> explanation?

 Just guessing here, but: originally this file was downloaded with
urlopen_closing() instead of being read from a local file. Since we only use
genrandconfig in the autobuilders in python2 (cfr. the shebang), nobody noticed
that this broke when I switched to reading from file instead of URL two years
ago (84929a53a4).

 Regards,
 Arnout

> ---
>  utils/genrandconfig | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/utils/genrandconfig b/utils/genrandconfig
> index fb28f4d356..5b60bc21d6 100755
> --- a/utils/genrandconfig
> +++ b/utils/genrandconfig
> @@ -39,14 +39,6 @@ def urlopen_closing(uri):
>      return contextlib.closing(_urllib.urlopen(uri))
>  
>  
> -if sys.hexversion >= 0x3000000:
> -    def decode_byte_list(bl):
> -        return [b.decode() for b in bl]
> -else:
> -    def decode_byte_list(e):
> -        return e
> -
> -
>  class SystemInfo:
>      DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"]
>      DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar", "diffoscope"]
> @@ -128,7 +120,7 @@ def get_toolchain_configs(toolchains_csv, buildrootdir):
>      with open(toolchains_csv) as r:
>          # filter empty lines and comments
>          lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#']
> -        toolchains = decode_byte_list(lines)
> +        toolchains = lines
>      configs = []
>  
>      (_, _, _, _, hostarch) = os.uname()
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 19:36 ` Arnout Vandecappelle
@ 2019-12-03 19:58   ` Thomas Petazzoni
  2019-12-04 12:52     ` Arnout Vandecappelle
  0 siblings, 1 reply; 8+ messages in thread
From: Thomas Petazzoni @ 2019-12-03 19:58 UTC (permalink / raw)
  To: buildroot

Hello,

On Tue, 3 Dec 2019 20:36:17 +0100
Arnout Vandecappelle <arnout@mind.be> wrote:

>  Just guessing here, but: originally this file was downloaded with
> urlopen_closing() instead of being read from a local file.

Ah, that must be it!

> Since we only use genrandconfig in the autobuilders in python2 (cfr.
> the shebang)

I'm not sure why you say "in python2" ? The shebang in genrandconfig is:

#!/usr/bin/env python

and I indeed noticed the issue with Python 3.x because I started using
genrandconfig on my updated Fedora system, which now uses Python 3.x as
"python".

>, nobody noticed that this broke when I switched to
> reading from file instead of URL two years ago (84929a53a4).

Indeed. I'll update the commit log and resend.

Thanks for the hint!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 16:51 [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3 Thomas Petazzoni
  2019-12-03 19:36 ` Arnout Vandecappelle
@ 2019-12-03 22:01 ` Arnout Vandecappelle
  2019-12-06  8:53 ` Peter Korsgaard
  2019-12-06  9:00 ` Peter Korsgaard
  3 siblings, 0 replies; 8+ messages in thread
From: Arnout Vandecappelle @ 2019-12-03 22:01 UTC (permalink / raw)
  To: buildroot



On 03/12/2019 17:51, Thomas Petazzoni wrote:
> With Python 3.7, genrandconfig fails with:
> 
> 'str' object has no attribute 'decode'
> 
> We are already working on str objects, and there is no need to decode
> them, so we drop the call to decode_byte_list() and its definition as
> it was only used there.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 Applied to master, thanks.

 Regards,
 Arnout

> ---
> This is of course very strange, as the decode_byte_list() function was
> introduced specifically to handle Python 3.x. Does anyone has an
> explanation?
> ---
>  utils/genrandconfig | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/utils/genrandconfig b/utils/genrandconfig
> index fb28f4d356..5b60bc21d6 100755
> --- a/utils/genrandconfig
> +++ b/utils/genrandconfig
> @@ -39,14 +39,6 @@ def urlopen_closing(uri):
>      return contextlib.closing(_urllib.urlopen(uri))
>  
>  
> -if sys.hexversion >= 0x3000000:
> -    def decode_byte_list(bl):
> -        return [b.decode() for b in bl]
> -else:
> -    def decode_byte_list(e):
> -        return e
> -
> -
>  class SystemInfo:
>      DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"]
>      DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar", "diffoscope"]
> @@ -128,7 +120,7 @@ def get_toolchain_configs(toolchains_csv, buildrootdir):
>      with open(toolchains_csv) as r:
>          # filter empty lines and comments
>          lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#']
> -        toolchains = decode_byte_list(lines)
> +        toolchains = lines
>      configs = []
>  
>      (_, _, _, _, hostarch) = os.uname()
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 19:58   ` Thomas Petazzoni
@ 2019-12-04 12:52     ` Arnout Vandecappelle
  2019-12-04 12:58       ` Thomas Petazzoni
  0 siblings, 1 reply; 8+ messages in thread
From: Arnout Vandecappelle @ 2019-12-04 12:52 UTC (permalink / raw)
  To: buildroot



On 03/12/2019 20:58, Thomas Petazzoni wrote:
> Hello,
> 
> On Tue, 3 Dec 2019 20:36:17 +0100
> Arnout Vandecappelle <arnout@mind.be> wrote:
> 
>>  Just guessing here, but: originally this file was downloaded with
>> urlopen_closing() instead of being read from a local file.
> 
> Ah, that must be it!
> 
>> Since we only use genrandconfig in the autobuilders in python2 (cfr.
>> the shebang)
> 
> I'm not sure why you say "in python2" ? The shebang in genrandconfig is:
> 
> #!/usr/bin/env python

 Almost all distros resolve this to Python2. I think even now only Arch and
Fedora 31 resolve it to Python3.


> and I indeed noticed the issue with Python 3.x because I started using
> genrandconfig on my updated Fedora system, which now uses Python 3.x as
> "python".
> 
>> , nobody noticed that this broke when I switched to
>> reading from file instead of URL two years ago (84929a53a4).
> 
> Indeed. I'll update the commit log and resend.

 Didn't I mention that I already merged it?

 Regards,
 Arnout

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-04 12:52     ` Arnout Vandecappelle
@ 2019-12-04 12:58       ` Thomas Petazzoni
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Petazzoni @ 2019-12-04 12:58 UTC (permalink / raw)
  To: buildroot

On Wed, 4 Dec 2019 13:52:48 +0100
Arnout Vandecappelle <arnout@mind.be> wrote:

> > and I indeed noticed the issue with Python 3.x because I started using
> > genrandconfig on my updated Fedora system, which now uses Python 3.x as
> > "python".
> >   
> >> , nobody noticed that this broke when I switched to
> >> reading from file instead of URL two years ago (84929a53a4).  
> > 
> > Indeed. I'll update the commit log and resend.  
> 
>  Didn't I mention that I already merged it?

You did, but I saw it after replying to this e-mail :)

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 16:51 [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3 Thomas Petazzoni
  2019-12-03 19:36 ` Arnout Vandecappelle
  2019-12-03 22:01 ` Arnout Vandecappelle
@ 2019-12-06  8:53 ` Peter Korsgaard
  2019-12-06  9:00 ` Peter Korsgaard
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Korsgaard @ 2019-12-06  8:53 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > With Python 3.7, genrandconfig fails with:
 > 'str' object has no attribute 'decode'

 > We are already working on str objects, and there is no need to decode
 > them, so we drop the call to decode_byte_list() and its definition as
 > it was only used there.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

Committed to 2019.02.x and 2019.08.x, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3
  2019-12-03 16:51 [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3 Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2019-12-06  8:53 ` Peter Korsgaard
@ 2019-12-06  9:00 ` Peter Korsgaard
  3 siblings, 0 replies; 8+ messages in thread
From: Peter Korsgaard @ 2019-12-06  9:00 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > With Python 3.7, genrandconfig fails with:
 > 'str' object has no attribute 'decode'

 > We are already working on str objects, and there is no need to decode
 > them, so we drop the call to decode_byte_list() and its definition as
 > it was only used there.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

Committed to 2019.11.x, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-12-06  9:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-03 16:51 [Buildroot] [PATCH] utils/genrandconfig: fix runtime issue with Python 3 Thomas Petazzoni
2019-12-03 19:36 ` Arnout Vandecappelle
2019-12-03 19:58   ` Thomas Petazzoni
2019-12-04 12:52     ` Arnout Vandecappelle
2019-12-04 12:58       ` Thomas Petazzoni
2019-12-03 22:01 ` Arnout Vandecappelle
2019-12-06  8:53 ` Peter Korsgaard
2019-12-06  9:00 ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.