forked from qt-creator/qt-creator
Handle more make errors
This commit is contained in:
@@ -49,7 +49,7 @@ GnuMakeParser::GnuMakeParser(const QString &dir) :
|
|||||||
m_makeDir.setPattern(QLatin1String(MAKE_PATTERN) +
|
m_makeDir.setPattern(QLatin1String(MAKE_PATTERN) +
|
||||||
QLatin1String("(\\w+) directory .(.+).$"));
|
QLatin1String("(\\w+) directory .(.+).$"));
|
||||||
m_makeDir.setMinimal(true);
|
m_makeDir.setMinimal(true);
|
||||||
m_makeLine.setPattern(QLatin1String(MAKE_PATTERN) + QLatin1String("\\*\\*\\*\\s(.*)$"));
|
m_makeLine.setPattern(QLatin1String(MAKE_PATTERN) + QLatin1String("(\\*\\*\\*\\s)?(.*)$"));
|
||||||
m_makeLine.setMinimal(true);
|
m_makeLine.setMinimal(true);
|
||||||
m_makefileError.setPattern(QLatin1String("^(.*):(\\d+):\\s\\*\\*\\*\\s(.*)$"));
|
m_makefileError.setPattern(QLatin1String("^(.*):(\\d+):\\s\\*\\*\\*\\s(.*)$"));
|
||||||
m_makefileError.setMinimal(true);
|
m_makefileError.setMinimal(true);
|
||||||
@@ -93,11 +93,12 @@ void GnuMakeParser::stdError(const QString &line)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (m_makeLine.indexIn(lne) > -1) {
|
if (m_makeLine.indexIn(lne) > -1) {
|
||||||
++m_fatalErrorCount;
|
if (!m_makeLine.cap(7).isEmpty())
|
||||||
|
++m_fatalErrorCount;
|
||||||
if (!m_suppressIssues) {
|
if (!m_suppressIssues) {
|
||||||
m_suppressIssues = true;
|
m_suppressIssues = true;
|
||||||
addTask(Task(Task::Error,
|
addTask(Task(Task::Error,
|
||||||
m_makeLine.cap(7),
|
m_makeLine.cap(8),
|
||||||
QString() /* filename */,
|
QString() /* filename */,
|
||||||
-1, /* line */
|
-1, /* line */
|
||||||
Constants::TASK_CATEGORY_BUILDSYSTEM));
|
Constants::TASK_CATEGORY_BUILDSYSTEM));
|
||||||
@@ -308,6 +309,18 @@ void ProjectExplorerPlugin::testGnuMakeParserParsing_data()
|
|||||||
Constants::TASK_CATEGORY_BUILDSYSTEM))
|
Constants::TASK_CATEGORY_BUILDSYSTEM))
|
||||||
<< QString()
|
<< QString()
|
||||||
<< QStringList();
|
<< QStringList();
|
||||||
|
QTest::newRow("missing g++")
|
||||||
|
<< QStringList()
|
||||||
|
<< QString::fromLatin1("make: g++: Command not found")
|
||||||
|
<< OutputParserTester::STDERR
|
||||||
|
<< QString() << QString()
|
||||||
|
<< (QList<Task>()
|
||||||
|
<< Task(Task::Error,
|
||||||
|
QString::fromLatin1("g++: Command not found"),
|
||||||
|
QString(), -1,
|
||||||
|
Constants::TASK_CATEGORY_BUILDSYSTEM))
|
||||||
|
<< QString()
|
||||||
|
<< QStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::testGnuMakeParserParsing()
|
void ProjectExplorerPlugin::testGnuMakeParserParsing()
|
||||||
|
|||||||
@@ -509,9 +509,8 @@ public:
|
|||||||
QMenu *m_contextMenu;
|
QMenu *m_contextMenu;
|
||||||
QModelIndex m_contextMenuIndex;
|
QModelIndex m_contextMenuIndex;
|
||||||
ITaskHandler *m_defaultHandler;
|
ITaskHandler *m_defaultHandler;
|
||||||
QToolButton *m_filterWarningsButton;
|
QToolButton *m_filterButton;
|
||||||
QToolButton *m_categoriesButton;
|
QMenu *m_filterMenu;
|
||||||
QMenu *m_categoriesMenu;
|
|
||||||
TaskHub *m_taskHub;
|
TaskHub *m_taskHub;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -569,20 +568,16 @@ TaskWindow::TaskWindow(TaskHub *taskhub) : d(new TaskWindowPrivate)
|
|||||||
connect(d->m_listview, SIGNAL(customContextMenuRequested(QPoint)),
|
connect(d->m_listview, SIGNAL(customContextMenuRequested(QPoint)),
|
||||||
this, SLOT(showContextMenu(QPoint)));
|
this, SLOT(showContextMenu(QPoint)));
|
||||||
|
|
||||||
d->m_filterWarningsButton = createFilterButton(d->m_model->taskTypeIcon(Task::Warning),
|
d->m_filterMenu = new QMenu;
|
||||||
tr("Show Warnings"),
|
connect(d->m_filterMenu, SIGNAL(aboutToShow()), this, SLOT(updateCategoriesMenu()));
|
||||||
this, SLOT(setShowWarnings(bool)));
|
connect(d->m_filterMenu, SIGNAL(triggered(QAction*)), this, SLOT(filterMenuTriggered(QAction*)));
|
||||||
|
|
||||||
d->m_categoriesMenu = new QMenu;
|
d->m_filterButton = new QToolButton;
|
||||||
connect(d->m_categoriesMenu, SIGNAL(aboutToShow()), this, SLOT(updateCategoriesMenu()));
|
d->m_filterButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER)));
|
||||||
connect(d->m_categoriesMenu, SIGNAL(triggered(QAction*)), this, SLOT(filterCategoryTriggered(QAction*)));
|
d->m_filterButton->setToolTip(tr("Filter by categories"));
|
||||||
|
d->m_filterButton->setAutoRaise(true);
|
||||||
d->m_categoriesButton = new QToolButton;
|
d->m_filterButton->setPopupMode(QToolButton::InstantPopup);
|
||||||
d->m_categoriesButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER)));
|
d->m_filterButton->setMenu(d->m_filterMenu);
|
||||||
d->m_categoriesButton->setToolTip(tr("Filter by categories"));
|
|
||||||
d->m_categoriesButton->setAutoRaise(true);
|
|
||||||
d->m_categoriesButton->setPopupMode(QToolButton::InstantPopup);
|
|
||||||
d->m_categoriesButton->setMenu(d->m_categoriesMenu);
|
|
||||||
|
|
||||||
connect(d->m_taskHub, SIGNAL(categoryAdded(QString, QString)),
|
connect(d->m_taskHub, SIGNAL(categoryAdded(QString, QString)),
|
||||||
this, SLOT(addCategory(QString, QString)));
|
this, SLOT(addCategory(QString, QString)));
|
||||||
@@ -598,7 +593,6 @@ TaskWindow::~TaskWindow()
|
|||||||
{
|
{
|
||||||
Core::ICore::instance()->removeContextObject(d->m_taskWindowContext);
|
Core::ICore::instance()->removeContextObject(d->m_taskWindowContext);
|
||||||
cleanContextMenu();
|
cleanContextMenu();
|
||||||
delete d->m_filterWarningsButton;
|
|
||||||
delete d->m_listview;
|
delete d->m_listview;
|
||||||
delete d->m_filter;
|
delete d->m_filter;
|
||||||
delete d->m_model;
|
delete d->m_model;
|
||||||
@@ -607,7 +601,7 @@ TaskWindow::~TaskWindow()
|
|||||||
|
|
||||||
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget*>() << d->m_filterWarningsButton << d->m_categoriesButton;
|
return QList<QWidget*>() << d->m_filterButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *TaskWindow::outputWidget(QWidget *)
|
QWidget *TaskWindow::outputWidget(QWidget *)
|
||||||
@@ -731,38 +725,80 @@ void TaskWindow::setShowWarnings(bool show)
|
|||||||
|
|
||||||
void TaskWindow::updateCategoriesMenu()
|
void TaskWindow::updateCategoriesMenu()
|
||||||
{
|
{
|
||||||
d->m_categoriesMenu->clear();
|
d->m_filterMenu->clear();
|
||||||
|
|
||||||
const QStringList filteredCategories = d->m_filter->filteredCategories();
|
const QStringList filteredCategories = d->m_filter->filteredCategories();
|
||||||
|
|
||||||
foreach (const QString &categoryId, d->m_model->categoryIds()) {
|
foreach (const QString &categoryId, d->m_model->categoryIds()) {
|
||||||
const QString categoryName = d->m_model->categoryDisplayName(categoryId);
|
const QString categoryName = d->m_model->categoryDisplayName(categoryId);
|
||||||
|
|
||||||
QAction *action = new QAction(d->m_categoriesMenu);
|
QAction *action = new QAction(d->m_filterMenu);
|
||||||
action->setCheckable(true);
|
action->setCheckable(true);
|
||||||
action->setText(categoryName);
|
action->setText(categoryName);
|
||||||
action->setData(categoryId);
|
action->setData(categoryId);
|
||||||
action->setChecked(!filteredCategories.contains(categoryId));
|
action->setChecked(!filteredCategories.contains(categoryId));
|
||||||
|
|
||||||
d->m_categoriesMenu->addAction(action);
|
d->m_filterMenu->addAction(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d->m_filterMenu->addSeparator();
|
||||||
|
|
||||||
|
QAction *unknownType = new QAction(d->m_model->taskTypeIcon(Task::Unknown),
|
||||||
|
tr("Informational"), d->m_filterMenu);
|
||||||
|
unknownType->setCheckable(true);
|
||||||
|
unknownType->setData(Task::Unknown);
|
||||||
|
unknownType->setChecked(d->m_filter->filterIncludesUnknowns());
|
||||||
|
d->m_filterMenu->addAction(unknownType);
|
||||||
|
|
||||||
|
QAction *warningType = new QAction(d->m_model->taskTypeIcon(Task::Warning),
|
||||||
|
tr("Warnings"), d->m_filterMenu);
|
||||||
|
warningType->setCheckable(true);
|
||||||
|
warningType->setData(Task::Warning);
|
||||||
|
warningType->setChecked(d->m_filter->filterIncludesUnknowns());
|
||||||
|
d->m_filterMenu->addAction(warningType);
|
||||||
|
|
||||||
|
QAction *errorType = new QAction(d->m_model->taskTypeIcon(Task::Error),
|
||||||
|
tr("Errors"), d->m_filterMenu);
|
||||||
|
errorType->setCheckable(true);
|
||||||
|
errorType->setData(Task::Error);
|
||||||
|
errorType->setChecked(d->m_filter->filterIncludesUnknowns());
|
||||||
|
d->m_filterMenu->addAction(errorType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::filterCategoryTriggered(QAction *action)
|
void TaskWindow::filterMenuTriggered(QAction *action)
|
||||||
{
|
{
|
||||||
QString categoryId = action->data().toString();
|
if (action->data().type() == QVariant::String) {
|
||||||
Q_ASSERT(!categoryId.isEmpty());
|
QString categoryId = action->data().toString();
|
||||||
|
Q_ASSERT(!categoryId.isEmpty());
|
||||||
|
|
||||||
QStringList categories = d->m_filter->filteredCategories();
|
QStringList categories = d->m_filter->filteredCategories();
|
||||||
Q_ASSERT(d->m_filter->filteredCategories().contains(categoryId) == action->isChecked());
|
Q_ASSERT(d->m_filter->filteredCategories().contains(categoryId) == action->isChecked());
|
||||||
|
|
||||||
if (action->isChecked()) {
|
if (action->isChecked()) {
|
||||||
categories.removeOne(categoryId);
|
categories.removeOne(categoryId);
|
||||||
|
} else {
|
||||||
|
categories.append(categoryId);
|
||||||
|
}
|
||||||
|
|
||||||
|
d->m_filter->setFilteredCategories(categories);
|
||||||
} else {
|
} else {
|
||||||
categories.append(categoryId);
|
bool ok;
|
||||||
}
|
Task::TaskType type = static_cast<Task::TaskType>(action->data().toInt(&ok));
|
||||||
|
Q_ASSERT(ok);
|
||||||
|
|
||||||
d->m_filter->setFilteredCategories(categories);
|
switch (type) {
|
||||||
|
case ProjectExplorer::Task::Unknown:
|
||||||
|
d->m_filter->setFilterIncludesUnknowns(action->isChecked());
|
||||||
|
break;
|
||||||
|
case ProjectExplorer::Task::Error:
|
||||||
|
d->m_filter->setFilterIncludesErrors(action->isChecked());
|
||||||
|
break;
|
||||||
|
case ProjectExplorer::Task::Warning:
|
||||||
|
d->m_filter->setFilterIncludesWarnings(action->isChecked());
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int TaskWindow::taskCount() const
|
int TaskWindow::taskCount() const
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ private slots:
|
|||||||
void contextMenuEntryTriggered(QAction *);
|
void contextMenuEntryTriggered(QAction *);
|
||||||
void setShowWarnings(bool);
|
void setShowWarnings(bool);
|
||||||
void updateCategoriesMenu();
|
void updateCategoriesMenu();
|
||||||
void filterCategoryTriggered(QAction *action);
|
void filterMenuTriggered(QAction *action);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void cleanContextMenu();
|
void cleanContextMenu();
|
||||||
|
|||||||
@@ -400,7 +400,7 @@ AutoDetectS60QtDevices::AutoDetectS60QtDevices(QObject *parent) :
|
|||||||
// Detect a Qt version that is installed into a Symbian SDK
|
// Detect a Qt version that is installed into a Symbian SDK
|
||||||
static QString detect_SDK_installedQt(const QString &epocRoot)
|
static QString detect_SDK_installedQt(const QString &epocRoot)
|
||||||
{
|
{
|
||||||
const QString coreLibDllFileName = epocRoot + QLatin1String("/epoc32/release/winscw/udeb/QtCore.dll");
|
const QString coreLibDllFileName = epocRoot + QLatin1String("/epoc32/release/armv5/udeb/QtCore.dll");
|
||||||
QFile coreLibDllFile(coreLibDllFileName);
|
QFile coreLibDllFile(coreLibDllFileName);
|
||||||
if (!coreLibDllFile.exists() || !coreLibDllFile.open(QIODevice::ReadOnly))
|
if (!coreLibDllFile.exists() || !coreLibDllFile.open(QIODevice::ReadOnly))
|
||||||
return QString();
|
return QString();
|
||||||
|
|||||||
Reference in New Issue
Block a user