Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package qtbase-opensource-src 5.15.2+dfsg-9.

[ Reason ]
Unfortunately the patch I added in 5.15.2+dfsg-6 introduced some regressions.

The original purpose of that patch was to fix the bug described here:
- https://bugs.launchpad.net/bugs/1857824
- https://bugs.kde.org/show_bug.cgi?id=417761

However that patch also contained an unrelated change. Quoting the commit
message:

> This change also optimizes QMimeBinaryProvider::addFileNameMatches
> to have the same logic as xdgmime for glob matching:
> literals > extensions > other globs
> As soon as one category matches, we can stop there.
> This makes no difference in the overall results, in practice.

It turns out this optimization causes various problems, which can be seen in
the following bug reports:
- https://bugs.debian.org/989255 (problems with qbittorrent-nox)
- https://bugs.debian.org/989744 (problems with dolphin and all/all MIME type)
- https://bugs.debian.org/990129 (problems with Qt WebEngine)

[ Impact ]
According to the bugs, the previous patch causes issues in different
applications. All issues are in some way related to determining MIME types.

[ Tests ]
I have prepared a locally built .deb where the part of the patch causing
problems was removed:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989744#37

In all three bugs, I got feedback that the issue is fixed with that:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989255#36
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989744#42
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990129#27

[ Risks ]
The risks are all related to MIME types handling. But at least it should be
no worse than before -6 upload. I hope these two parts of the patch were
really independent.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
The 5.15.2+dfsg-8 upload contained another fix that was contributed to us via
a merge request. Apparently that fix also causes a regression, so I decided to
remove it in -9.

unblock qtbase-opensource-src/5.15.2+dfsg-9

Of course there is no urgency, this package can wait its N-day quarantine
in unstable.

--
Dmitry Shachnev
diff -Nru qtbase-opensource-src-5.15.2+dfsg/debian/changelog qtbase-opensource-src-5.15.2+dfsg/debian/changelog
--- qtbase-opensource-src-5.15.2+dfsg/debian/changelog	2021-06-03 15:55:29.000000000 +0300
+++ qtbase-opensource-src-5.15.2+dfsg/debian/changelog	2021-07-02 18:58:04.000000000 +0300
@@ -1,3 +1,23 @@
+qtbase-opensource-src (5.15.2+dfsg-9) unstable; urgency=medium
+
+  * Revert adding fix-misplacement-of-placeholder-text-in-QLineEdit.diff.
+    Unfortunately it causes a regression (see QTBUG-94824).
+
+ -- Dmitry Shachnev <mity...@debian.org>  Fri, 02 Jul 2021 18:58:04 +0300
+
+qtbase-opensource-src (5.15.2+dfsg-8) unstable; urgency=medium
+
+  [ Lu Yaning ]
+  * Backport upstream patch to fix misplacement of placeholder text in
+    QLineEdit with RTL content.
+
+  [ Dmitry Shachnev ]
+  * Remove the qmimeprovider.cpp part of mime_globs.diff. It is unrelated
+    to the original purpose of that patch, and causes various problems
+    (closes: #989255, #989744, #990129).
+
+ -- Dmitry Shachnev <mity...@debian.org>  Mon, 28 Jun 2021 20:38:59 +0300
+
 qtbase-opensource-src (5.15.2+dfsg-7) unstable; urgency=medium
 
   [ Lu Yaning ]
diff -Nru qtbase-opensource-src-5.15.2+dfsg/debian/patches/mime_globs.diff qtbase-opensource-src-5.15.2+dfsg/debian/patches/mime_globs.diff
--- qtbase-opensource-src-5.15.2+dfsg/debian/patches/mime_globs.diff	2021-06-03 15:37:49.000000000 +0300
+++ qtbase-opensource-src-5.15.2+dfsg/debian/patches/mime_globs.diff	2021-07-02 18:58:04.000000000 +0300
@@ -2,14 +2,8 @@
  When multiple globs match, and the result from magic sniffing is
  unrelated to any of those globs, globs have priority and one of them
  should be picked up.
- .
- This change also optimizes QMimeBinaryProvider::addFileNameMatches
- to have the same logic as xdgmime for glob matching:
- literals > extensions > other globs
- As soon as one category matches, we can stop there.
- This makes no difference in the overall results, in practice.
 Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=0cbbba2aa5b47224
-Last-Update: 2021-05-18
+Last-Update: 2021-06-12
 
 --- a/src/corelib/mimetypes/qmimedatabase.cpp
 +++ b/src/corelib/mimetypes/qmimedatabase.cpp
@@ -55,31 +49,3 @@
          m_knownSuffixLength = knownSuffixLength;
      }
  }
---- a/src/corelib/mimetypes/qmimeprovider.cpp
-+++ b/src/corelib/mimetypes/qmimeprovider.cpp
-@@ -244,15 +244,18 @@ void QMimeBinaryProvider::addFileNameMat
-     const QString lowerFileName = fileName.toLower();
-     // Check literals (e.g. "Makefile")
-     matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosLiteralListOffset), fileName);
--    // Check complex globs (e.g. "callgrind.out[0-9]*")
--    matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName);
-     // Check the very common *.txt cases with the suffix tree
--    const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset);
--    const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset);
--    const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4);
--    matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false);
-+    if (result.m_matchingMimeTypes.isEmpty()) {
-+        const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset);
-+        const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset);
-+        const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4);
-+        matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false);
-+        if (result.m_matchingMimeTypes.isEmpty())
-+            matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true);
-+    }
-+    // Check complex globs (e.g. "callgrind.out[0-9]*" or "README*")
-     if (result.m_matchingMimeTypes.isEmpty())
--        matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true);
-+        matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName);
- }
- 
- void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName)

Reply via email to