Out of curiosity, is this just about building or is part of the concern with development scripts?
AFAICT, we invoke all our python scripts by invoking $(PYTHON), which can be whatever path you need. I didn’t look too closely though... Cheers, Keith > On Aug 7, 2017, at 6:47 AM, Michael Catanzaro <[email protected]> wrote: > > Hi, > > As you're probably already aware, in Arch Linux /usr/bin/python has been a > symlink to /usr/bin/python3 for a long time now. In practice this means that > Arch users are not going to be able to use basically any of our Python > scripts, since our scripts use the shebang #!/usr/bin/env python but expect > it to be python2. This has not really been a problem until now because none > of Igalia's developers use Arch, and occasional contributions rarely need to > use the Python scripts. But our scripts have been broken this whole time, > since the Python maintainers have decided the only reasonable way to avoid > this problem is for scripts to explicitly specify either python2 or python3, > and we have not been doing that. To be clear: the problem is that > #!/usr/bin/env python is *python3* on some systems, but *python2* on others. > WebKit scripts incorrectly assume it is always python2. I say "incorrectly" > because the Python folks have ratified some bizarre standard for how to > handle this, PEP 394 [1], which states: "in preparation for an eventual > change in the default version of Python, Python 2 only scripts should either > be updated to be source compatible with Python 3 or else to use python2 in > the shebang line." Lovely. > > Now Fedora is planning to switch /usr/bin/python to link to /usr/bin/python3 > instead of /usr/bin/python2 [2]. Not for another three years, but many of us > (hi! :) use Fedora, so we're going to have to fix our scripts by then. This > could be really easy, or it could be really hard. > > The really easy solution is to just replace #!/usr/bin/env python with > #!/usr/bin/env python2 everywhere. This will work on all Linux distros newer > than Red Hat Enterprise Linux 6 or thereabouts, which we definitely do not > care about anymore. It doesn't work in very old distros because they did not > provide /usr/bin/python2, only /usr/bin/python and very specific links like > /usr/bin/python2.6. That doesn't matter because we don't care about those old > systems anymore, but the problem is that last I checked, macOS did not > provide a python2 binary either. I am hoping that has changed in the past few > years. Has it? If so, I can upload a patch to do this simple find/replace and > we can all move on. If this is the case, yay! Stop reading now! Let me know. > We should do that! > > But if not, we need to decide what to do among bad options: > > * We could replace all our Python scripts that have shebangs with .in files, > and perform configure replacements at CMake/XCode configure time to generate > the scripts with the right python executable path. This would mean the > scripts would be generated into the WebKit build directory instead of the > source directory, so it will break those of us who have added Tools/Scripts > to our PATH. It's not clear how they would find the right resource paths in > the source directory, especially if using a build directory other than > WebKit/WebKitBuild. I'm not even sure if XCode can do configure replacements. > This would be a mess. > * We could require Mac developers to install a python2 symlink somewhere in > PATH. Not really desirable, but possibly tolerable? > * We could port all our Python scripts to python3 and use #!/usr/bin/env > python3, which will surely be unambiguous. But my understanding is that macOS > does not have python3, so it will need to be installed locally. I guess that > would be tolerable? Anyway, the main disadvantage here is we'd have to make > all our scripts work with python3. If WebKit was a Linux-only project, we > should definitely do that anyway, since major Linux distros no longer ship > python2 by default: it's something we install extra now. But if macOS is > sticking with python2, it would probably be undesirable to port our scripts > to python3. > * We could make all our Python scripts compatible with both python2 and > python3, and maintain them this way forever. I really hope we can avoid this > option, since we'd be breaking these scripts all the time as we would all > surely not test one configuration or the other. > > Any other ideas? > > Michael > > [1] https://www.python.org/dev/peps/pep-0394/ > [2] https://lwn.net/SubscriberLink/729366/1d3cd2dbaea7070b/ > > _______________________________________________ > webkit-dev mailing list > [email protected] > https://lists.webkit.org/mailman/listinfo/webkit-dev _______________________________________________ webkit-dev mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-dev

