Control: reopen -1

The updated dependencies are now

  Depends: python3-pyside2.qttest | python3-pyside6.qttest

this will accidentally switch some packages from PyQt5 to pyside2.

Going back to the start of this work:

#1124166 is a bug in the inkcut packaging - inkcut needs to specify which Qt API it wants to test with, either via an environment variable or in its test config (e.g. pyproject.toml).

#1124166 cannot be solved by changing the dependencies of python3-pytestqt. inkcut would remain broken either:

- because a small fragment of pyside6 is dragged in by one of inkcut's dependencies and so pytestqt's Qt API autodetection picks pyside6 every time.

- or because this change brings in pyside2 and so the API autodetection will pick pyside2 every time; that's not what is supposed to be tested, even if it might accidentally pass.

No changes to the dependencies of pytestqt would ever get inkcut's tests to use pyqt5 as needed in either of those situations.

I see that you've reverted python3-pyqtgraph's dependencies on pyside6 - but that still will leave inkcut's tests running with pyside2 rather than pyqt5 because of this change to python3-pytestqt. This is still wrong. And inkcut's tests are still fragile to the next package that makes a similar switch. That's not a bug in pytestqt.

#1124166 needs to be re-assigned back to inkcut. Setting PYTEST_QT_API=pyqt5 in its debian/rules is the only thing that will actually fix the bug and is a simple 1 line patch.

  https://pytest-qt.readthedocs.io/en/latest/intro.html#requirements

To be clear, *all* packages wanting to use anything other than pyside6 are destined to be broken at some stage by pytestqt's qt-api-auto-selection feature doing the wrong thing due to uncoordinated changes in their dependencies. While python3-pyqtgraph's pyside6 dep has been reverted, the next breakage will still come from some other package. The qt-api-auto-selection feature is ok-ish on a very limited CI system but not in our entangled and complicated dependencies in Debian.

Trying to prevent this breakage using the Depends of python3-pytestqt is impossible, at best installing packages in the test system that are unneeded, at worst breaking the Qt API selection right now for an unknown selection of packages.

I think the correct course of action is

- pytestqt drop these dependencies, reverting to what was in trixie
- pytestqt document that it's up to the test calling package to depend
  on what it needs and that explicitly selecting a Qt API is
  recommended.
- inkcut explicitly declare that it wants pyqt5
- (this is the hard one) look through all build-rdeps/autopkgtest-rdeps
  and identify any more qt-api-auto-selection time-bombs that are
  waiting to go off. UDD tells me there are 24 packages with build-deps
  and 16 packages with testsuite-triggers to look at, giving a total of
  30 packages, some of which I know are already doing this right. I'm
  happy to help.

Additionally, the autopkgtest tests fail because each of the necessary Qt API packages are not installed there - they would need to be added to build-depends for the current set-up to work.

Stuart

--
Stuart Prescott   http://www.nanonanonano.net/ [email protected]
Debian Developer  http://www.debian.org/       [email protected]
GPG fingerprint   90E2 D2C1 AD14 6A1B 7EBB 891D BBC1 7EBB 1396 F2F7

Reply via email to