aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-07-28 15:48:01 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-01 12:18:58 +0000
commit0dbf625e3629381f0db91662e0504f3c65de46ec (patch)
treeeecd0db945d7bdea38eb560e0b9e9f5640fe94e4
parent8aec6298eef2bf0267483ecb7e481ab378a587a0 (diff)
shiboken6: Avoid losing warnings with ninja
ninja mixes stdout and stderr, causing stderr messages to be lost in shiboken progress messages on stdout. Change the progress messages to be output at the end of the step with a time stamp in past tense. [ChangeLog][shiboken6] The progress messages have been changed to avoid losing warnings with ninja Change-Id: Ia33bd5a3af55d268f25d324f3ae496aebef8f7bb Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> (cherry picked from commit d71fc2abf7266be14a32728c0c7de9d3e24a39a0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp28
-rw-r--r--sources/shiboken6/ApiExtractor/reporthandler.cpp23
-rw-r--r--sources/shiboken6/generator/main.cpp2
3 files changed, 35 insertions, 18 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
index 87b3436a1..d02741d06 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
@@ -486,8 +486,8 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
// Start the generation...
const ClassList &typeValues = dom->classes();
- ReportHandler::startProgress("Generating class model ("
- + QByteArray::number(typeValues.size()) + ")...");
+ ReportHandler::startProgress("Generated class model ("
+ + QByteArray::number(typeValues.size()) + ").");
for (const ClassModelItem &item : typeValues) {
if (const auto cls = traverseClass(dom, item, nullptr))
addAbstractMetaClass(cls, item.get());
@@ -496,8 +496,8 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
// We need to know all global enums
const EnumList &enums = dom->enums();
- ReportHandler::startProgress("Generating enum model ("
- + QByteArray::number(enums.size()) + ")...");
+ ReportHandler::startProgress("Generated enum model ("
+ + QByteArray::number(enums.size()) + ").");
for (const EnumModelItem &item : enums) {
auto metaEnum = traverseEnum(item, nullptr, QSet<QString>());
if (metaEnum.has_value()) {
@@ -507,16 +507,16 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
}
const auto &namespaceTypeValues = dom->namespaces();
- ReportHandler::startProgress("Generating namespace model ("
- + QByteArray::number(namespaceTypeValues.size()) + ")...");
+ ReportHandler::startProgress("Generated namespace model ("
+ + QByteArray::number(namespaceTypeValues.size()) + ").");
for (const NamespaceModelItem &item : namespaceTypeValues)
traverseNamespace(dom, item);
// Go through all typedefs to see if we have defined any
// specific typedefs to be used as classes.
const TypeDefList typeDefs = dom->typeDefs();
- ReportHandler::startProgress("Resolving typedefs ("
- + QByteArray::number(typeDefs.size()) + ")...");
+ ReportHandler::startProgress("Resolved typedefs ("
+ + QByteArray::number(typeDefs.size()) + ").");
for (const TypeDefModelItem &typeDef : typeDefs) {
if (const auto cls = traverseTypeDef(dom, typeDef, nullptr))
addAbstractMetaClass(cls, typeDef.get());
@@ -557,7 +557,7 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
m_globalFunctions << metaFuncPtr;
}
- ReportHandler::startProgress("Fixing class inheritance...");
+ ReportHandler::startProgress("Fixed class inheritance.");
for (const auto &cls : std::as_const(m_metaClasses)) {
if (cls->needsInheritanceSetup()) {
setupInheritance(cls);
@@ -570,7 +570,7 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
}
}
- ReportHandler::startProgress("Detecting inconsistencies in class model...");
+ ReportHandler::startProgress("Checked for inconsistencies in class model.");
for (const auto &cls : std::as_const(m_metaClasses)) {
AbstractMetaClass::fixFunctions(cls);
@@ -588,8 +588,8 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
const auto &allEntries = types->entries();
- ReportHandler::startProgress("Detecting inconsistencies in typesystem ("
- + QByteArray::number(allEntries.size()) + ")...");
+ ReportHandler::startProgress("Checked for inconsistencies in typesystem ("
+ + QByteArray::number(allEntries.size()) + ").");
for (auto it = allEntries.cbegin(), end = allEntries.cend(); it != end; ++it) {
TypeEntryPtr entry = it.value();
if (!entry->isPrimitive()) {
@@ -661,11 +661,11 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
}
}
- ReportHandler::startProgress("Checking inconsistencies in function modifications...");
+ ReportHandler::startProgress("Checked for inconsistencies in function modifications.");
checkFunctionModifications();
- ReportHandler::startProgress("Writing log files...");
+ ReportHandler::startProgress("Wrote log files.");
for (const auto &cls : std::as_const(m_metaClasses)) {
// setupEquals(cls);
diff --git a/sources/shiboken6/ApiExtractor/reporthandler.cpp b/sources/shiboken6/ApiExtractor/reporthandler.cpp
index 2fc7b47b7..23066ba21 100644
--- a/sources/shiboken6/ApiExtractor/reporthandler.cpp
+++ b/sources/shiboken6/ApiExtractor/reporthandler.cpp
@@ -33,6 +33,7 @@ static ReportHandler::DebugLevel m_debugLevel = ReportHandler::NoDebug;
static QSet<QString> m_reportedWarnings;
static QString m_prefix;
static bool m_withinProgress = false;
+static QByteArray m_progressMessage;
static int m_step_warning = 0;
static QElapsedTimer m_timer;
@@ -147,9 +148,13 @@ void ReportHandler::startProgress(const QByteArray& str)
endProgress();
m_withinProgress = true;
- const auto ts = '[' + timeStamp() + ']';
- std::printf("%s %8s %-60s", qPrintable(m_prefix), ts.constData(), str.constData());
- std::fflush(stdout);
+ m_progressMessage = str;
+}
+
+static void indentStdout(qsizetype n)
+{
+ for (qsizetype i = 0; i < n; ++i)
+ fputc(' ', stdout);
}
void ReportHandler::endProgress()
@@ -158,11 +163,23 @@ void ReportHandler::endProgress()
return;
m_withinProgress = false;
+
+ std::fputs(m_prefix.toUtf8().constData(), stdout);
+ const auto ts = timeStamp();
+ if (ts.size() < 6)
+ indentStdout(6 - ts.size());
+ std::fputs(" [", stdout);
+ std::fputs(ts.constData(), stdout);
+ std::fputs("] ", stdout);
+ std::fputs(m_progressMessage.constData(), stdout);
+ if (m_progressMessage.size() < 60)
+ indentStdout(60 - m_progressMessage.size());
const char *endMessage = m_step_warning == 0
? "[" COLOR_GREEN "OK" COLOR_END "]\n"
: "[" COLOR_YELLOW "WARNING" COLOR_END "]\n";
std::fputs(endMessage, stdout);
std::fflush(stdout);
+ m_progressMessage.clear();
m_step_warning = 0;
}
diff --git a/sources/shiboken6/generator/main.cpp b/sources/shiboken6/generator/main.cpp
index 9bc9d0be3..ce55eaaf9 100644
--- a/sources/shiboken6/generator/main.cpp
+++ b/sources/shiboken6/generator/main.cpp
@@ -742,7 +742,7 @@ int shibokenMain(const QStringList &argV)
for (const GeneratorPtr &g : std::as_const(generators)) {
g->setOutputDirectory(outputDirectory);
g->setLicenseComment(licenseComment);
- ReportHandler::startProgress(QByteArray("Running ") + g->name() + "...");
+ ReportHandler::startProgress("Ran "_ba + g->name() + '.');
const bool ok = g->setup(apiOpt.value()) && g->generate();
ReportHandler::endProgress();
if (!ok) {