From 78ea4d2d2f3d04cc21973d330c3ac0de8f46455c Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@nokia.com>
Date: Tue, 21 Sep 2010 16:28:10 +0200
Subject: [PATCH] Maemo: More stable check for on-device Qt packages.

According to the man page, dpkg -l ist not suitable for automated parsing.

Reviewed-by: kh1
---
 .../qt-maemo/maemoconfigtestdialog.cpp         | 18 +++++++++---------
 .../qt-maemo/maemoconfigtestdialog.ui          |  4 ++--
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp
index dfb1e0e7a4c..80d78ffba43 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.cpp
@@ -89,9 +89,8 @@ void MaemoConfigTestDialog::handleConnected()
     if (!m_connection)
         return;
     QLatin1String sysInfoCmd("uname -rsm");
-    QLatin1String qtInfoCmd("dpkg -l |grep libqt |grep '^ii'"
-        "|sed 's/[[:space:]][[:space:]]*/ /g' "
-        "|cut -d ' ' -f 2,3 |sed 's/~.*//g'");
+    QLatin1String qtInfoCmd("dpkg-query -W -f '${Package} ${Version} ${Status}\n' 'libqt*' "
+        "|grep ' installed$'");
     QString command(sysInfoCmd + " && " + qtInfoCmd);
     m_infoProcess = m_connection->createRemoteProcess(command.toUtf8());
     connect(m_infoProcess.data(), SIGNAL(closed(int)), this,
@@ -205,7 +204,7 @@ QString MaemoConfigTestDialog::parseTestOutput()
 
     output = tr("Hardware architecture: %1\n").arg(unamePattern.cap(2));
     output.append(tr("Kernel version: %1\n").arg(unamePattern.cap(1)));
-    const QRegExp dkpgPattern(QLatin1String("libqt\\S+\\s+(?:\\d:)?(\\d)\\.(\\d)\\.(\\d)"));
+    const QRegExp dkpgPattern(QLatin1String("(\\S+) (\\S*(\\d+)\\.(\\d+)\\.(\\d+)\\S*) \\S+ \\S+ \\S+"));
     index = dkpgPattern.indexIn(m_deviceTestOutput);
     if (index == -1) {
         output.append(tr("No Qt packages installed."));
@@ -214,11 +213,12 @@ QString MaemoConfigTestDialog::parseTestOutput()
 
     output.append(tr("List of installed Qt packages:") + QLatin1Char('\n'));
     do {
-        output.append(QLatin1Char('\t') + dkpgPattern.cap(0)
-            + QLatin1Char('\n'));
-        index = dkpgPattern.indexIn(m_deviceTestOutput, index + 1);
-        if (!m_qtVersionOk && QT_VERSION_CHECK(dkpgPattern.cap(1).toInt(),
-            dkpgPattern.cap(2).toInt(), dkpgPattern.cap(3).toInt()) >= 0x040602) {
+        output.append(QLatin1Char('\t') + dkpgPattern.cap(1) + QLatin1Char(' ')
+            + dkpgPattern.cap(2) + QLatin1Char('\n'));
+        index = dkpgPattern.indexIn(m_deviceTestOutput, index
+            + dkpgPattern.cap(0).length());
+        if (!m_qtVersionOk && QT_VERSION_CHECK(dkpgPattern.cap(3).toInt(),
+            dkpgPattern.cap(4).toInt(), dkpgPattern.cap(5).toInt()) >= 0x040602) {
             m_qtVersionOk = true;
         }
     } while (index != -1);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui
index 798a61aac8c..e91549702c3 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconfigtestdialog.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>395</width>
-    <height>190</height>
+    <width>661</width>
+    <height>324</height>
    </rect>
   </property>
   <property name="windowTitle">
-- 
GitLab