OSDN Git Service

Maemo: Support copying directries to sysroot.
authorChristian Kandeler <christian.kandeler@nokia.com>
Thu, 7 Apr 2011 15:25:54 +0000 (17:25 +0200)
committerChristian Kandeler <christian.kandeler@nokia.com>
Thu, 7 Apr 2011 15:26:19 +0000 (17:26 +0200)
src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp
src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h

index 93b140c..9d0f4a2 100644 (file)
@@ -650,7 +650,7 @@ void MaemoDeployStep::installToSysroot()
                 + d.remoteDir + sep + QFileInfo(d.localFilePath).fileName();
             sysRootDir.mkpath(d.remoteDir.mid(1));
             QFile::remove(targetFilePath);
-            if (!QFile::copy(d.localFilePath, targetFilePath)) {
+            if (!MaemoGlobal::copyRecursively(d.localFilePath, targetFilePath)) {
                 writeOutput(tr("Sysroot installation failed: "
                     "Could not copy '%1' to '%2'. Continuing anyway.")
                     .arg(QDir::toNativeSeparators(d.localFilePath),
index b2b0e44..cc89d2b 100644 (file)
@@ -254,6 +254,43 @@ bool MaemoGlobal::removeRecursively(const QString &filePath, QString &error)
     return true;
 }
 
+bool MaemoGlobal::copyRecursively(const QString &srcFilePath,
+    const QString &tgtFilePath, QString *error)
+{
+    QFileInfo srcFileInfo(srcFilePath);
+    if (srcFileInfo.isDir()) {
+        QDir targetDir(tgtFilePath);
+        targetDir.cdUp();
+        if (!targetDir.mkdir(QFileInfo(tgtFilePath).fileName())) {
+            if (error) {
+                *error = tr("Failed to create directory '%1'.")
+                    .arg(QDir::toNativeSeparators(tgtFilePath));
+                return false;
+            }
+        }
+        QDir sourceDir(srcFilePath);
+        QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
+        foreach (const QString &fileName, fileNames) {
+            const QString newSrcFilePath
+                = srcFilePath + QLatin1Char('/') + fileName;
+            const QString newTgtFilePath
+                = tgtFilePath + QLatin1Char('/') + fileName;
+            if (!copyRecursively(newSrcFilePath, newTgtFilePath))
+                return false;
+        }
+    } else {
+        if (!QFile::copy(srcFilePath, tgtFilePath)) {
+            if (error) {
+                *error = tr("Could not copy file '%1' to '%2'.")
+                    .arg(QDir::toNativeSeparators(srcFilePath),
+                         QDir::toNativeSeparators(tgtFilePath));
+            }
+            return false;
+        }
+    }
+    return true;
+}
+
 bool MaemoGlobal::callMad(QProcess &proc, const QStringList &args,
     const QtVersion *qtVersion, bool useTarget)
 {
index c12beef..9b662d3 100644 (file)
@@ -107,6 +107,8 @@ public:
     static PackagingSystem packagingSystem(MaemoVersion maemoVersion);
 
     static bool removeRecursively(const QString &filePath, QString &error);
+    static bool copyRecursively(const QString &srcFilePath,
+        const QString &tgtFilePath, QString *error = 0);
 
     template<class T> static T *buildStep(const ProjectExplorer::DeployConfiguration *dc)
     {