From 60cd3d1847a23ffbba1688aa67fe2e704d446bad Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@nokia.com>
Date: Wed, 1 Dec 2010 13:31:23 +0100
Subject: [PATCH] Maemo: Call dpkg-buildpackage via mad script.

Task-number: QTCREATORBUG-2708
Reviewed-by: kh1
---
 .../qt-maemo/maemopackagecreationstep.cpp     | 54 +++++++++----------
 .../qt-maemo/maemopackagecreationstep.h       |  1 -
 2 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
index 849c4b5d2b2..8772cb2b8e5 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
@@ -172,8 +172,34 @@ bool MaemoPackageCreationStep::createPackage(QProcess *buildProc)
     if (!copyDebianFiles(inSourceBuild))
         return false;
 
-    if (!runCommand(buildProc, QLatin1String("dpkg-buildpackage -nc -uc -us")))
+    const QString maddeRoot = maemoToolChain()->maddeRoot();
+    const QString madCommand = maddeRoot + QLatin1String("/bin/mad");
+    const QStringList args = QStringList() << QLatin1String("-t")
+        << maemoToolChain()->targetName() << QLatin1String("dpkg-buildpackage")
+        << QLatin1String("-nc") << QLatin1String("-uc") << QLatin1String("-us");
+    const QString cmdLine = madCommand + QLatin1Char(' ')
+        + args.join(QLatin1String(" "));
+    emit addOutput(tr("Package Creation: Running command '%1'.").arg(cmdLine),
+        BuildStep::MessageOutput);
+    MaemoGlobal::callMaddeShellScript(*buildProc, maddeRoot, madCommand, args);
+    if (!buildProc->waitForStarted()) {
+        raiseError(tr("Packaging failed."),
+            tr("Packaging error: Could not start command '%1'. Reason: %2")
+            .arg(cmdLine, buildProc->errorString()));
         return false;
+    }
+    buildProc->waitForFinished(-1);
+    if (buildProc->error() != QProcess::UnknownError
+            || buildProc->exitCode() != 0) {
+        QString mainMessage = tr("Packaging Error: Command '%1' failed.")
+            .arg(cmdLine);
+        if (buildProc->error() != QProcess::UnknownError)
+            mainMessage += tr(" Reason: %1").arg(buildProc->errorString());
+        else
+            mainMessage += tr("Exit code: %1").arg(buildProc->exitCode());
+        raiseError(mainMessage);
+        return false;
+    }
 
     // Workaround for non-working dh_builddeb --destdir=.
     if (!QDir(buildDirectory()).isRoot()) {
@@ -272,32 +298,6 @@ bool MaemoPackageCreationStep::copyDebianFiles(bool inSourceBuild)
     return true;
 }
 
-bool MaemoPackageCreationStep::runCommand(QProcess *buildProc,
-    const QString &command)
-{
-    emit addOutput(tr("Package Creation: Running command '%1'.").arg(command), BuildStep::MessageOutput);
-    buildProc->start(packagingCommand(maemoToolChain(), command));
-    if (!buildProc->waitForStarted()) {
-        raiseError(tr("Packaging failed."),
-            tr("Packaging error: Could not start command '%1'. Reason: %2")
-            .arg(command).arg(buildProc->errorString()));
-        return false;
-    }
-    buildProc->waitForFinished(-1);
-    if (buildProc->error() != QProcess::UnknownError
-        || buildProc->exitCode() != 0) {
-        QString mainMessage = tr("Packaging Error: Command '%1' failed.")
-            .arg(command);
-        if (buildProc->error() != QProcess::UnknownError)
-            mainMessage += tr(" Reason: %1").arg(buildProc->errorString());
-        else
-            mainMessage += tr("Exit code: %1").arg(buildProc->exitCode());
-        raiseError(mainMessage);
-        return false;
-    }
-    return true;
-}
-
 void MaemoPackageCreationStep::handleBuildOutput()
 {
     QProcess * const buildProc = qobject_cast<QProcess *>(sender());
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h
index 3f946ed755c..a05e5b0c587 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h
@@ -111,7 +111,6 @@ private:
 
     bool createPackage(QProcess *buildProc);
     bool copyDebianFiles(bool inSourceBuild);
-    bool runCommand(QProcess *buildProc, const QString &command);
     QString maddeRoot() const;
     QString targetRoot() const;
     static QString nativePath(const QFile &file);
-- 
GitLab