#2352 Python 2 exception (build-time-only) for (Qt 4) qtwebkit
Closed: Accepted 4 years ago by zbyszek. Opened 4 years ago by kkofler.

I would like to request an exception that allows the qtwebkit package to use Python 2 during buildtime only. There are no other dependencies needed beside the Python interpreter. The dependency is not needed at runtime (because it is only used for build scripts) and will not affect end users at all.

Rationale:

Qt 4 QtWebKit is an important compatibility package required to keep, e.g., KNode and Amarok working.

  • What is the reason for the Python 2 build dependency?

The WebKit build scripts make heavy use of Python. Unfortunately, the ancient version Qt 4 QtWebKit is based on does not support Python 3, and backporting Python 3 support from more recent WebKit does not sound practical.

  • What are the upstream/community plans/timelines regarding Python 2?
  • What is the guidance for porting the build to Python 3? (Assuming that there is someone who generally knows how to port to Python 3, but doesn't know anything about the particular package, what are the next steps to take?)

The long-term plan really ought to be to get rid of Qt 4 QtWebKit entirely, but we are not ready for that. There is no upstream for Qt 4 QtWebKit (what Qt support is there upstream is for Qt 5 only) and it is not a good idea to run it on untrusted web content. (It shall be noted that KNode does not display HTML mail with QtWebKit by default. You get the plain-text version if present, the HTML source code otherwise, and you have to click a link in a warning message to render the HTML.) But as long as it exists, it will probably need Python 2 to build.

Since there is no runtime dependency, users will not be affected by it.


So, you are asking us to maintain Python 2 for longer. How much longer? Forever?

Metadata Update from @churchyard:
- Issue tagged with: python 2 exception

4 years ago

I do not want Qt 4 QtWebKit to be the roadblock for dropping Python 2 (though it is only used at build time, so I do not really need you to fix security issues in Python 2), but I would like it to remain at least as long as Python 2 is still also needed for other packages.

I consider that a reasonable request. @pviktori Do you agree?

I do not really need you to fix security issues in Python 2

That's irrelevant: if python2 is a Fedora package, users can install it, and we're need to fix security issues in it. At least the serious ones.
When no more fixes are needed, you can bundle it.

I would like it to remain at least as long as Python 2 is still also needed for other packages.

That's fair.
(However, I don't want to make this a blanket exception to use python2 at build: I do want to track the packages that need it separately. If individual exceptions are too much noise for FESCo, we can track them elsewhere – though I have already told everyone to ask FESCo.)


Thanks also for the info that KNode and Amarok are the actual user-facing things that keep Python 2 in. If you have links to any efforts to port them away from Qt4, please share.

+1 for the exception for qtwebkit

+1 too

I do want to track the packages that need it separately.

$ dnf repoquery --releasever=rawhide --disablerepo=\* --enablerepo=fedora-source --arch=src --whatrequires python2
does that already. I don't think a separate mechanism would give us anything.

I already have an overly elaborate separate mechanism for listing the packages.
But it doesn't tell me why Python 2 is actually needed in all those packages, if the packages are maintained, how the packagers will be affected, what upstream plans are, etc.

In this case, we have a list of exceptions on this tracker, and a list of packages from dnf. The difference of those lists is packages which (effectively) are not maintained and shall be retired.

Yes, that's what we are doing.

FTR the provided repoquery is not accurate -- the "regular" repo must be present to make alternate provides count and the real package name must be used for this to work as well:

$ repoquery --repo=rawhide-source --arch=src --whatrequires python2 | wc -l
48

$ repoquery --repo=rawhide-source --arch=src --whatrequires python2-devel | wc -l
93

$ repoquery --repo=rawhide-source --arch=src --whatrequires python27 | wc -l
3


$ repoquery --repo=rawhide{,-source} --whatrequires python2 | grep src$ | wc -l
48

$ repoquery --repo=rawhide{,-source} --whatrequires python2-devel | grep src$ | wc -l
93

$ repoquery --repo=rawhide{,-source} --whatrequires python27 | grep src$ | wc -l
145

Metadata Update from @churchyard:
- Issue tagged with: pending announcement

4 years ago

Metadata Update from @zbyszek:
- Issue untagged with: pending announcement
- Issue close_status updated to: Accepted
- Issue status updated to: Closed (was: Open)

4 years ago

Login to comment on this ticket.

Metadata