summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorModestas Vainius <modestas@vainius.eu>2010-10-16 04:03:33 +0300
committerModestas Vainius <modestas@vainius.eu>2010-10-16 04:03:33 +0300
commitf128332eae070294cd46d358e022529b720421dd (patch)
tree45ca85dd3c3aa3656edc967c824bdbab06b99118
parent98d70e8c913674646a06a42d75bc64ede494a9d9 (diff)
downloadqt4-x11-f128332eae070294cd46d358e022529b720421dd.tar.gz
Permit loading plugins built with future major Qt releases (4.x)
Add 23_permit_plugins_built_with_future_qt.diff patch to permit loading plugins built with future version of Qt. This should restore full compatibility with symbol files. (Closes: #586831) This check is too paranoid for us because it prevents from using symbol files in full potential. Fine-grained package level dependencies should ensure that the required version of the Qt Library is installed which might not necessarily be the latest Qt 4.x the plugin was built against because the plugin actually did not use any of new symbols in the Qt Library. However, removal of this check might still increase likelihood of crashes when: 1) loading a new incompatible version of plugin into a running process still using an old Qt Library. This might happen right after upgrade; 2) user tries to load incompatible non-packaged plugin; but it's an acceptable compromise. Here we trade more bullet proof protection from rare user faults or weird system misconfigurations for more flexibility, installability and expand of forward binary compatibility beyond the same Qt 4.x whenever possible.
-rw-r--r--debian/changelog3
-rw-r--r--debian/patches/23_permit_plugins_built_with_future_qt.diff34
-rw-r--r--debian/patches/series1
3 files changed, 38 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 9196062..0ebae08 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,9 @@ qt4-x11 (4:4.6.3-4) UNRELEASED; urgency=low
* Backport 22_fix_disappearing_cursor.diff patch from 4.7.1 to fix a bug
with mouse cursor disappearing randomly on various widgets (QTreeView,
QListView etc.).
+ * Add 23_permit_plugins_built_with_future_qt.diff patch to permit loading
+ plugins built with future version of Qt. This should restore full
+ compatibility with symbol files. (Closes: #586831)
-- Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> Tue, 12 Oct 2010 17:04:43 +0200
diff --git a/debian/patches/23_permit_plugins_built_with_future_qt.diff b/debian/patches/23_permit_plugins_built_with_future_qt.diff
new file mode 100644
index 0000000..df168f5
--- /dev/null
+++ b/debian/patches/23_permit_plugins_built_with_future_qt.diff
@@ -0,0 +1,34 @@
+From: Modestas Vainius <modax@debian.org>
+Subject: Permit loading plugins built with future major Qt releases (4.x)
+Origin: vendor
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=586831
+
+This check is too paranoid for us because it prevents from using symbol files
+in full potential. Fine-grained package level dependencies should ensure that
+the required version of the Qt Library is installed which might not necessarily
+be the latest Qt 4.x the plugin was built against because the plugin actually
+did not use any of new symbols in the Qt Library.
+
+However, removal of this check might still increase likelihood of crashes when:
+
+1) loading a new incompatible version of plugin into a running process still
+using an old Qt Library. This might happen right after upgrade;
+
+2) user tries to load incompatible non-packaged plugin;
+
+but it's an acceptable compromise. Here we trade more bullet proof protection
+from rare user faults or weird system misconfigurations for more flexibility,
+installability and expand of forward binary compatibility beyond the same Qt
+4.x whenever possible.
+
+--- a/src/corelib/plugin/qlibrary.cpp
++++ b/src/corelib/plugin/qlibrary.cpp
+@@ -745,7 +745,7 @@ bool QLibraryPrivate::isPlugin(QSettings
+
+ pluginState = IsNotAPlugin; // be pessimistic
+
+- if ((qt_version & 0x00ff00) > (QT_VERSION & 0x00ff00) || (qt_version & 0xff0000) != (QT_VERSION & 0xff0000)) {
++ if ((qt_version & 0xff0000) != (QT_VERSION & 0xff0000)) {
+ if (qt_debug_component()) {
+ qWarning("In %s:\n"
+ " Plugin uses incompatible Qt library (%d.%d.%d) [%s]",
diff --git a/debian/patches/series b/debian/patches/series
index 3140ad7..2c90b91 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -30,6 +30,7 @@
20_install_qvfb.diff
21_qt_ia32_library_path.diff
22_fix_disappearing_cursor.diff
+23_permit_plugins_built_with_future_qt.diff
30_webkit_unaligned_access.diff
40_alpha_ice.diff
41_disable_opengl_visibility.diff