[Buildroot] [PATCH] package/gdb: fix gdb python support with python 3.8

Yann E. MORIN yann.morin.1998 at free.fr
Tue Jun 23 21:01:24 UTC 2020


Romain, All,

On 2020-06-23 15:16 +0200, Romain Naour spake thusly:
> CPython 3.8 has added a new Syntax Warning that print
> a waring at runtime while unsing gdb python support.
> 
> $ gdb -ex "python import os"
> /usr/share/gdb/python/gdb/command/prompt.py:48: SyntaxWarning: "is not" with a literal. Did you mean "!="?
>   if self.value is not '':
> /usr/share/gdb/python/gdb/command/prompt.py:60: SyntaxWarning: "is not" with a literal. Did you mean "!="?
>   if self.value is not '':
> 
> Backport an upstream patch for this:
> https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=b6484282f85bf7f11451b2441599c241d302ad9d
> 
> Signed-off-by: Romain Naour <romain.naour at gmail.com>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  ...e-of-is-operator-for-comparison-in-p.patch | 42 +++++++++++++++++++
>  ...e-of-is-operator-for-comparison-in-p.patch | 42 +++++++++++++++++++
>  ...e-of-is-operator-for-comparison-in-p.patch | 42 +++++++++++++++++++
>  3 files changed, 126 insertions(+)
>  create mode 100644 package/gdb/8.1.1/0008-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
>  create mode 100644 package/gdb/8.2.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
>  create mode 100644 package/gdb/8.3.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> 
> diff --git a/package/gdb/8.1.1/0008-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch b/package/gdb/8.1.1/0008-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> new file mode 100644
> index 0000000000..989a5b1347
> --- /dev/null
> +++ b/package/gdb/8.1.1/0008-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> @@ -0,0 +1,42 @@
> +From e00c211d51bec301cf04719b77076a8783ef44b5 Mon Sep 17 00:00:00 2001
> +From: Raul Tambre <raul at tambre.ee>
> +Date: Sat, 4 May 2019 15:48:17 -0400
> +Subject: [PATCH] Fix incorrect use of 'is' operator for comparison in
> + python/lib/gdb/command/prompt.py
> +
> +The 'is' operator is not meant to be used for comparisons. It currently working
> +is an implementation detail of CPython.  CPython 3.8 has added a SyntaxWarning
> +for this.
> +
> +(cherry picked from commit b6484282f85bf7f11451b2441599c241d302ad9d)
> +[Romain: backport to gdb 8.x]
> +Signed-off-by: Romain Naour <romain.naour at gmail.com>
> +---
> + gdb/python/lib/gdb/command/prompt.py | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/gdb/python/lib/gdb/command/prompt.py b/gdb/python/lib/gdb/command/prompt.py
> +index 3d662a7d3f..04b9e49c22 100644
> +--- a/gdb/python/lib/gdb/command/prompt.py
> ++++ b/gdb/python/lib/gdb/command/prompt.py
> +@@ -45,7 +45,7 @@ The currently defined substitutions are:
> +         self.hook_set = False
> + 
> +     def get_show_string (self, pvalue):
> +-        if self.value is not '':
> ++        if self.value:
> +            return "The extended prompt is: " + self.value
> +         else:
> +            return "The extended prompt is not set."
> +@@ -57,7 +57,7 @@ The currently defined substitutions are:
> +         return ""
> + 
> +     def before_prompt_hook(self, current):
> +-        if self.value is not '':
> ++        if self.value:
> +             return gdb.prompt.substitute_prompt(self.value)
> +         else:
> +             return None
> +-- 
> +2.25.4
> +
> diff --git a/package/gdb/8.2.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch b/package/gdb/8.2.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> new file mode 100644
> index 0000000000..989a5b1347
> --- /dev/null
> +++ b/package/gdb/8.2.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> @@ -0,0 +1,42 @@
> +From e00c211d51bec301cf04719b77076a8783ef44b5 Mon Sep 17 00:00:00 2001
> +From: Raul Tambre <raul at tambre.ee>
> +Date: Sat, 4 May 2019 15:48:17 -0400
> +Subject: [PATCH] Fix incorrect use of 'is' operator for comparison in
> + python/lib/gdb/command/prompt.py
> +
> +The 'is' operator is not meant to be used for comparisons. It currently working
> +is an implementation detail of CPython.  CPython 3.8 has added a SyntaxWarning
> +for this.
> +
> +(cherry picked from commit b6484282f85bf7f11451b2441599c241d302ad9d)
> +[Romain: backport to gdb 8.x]
> +Signed-off-by: Romain Naour <romain.naour at gmail.com>
> +---
> + gdb/python/lib/gdb/command/prompt.py | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/gdb/python/lib/gdb/command/prompt.py b/gdb/python/lib/gdb/command/prompt.py
> +index 3d662a7d3f..04b9e49c22 100644
> +--- a/gdb/python/lib/gdb/command/prompt.py
> ++++ b/gdb/python/lib/gdb/command/prompt.py
> +@@ -45,7 +45,7 @@ The currently defined substitutions are:
> +         self.hook_set = False
> + 
> +     def get_show_string (self, pvalue):
> +-        if self.value is not '':
> ++        if self.value:
> +            return "The extended prompt is: " + self.value
> +         else:
> +            return "The extended prompt is not set."
> +@@ -57,7 +57,7 @@ The currently defined substitutions are:
> +         return ""
> + 
> +     def before_prompt_hook(self, current):
> +-        if self.value is not '':
> ++        if self.value:
> +             return gdb.prompt.substitute_prompt(self.value)
> +         else:
> +             return None
> +-- 
> +2.25.4
> +
> diff --git a/package/gdb/8.3.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch b/package/gdb/8.3.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> new file mode 100644
> index 0000000000..989a5b1347
> --- /dev/null
> +++ b/package/gdb/8.3.1/0006-Fix-incorrect-use-of-is-operator-for-comparison-in-p.patch
> @@ -0,0 +1,42 @@
> +From e00c211d51bec301cf04719b77076a8783ef44b5 Mon Sep 17 00:00:00 2001
> +From: Raul Tambre <raul at tambre.ee>
> +Date: Sat, 4 May 2019 15:48:17 -0400
> +Subject: [PATCH] Fix incorrect use of 'is' operator for comparison in
> + python/lib/gdb/command/prompt.py
> +
> +The 'is' operator is not meant to be used for comparisons. It currently working
> +is an implementation detail of CPython.  CPython 3.8 has added a SyntaxWarning
> +for this.
> +
> +(cherry picked from commit b6484282f85bf7f11451b2441599c241d302ad9d)
> +[Romain: backport to gdb 8.x]
> +Signed-off-by: Romain Naour <romain.naour at gmail.com>
> +---
> + gdb/python/lib/gdb/command/prompt.py | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
> +
> +diff --git a/gdb/python/lib/gdb/command/prompt.py b/gdb/python/lib/gdb/command/prompt.py
> +index 3d662a7d3f..04b9e49c22 100644
> +--- a/gdb/python/lib/gdb/command/prompt.py
> ++++ b/gdb/python/lib/gdb/command/prompt.py
> +@@ -45,7 +45,7 @@ The currently defined substitutions are:
> +         self.hook_set = False
> + 
> +     def get_show_string (self, pvalue):
> +-        if self.value is not '':
> ++        if self.value:
> +            return "The extended prompt is: " + self.value
> +         else:
> +            return "The extended prompt is not set."
> +@@ -57,7 +57,7 @@ The currently defined substitutions are:
> +         return ""
> + 
> +     def before_prompt_hook(self, current):
> +-        if self.value is not '':
> ++        if self.value:
> +             return gdb.prompt.substitute_prompt(self.value)
> +         else:
> +             return None
> +-- 
> +2.25.4
> +
> -- 
> 2.25.4
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'


More information about the buildroot mailing list