diff --git a/share/qtcreator/templates/shared/manifest.aegis b/share/qtcreator/templates/shared/manifest.aegis new file mode 100644 index 00000000000..e584f96161e --- /dev/null +++ b/share/qtcreator/templates/shared/manifest.aegis @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/plugins/madde/maemopackagecreationstep.cpp b/src/plugins/madde/maemopackagecreationstep.cpp index 44055c681ba..44248631b2f 100644 --- a/src/plugins/madde/maemopackagecreationstep.cpp +++ b/src/plugins/madde/maemopackagecreationstep.cpp @@ -375,17 +375,40 @@ bool MaemoDebianPackageCreationStep::copyDebianFiles(bool inSourceBuild) QString newFileName = fileName; if (newFileName == Qt4HarmattanTarget::aegisManifestFileName()) { // If the user has touched the Aegis manifest file, we copy it for use - // by MADDE. Otherwise the required capabilities will be auto-detected. + // by MADDE. Otherwise the required capabilities will be auto-detected, + // unless the user explicitly requests that no manifest should be created. if (QFileInfo(srcFile).size() == 0) continue; newFileName = maemoTarget()->packageName() + QLatin1String(".aegis"); } + const QString destFile = debianDirPath + QLatin1Char('/') + newFileName; if (fileName == QLatin1String("rules")) { if (!adaptRulesFile(srcFile, destFile)) return false; - } else if (!QFile::copy(srcFile, destFile)) { - raiseError(tr("Could not copy file '%1' to '%2'") + continue; + } + + if (newFileName == maemoTarget()->packageName() + QLatin1String(".aegis")) { + Utils::FileReader reader; + if (!reader.fetch(srcFile)) { + raiseError(tr("Could not read manifest file '%1': %2.") + .arg(QDir::toNativeSeparators(srcFile), reader.errorString())); + return false; + } + if (reader.data().startsWith("NoAegisFile")) { + QFile targetFile(destFile); + if (!targetFile.open(QIODevice::WriteOnly)) { + raiseError(tr("Could not write manifest file '%1': %2.") + .arg(QDir::toNativeSeparators(destFile), targetFile.errorString())); + return false; + } + continue; + } + } + + if (!QFile::copy(srcFile, destFile)) { + raiseError(tr("Could not copy file '%1' to '%2'.") .arg(QDir::toNativeSeparators(srcFile), QDir::toNativeSeparators(destFile))); return false; } diff --git a/src/plugins/madde/qt4maemotarget.cpp b/src/plugins/madde/qt4maemotarget.cpp index 3814236159c..1ebd6025951 100644 --- a/src/plugins/madde/qt4maemotarget.cpp +++ b/src/plugins/madde/qt4maemotarget.cpp @@ -1143,9 +1143,24 @@ QString Qt4HarmattanTarget::aegisManifestFileName() void Qt4HarmattanTarget::handleTargetAddedSpecial() { AbstractDebBasedQt4MaemoTarget::handleTargetAddedSpecial(); - QFile aegisFile(debianDirPath() + QLatin1Char('/') + aegisManifestFileName()); - if (!aegisFile.exists()) - aegisFile.open(QIODevice::WriteOnly); + const QFile aegisFile(debianDirPath() + QLatin1Char('/') + aegisManifestFileName()); + if (aegisFile.exists()) + return; + + Utils::FileReader reader; + if (!reader.fetch(Core::ICore::instance()->resourcePath() + + QLatin1String("/templates/shared/") + aegisManifestFileName())) { + qDebug("Reading manifest template failed."); + return; + } + QString content = QString::fromUtf8(reader.data()); + content.replace(QLatin1String("%%PROJECTNAME%%"), project()->displayName()); + Utils::FileSaver writer(aegisFile.fileName(), QIODevice::WriteOnly); + writer.write(content.toUtf8()); + if (!writer.finalize()) { + qDebug("Failure writing manifest file."); + return; + } } void Qt4HarmattanTarget::addAdditionalControlFileFields(QByteArray &controlContents)