[llvm-dev] Python 2 compatibility for utility scripts

Nico Weber via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 17 09:03:43 PST 2019


That sounds nice in theory, but in practice it means that people who run
tests and don't happen to have Python 3 installed on their fleet get to
debug random test failures. Which, anecdotally, is more work than just
supporting Python 2 everywhere. It also makes it easier to start shipping a
utility script in a release (promoting it to "critical" per your
definition), and it's a rule that's much easier to remember.

On Tue, Dec 17, 2019 at 12:01 PM James Y Knight <jyknight at google.com> wrote:

> I define "critical" as: anything which is required to build or test any
> components which are part of a release. The intent being that we DO
> continue to support python 2 for building llvm, and for end-users of llvm,
> for now.
>
> However, developers of LLVM can be assumed to be able to install python3
> if they want to be able to run these various optional, auxiliary, scripts.
> Having a unit test for a script should not make that script "critical",
> when the purpose of the test is only to test that script -- the test should
> simply be skipped when python3 is unavailable.
>
>
> On Tue, Dec 17, 2019 at 11:16 AM Nico Weber <thakis at chromium.org> wrote:
>
>> How do you define "non-critical"? That seems like a rule that's hard to
>> apply consistently.
>>
>> In this case, they're covered by tests, so they're considered somewhat
>> critical I suppose.
>>
>> I personally have no problem if we make the decision to drop Py 2 support
>> across the board, but allowing a mix seems confusing to me.
>>
>> If we do want to drop Py 2 support, we should probably use the same
>> process we use for bumping C++ or CMake versions: List advantages and
>> costs, and evaluate based on that. Since Py 2 is still the only installed
>> Python on fairly recent OS versions, I weakly feel that dropping support
>> for it is premature, but I don't care all that much. I do care that the
>> community has a "yes" or "no" answer to the question "do we support Python
>> 2?".
>>
>> On Tue, Dec 17, 2019 at 9:18 AM James Y Knight <jyknight at google.com>
>> wrote:
>>
>>> IMO, having non-critical utility scripts require python 3 should be
>>> allowed now. But, not yet for any scripts which are critical to build or
>>> test the distributed components.
>>>
>>> If we need to spend some time to fix the test runner to allow properly
>>> skipping tests of python3-only components when python3 isn't available,
>>> that seems entirely worthwhile, since we only need to do that once.
>>>
>>>
>>>
>>> On Tue, Dec 17, 2019, 7:43 AM Nico Weber via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>> On Tue, Dec 17, 2019 at 5:12 AM Serge Guelton <sguelton at redhat.com>
>>>> wrote:
>>>>
>>>>> At the beginning of the year, I've landed a large set of patches to
>>>>> support both Python 2 and Python3 in most Python scripts. Looks like I
>>>>> missed some of them :-)
>>>>> At that time, backward portability with Python2 was still relevant,
>>>>> and I suspect it will still be the case for a few distributions that ship
>>>>> Python2 by default. That being said, Even RHEL8 uses Python3 by default, so
>>>>> at some point we may be able to drop the compatibility stuff.
>>>>> Until then, I'd argue for maintaining compatibility as it's not a
>>>>> tremendous task.
>>>>>
>>>>
>>>> This is my feeling as well. In yesterday's instance, I lost more time
>>>> to fixing bugs in the py3 detection logic on systems that don't have it
>>>> than it took me to make the script just run fine with both Python 2 and 3.
>>>>
>>>> On macOS, I think 10.15 is the first version that ships with python3,
>>>> and that was released just 2 months ago.
>>>>
>>>>
>>>>>
>>>>> On Tue, Dec 17, 2019 at 10:54 AM James Henderson via llvm-dev <
>>>>> llvm-dev at lists.llvm.org> wrote:
>>>>>
>>>>>> I personally only use Python 3 reluctantly. I've yet to encounter a
>>>>>> situation where I actually preferred Python 3. That being said, given the
>>>>>> decision to retire Python 2.7 (*grumble* *grumble*), I'll probably be
>>>>>> forced sometime in the new year to uninstall it by somebody in charge of
>>>>>> security somewhere. I certainly don't see a personal need to have all
>>>>>> scripts support Python 2, unless they are used in the build/test pipeline
>>>>>> somewhere (i.e. get touched by a fresh check-all).
>>>>>>
>>>>>> On Tue, 17 Dec 2019 at 05:31, Fangrui Song via llvm-dev <
>>>>>> llvm-dev at lists.llvm.org> wrote:
>>>>>>
>>>>>>> https://reviews.llvm.org/D71565 intends to update
>>>>>>> llvm/utils/update_cc_test_checks.py to work with Python 2.
>>>>>>>
>>>>>>> In the original review, I suggested that we don't add Python 2
>>>>>>> compatibility for new features because Python 2.7 is retiring and
>>>>>>> some
>>>>>>> Linux distributions are even deprecating/removing Python 2 support.
>>>>>>> My
>>>>>>> feeling is:
>>>>>>>
>>>>>>> If some utilities do not support Python 2, we should probably not
>>>>>>> bother
>>>>>>> making them Python 2 compatible. Maintaining Python 2/3 compatibility
>>>>>>> may not worth the efforts. "utilities" include some command line
>>>>>>> tools
>>>>>>> under llvm/utils, which are not part of instructure like lit. What do
>>>>>>> people think?
>>>>>>>
>>>>>>> BTW, what's the Python 3 support status of build bots? Are there any
>>>>>>> running Python 3?
>>>>>>> _______________________________________________
>>>>>>> LLVM Developers mailing list
>>>>>>> llvm-dev at lists.llvm.org
>>>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>>>
>>>>>> _______________________________________________
>>>>>> LLVM Developers mailing list
>>>>>> llvm-dev at lists.llvm.org
>>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>>
>>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191217/57d4072f/attachment-0001.html>


More information about the llvm-dev mailing list