diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index 54aa6fa1fe5a5a7220fda6cd28baea82d5a8da55..103613fd788ba529aecd2b38dee540f81ddcc0a2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -58,6 +58,7 @@ #include <QtCore/QProcess> #include <QtCore/QProcessEnvironment> +#include <QtCore/QRegExp> #include <QtCore/QStringBuilder> #include <QtGui/QWidget> @@ -134,6 +135,7 @@ bool MaemoPackageCreationStep::createPackage() return true; emit addOutput(tr("Creating package file ..."), BuildStep::MessageOutput); + checkProjectName(); m_buildProc.reset(new QProcess); QString error; if (!preparePackagingProcess(m_buildProc.data(), maemoToolChain(), @@ -221,7 +223,8 @@ bool MaemoPackageCreationStep::removeDirectory(const QString &dirPath) if (!dir.exists()) return true; - const QStringList &files = dir.entryList(QDir::Files); + const QStringList &files + = dir.entryList(QDir::Files | QDir::Hidden | QDir::System); foreach (const QString &fileName, files) { if (!dir.remove(fileName)) return false; @@ -428,10 +431,34 @@ QString MaemoPackageCreationStep::packagingCommand(const MaemoToolChain *tc, return perl + tc->maddeRoot() % QLatin1String("/madbin/") % commandName; } +void MaemoPackageCreationStep::checkProjectName() +{ + const QRegExp legalName(QLatin1String("[0-9-+a-z\\.]+")); + if (!legalName.exactMatch(buildConfiguration()->target()->project()->displayName())) { + emit addTask(Task(Task::Warning, + tr("Your project name contains characters not allowed in Debian packages.\n" + "They must only use lower-case letters, numbers, '-', '+' and '.'.\n" + "We will try to work around that, but you may experience problems."), + QString(), -1, TASK_CATEGORY_BUILDSYSTEM)); + } +} + +QString MaemoPackageCreationStep::packageName(const ProjectExplorer::Project *project) +{ + QString packageName = project->displayName().toLower(); + const QRegExp legalLetter(QLatin1String("[a-z0-9+-.]"), Qt::CaseSensitive, + QRegExp::WildcardUnix); + for (int i = 0; i < packageName.length(); ++i) { + if (!legalLetter.exactMatch(packageName.mid(i, 1))) + packageName[i] = QLatin1Char('-'); + } + return packageName; +} + QString MaemoPackageCreationStep::packageFileName(const ProjectExplorer::Project *project, const QString &version) { - return project->displayName() % QLatin1Char('_') % version + return packageName(project) % QLatin1Char('_') % version % QLatin1String("_armel.deb"); } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h index 86b3f2e4eeb6fcc00487241779d08aff6fdc15ba..8aa163d8a0d8522924a80d6af364ea2d90a2b41d 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h @@ -79,6 +79,7 @@ public: const QString &workingDir, QString *error); static QString packagingCommand(const MaemoToolChain *tc, const QString &commandName); + static QString packageName(const ProjectExplorer::Project *project); static QString packageFileName(const ProjectExplorer::Project *project, const QString &version); @@ -116,6 +117,7 @@ private: const Qt4BuildConfiguration *qt4BuildConfiguration() const; const MaemoToolChain *maemoToolChain() const; MaemoDeployStep * deployStep() const; + void checkProjectName(); static const QLatin1String CreatePackageId; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp index 0e494c42c700df5b79a46d2215ed6779dda71ce0..8045e744a778d953b998c85a89ff8872e15a3719 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemotemplatesmanager.cpp @@ -147,7 +147,7 @@ bool MaemoTemplatesManager::createTemplatesIfNecessary(const ProjectExplorer::Ta } const QString command = QLatin1String("dh_make -s -n -p ") - + project->displayName() + QLatin1Char('_') + + MaemoPackageCreationStep::packageName(project) + QLatin1Char('_') + MaemoPackageCreationStep::DefaultVersionNumber; dh_makeProc.start(MaemoPackageCreationStep::packagingCommand(tc, command)); if (!dh_makeProc.waitForStarted()) {