forked from qt-creator/qt-creator
Symbian: Warn when patching sis files
Wharn when qmake patches sis files to make them compatible with self-signing. Task-number: QTCREATORBUG-2403 Reviewed-by: Pawel Polanski
This commit is contained in:
@@ -27,43 +27,91 @@
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#include "s60createpackageparser.h"
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/taskwindow.h>
|
||||
|
||||
using namespace Qt4ProjectManager;
|
||||
using namespace ProjectExplorer;
|
||||
using namespace ProjectExplorer::Constants;
|
||||
using namespace Qt4ProjectManager::Internal;
|
||||
|
||||
S60CreatePackageParser::S60CreatePackageParser()
|
||||
S60CreatePackageParser::S60CreatePackageParser(const QString &packageName) :
|
||||
m_packageName(packageName),
|
||||
m_needPassphrase(false)
|
||||
{
|
||||
m_signSis.setPattern("^(error):([A-Z\\d]+):(.+)$");
|
||||
setObjectName(QLatin1String("S60CreatePackageParser"));
|
||||
m_signSis.setPattern("^(error:\\s?)+(.+)$");
|
||||
m_signSis.setMinimal(true);
|
||||
}
|
||||
|
||||
bool S60CreatePackageParser::parseLine(const QString &line)
|
||||
{
|
||||
if (line.startsWith("Patching: ")) {
|
||||
m_patchingLines.append(line.mid(10).trimmed());
|
||||
return true;
|
||||
}
|
||||
if (!m_patchingLines.isEmpty()) {
|
||||
emit packageWasPatched(m_packageName, m_patchingLines);
|
||||
|
||||
QString lines = m_patchingLines.join("\n");
|
||||
m_patchingLines.clear();
|
||||
//: %1 package name, %2 will be replaced by a list of patching lines.
|
||||
QString message = tr("The binary package '%1' was patched to be installable after being self-signed!\n%2\n"
|
||||
"Use a developer certificate or any other signing option to prevent "
|
||||
"this patching from happening.").
|
||||
arg(m_packageName, lines);
|
||||
ProjectExplorer::Task task(ProjectExplorer::Task::Warning, message, QString(), -1,
|
||||
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM);
|
||||
|
||||
QTextLayout::FormatRange fr;
|
||||
fr.start = message.indexOf(lines);
|
||||
fr.length = lines.length();
|
||||
fr.format.setFontItalic(true);
|
||||
task.formats.append(fr);
|
||||
|
||||
emit addTask(task);
|
||||
}
|
||||
|
||||
if (m_signSis.indexIn(line) > -1) {
|
||||
if (m_signSis.cap(2).contains(QLatin1String("bad password"))
|
||||
|| m_signSis.cap(2).contains(QLatin1String("bad decrypt")))
|
||||
m_needPassphrase = true;
|
||||
else
|
||||
emit addTask(ProjectExplorer::Task(ProjectExplorer::Task::Error, m_signSis.cap(2), QString(), -1,
|
||||
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void S60CreatePackageParser::stdOutput(const QString &line)
|
||||
{
|
||||
QString lne = line.trimmed();
|
||||
|
||||
if (m_signSis.indexIn(lne) > -1) {
|
||||
QString errorDescription(m_signSis.cap(3));
|
||||
int index = errorDescription.indexOf(QLatin1String("error:"));
|
||||
if (index >= 0) {
|
||||
stdOutput(errorDescription.mid(index));
|
||||
errorDescription = errorDescription.left(index);
|
||||
}
|
||||
Task task(Task::Error,
|
||||
errorDescription /* description */,
|
||||
QString(), -1,
|
||||
TASK_CATEGORY_BUILDSYSTEM);
|
||||
emit addTask(task);
|
||||
}
|
||||
IOutputParser::stdOutput(line);
|
||||
if (!parseLine(line))
|
||||
IOutputParser::stdOutput(line);
|
||||
}
|
||||
|
||||
void S60CreatePackageParser::stdError(const QString &line)
|
||||
{
|
||||
stdOutput(line);
|
||||
IOutputParser::stdError(line);
|
||||
if (!parseLine(line))
|
||||
IOutputParser::stdError(line);
|
||||
}
|
||||
|
||||
bool S60CreatePackageParser::needPassphrase() const
|
||||
{
|
||||
return m_needPassphrase;
|
||||
}
|
||||
|
||||
/* STDOUT:
|
||||
make[1]: Entering directory `C:/temp/test/untitled131'
|
||||
createpackage.bat -g untitled131_template.pkg RELEASE-armv5
|
||||
Auto-patching capabilities for self signed package.
|
||||
|
||||
Patching package file and relevant binaries...
|
||||
Patching: Removed dependency to qt.sis (0x2001E61C) to avoid installation issues in case qt.sis is also patched.
|
||||
|
||||
|
||||
NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,
|
||||
so it should not be used for any kind of Symbian signing or distribution!
|
||||
Use a proper certificate to avoid the need to patch the package.
|
||||
|
||||
Processing untitled131_release-armv5.pkg...
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user