From: Christian Kandeler Date: Thu, 7 Apr 2011 15:25:54 +0000 (+0200) Subject: Maemo: Support copying directries to sysroot. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3031eae8abc09e18bdac632b521be5a8f6565363;p=qt-creator-jp%2Fqt-creator-jp.git Maemo: Support copying directries to sysroot. --- diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp index 93b140cc75..9d0f4a20f9 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp @@ -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), diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp index b2b0e44464..cc89d2b72c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp @@ -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) { diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h index c12beefd7b..9b662d3cdc 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h @@ -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 static T *buildStep(const ProjectExplorer::DeployConfiguration *dc) {