scripts/glibcelf.py: Mark as UNSUPPORTED on Python 3.5 and earlier

Message ID 875yn1rpdy.fsf@oldenburg.str.redhat.com
State Committed
Commit b571f3adffdcbed23f35ea39b0ca43809dbb4f5b
Headers
Series scripts/glibcelf.py: Mark as UNSUPPORTED on Python 3.5 and earlier |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Florian Weimer April 22, 2022, 5:36 p.m. UTC
  enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
Python versions.

---
 scripts/glibcelf.py | 6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Florian Weimer April 25, 2022, 7:17 a.m. UTC | #1
* Florian Weimer:

> enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
> Python versions.
>
> ---
>  scripts/glibcelf.py | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
> index 8f7d0ca184..da0d5380f3 100644
> --- a/scripts/glibcelf.py
> +++ b/scripts/glibcelf.py
> @@ -28,6 +28,12 @@ import collections
>  import enum
>  import struct
>  
> +if not hasattr(enum, 'IntFlag'):
> +    import sys
> +    sys.stdout.write(
> +        'warning: glibcelf.py needs Python 3.6 for enum support\n')
> +    sys.exit(77)
> +
>  class _OpenIntEnum(enum.IntEnum):
>      """Integer enumeration that supports arbitrary int values."""
>      @classmethod

I've pushed this, to avoid masking other failures in Joseph's tester.

Thanks,
Florian
  
Adhemerval Zanella Netto April 25, 2022, 5:21 p.m. UTC | #2
On 25/04/2022 04:17, Florian Weimer via Libc-alpha wrote:
> * Florian Weimer:
> 
>> enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
>> Python versions.
>>
>> ---
>>  scripts/glibcelf.py | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
>> index 8f7d0ca184..da0d5380f3 100644
>> --- a/scripts/glibcelf.py
>> +++ b/scripts/glibcelf.py
>> @@ -28,6 +28,12 @@ import collections
>>  import enum
>>  import struct
>>  
>> +if not hasattr(enum, 'IntFlag'):
>> +    import sys
>> +    sys.stdout.write(
>> +        'warning: glibcelf.py needs Python 3.6 for enum support\n')
>> +    sys.exit(77)
>> +
>>  class _OpenIntEnum(enum.IntEnum):
>>      """Integer enumeration that supports arbitrary int values."""
>>      @classmethod
> 
> I've pushed this, to avoid masking other failures in Joseph's tester.

We still indicate that Python 3.4 is supported on INSTALL. I think we
should either update it or add a fallback code on glibcelf.py.
  
Florian Weimer April 25, 2022, 9:06 p.m. UTC | #3
* Adhemerval Zanella via Libc-alpha:

> On 25/04/2022 04:17, Florian Weimer via Libc-alpha wrote:
>> * Florian Weimer:
>> 
>>> enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
>>> Python versions.
>>>
>>> ---
>>>  scripts/glibcelf.py | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
>>> index 8f7d0ca184..da0d5380f3 100644
>>> --- a/scripts/glibcelf.py
>>> +++ b/scripts/glibcelf.py
>>> @@ -28,6 +28,12 @@ import collections
>>>  import enum
>>>  import struct
>>>  
>>> +if not hasattr(enum, 'IntFlag'):
>>> +    import sys
>>> +    sys.stdout.write(
>>> +        'warning: glibcelf.py needs Python 3.6 for enum support\n')
>>> +    sys.exit(77)
>>> +
>>>  class _OpenIntEnum(enum.IntEnum):
>>>      """Integer enumeration that supports arbitrary int values."""
>>>      @classmethod
>> 
>> I've pushed this, to avoid masking other failures in Joseph's tester.
>
> We still indicate that Python 3.4 is supported on INSTALL. I think we
> should either update it or add a fallback code on glibcelf.py.

Tests using scripts/glibcelf.py are marked as UNSUPPORTED.  Isn't this
sufficient for now?

We can say that Python 3.6 or later is recommended for full test
coverage.

Thanks,
Florian
  
Adhemerval Zanella Netto April 26, 2022, 1:19 p.m. UTC | #4
On 25/04/2022 18:06, Florian Weimer wrote:
> * Adhemerval Zanella via Libc-alpha:
> 
>> On 25/04/2022 04:17, Florian Weimer via Libc-alpha wrote:
>>> * Florian Weimer:
>>>
>>>> enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
>>>> Python versions.
>>>>
>>>> ---
>>>>  scripts/glibcelf.py | 6 ++++++
>>>>  1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
>>>> index 8f7d0ca184..da0d5380f3 100644
>>>> --- a/scripts/glibcelf.py
>>>> +++ b/scripts/glibcelf.py
>>>> @@ -28,6 +28,12 @@ import collections
>>>>  import enum
>>>>  import struct
>>>>  
>>>> +if not hasattr(enum, 'IntFlag'):
>>>> +    import sys
>>>> +    sys.stdout.write(
>>>> +        'warning: glibcelf.py needs Python 3.6 for enum support\n')
>>>> +    sys.exit(77)
>>>> +
>>>>  class _OpenIntEnum(enum.IntEnum):
>>>>      """Integer enumeration that supports arbitrary int values."""
>>>>      @classmethod
>>>
>>> I've pushed this, to avoid masking other failures in Joseph's tester.
>>
>> We still indicate that Python 3.4 is supported on INSTALL. I think we
>> should either update it or add a fallback code on glibcelf.py.
> 
> Tests using scripts/glibcelf.py are marked as UNSUPPORTED.  Isn't this
> sufficient for now?
> 
> We can say that Python 3.6 or later is recommended for full test
> coverage.

It would be good to have it proper documented yes, but would be possible
to adapt the glibcelf.py to work with Python 3.4? So there will be no 
need to have to document that we support two different minor Python 
versions where if you use the older one you will have less test 
coverage (which I think it is not ideal).
  
Fangrui Song April 27, 2022, 8:45 p.m. UTC | #5
On 2022-04-26, Adhemerval Zanella via Libc-alpha wrote:
>
>
>On 25/04/2022 18:06, Florian Weimer wrote:
>> * Adhemerval Zanella via Libc-alpha:
>>
>>> On 25/04/2022 04:17, Florian Weimer via Libc-alpha wrote:
>>>> * Florian Weimer:
>>>>
>>>>> enum.IntFlag and enum.EnumMeta._missing_ support is not present in those
>>>>> Python versions.
>>>>>
>>>>> ---
>>>>>  scripts/glibcelf.py | 6 ++++++
>>>>>  1 file changed, 6 insertions(+)
>>>>>
>>>>> diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
>>>>> index 8f7d0ca184..da0d5380f3 100644
>>>>> --- a/scripts/glibcelf.py
>>>>> +++ b/scripts/glibcelf.py
>>>>> @@ -28,6 +28,12 @@ import collections
>>>>>  import enum
>>>>>  import struct
>>>>>
>>>>> +if not hasattr(enum, 'IntFlag'):
>>>>> +    import sys
>>>>> +    sys.stdout.write(
>>>>> +        'warning: glibcelf.py needs Python 3.6 for enum support\n')
>>>>> +    sys.exit(77)
>>>>> +
>>>>>  class _OpenIntEnum(enum.IntEnum):
>>>>>      """Integer enumeration that supports arbitrary int values."""
>>>>>      @classmethod
>>>>
>>>> I've pushed this, to avoid masking other failures in Joseph's tester.
>>>
>>> We still indicate that Python 3.4 is supported on INSTALL. I think we
>>> should either update it or add a fallback code on glibcelf.py.
>>
>> Tests using scripts/glibcelf.py are marked as UNSUPPORTED.  Isn't this
>> sufficient for now?
>>
>> We can say that Python 3.6 or later is recommended for full test
>> coverage.
>
>It would be good to have it proper documented yes, but would be possible
>to adapt the glibcelf.py to work with Python 3.4? So there will be no
>need to have to document that we support two different minor Python
>versions where if you use the older one you will have less test
>coverage (which I think it is not ideal).

Even Python 3.6 has reached end of life, so I think it is perhaps
reasonable to assume that at least 3.5 is needed for additional test
coverage but not the build...
  

Patch

diff --git a/scripts/glibcelf.py b/scripts/glibcelf.py
index 8f7d0ca184..da0d5380f3 100644
--- a/scripts/glibcelf.py
+++ b/scripts/glibcelf.py
@@ -28,6 +28,12 @@  import collections
 import enum
 import struct
 
+if not hasattr(enum, 'IntFlag'):
+    import sys
+    sys.stdout.write(
+        'warning: glibcelf.py needs Python 3.6 for enum support\n')
+    sys.exit(77)
+
 class _OpenIntEnum(enum.IntEnum):
     """Integer enumeration that supports arbitrary int values."""
     @classmethod