summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernd Weimer <bernd.weimer@pelagicore.com>2020-01-28 09:23:17 +0100
committerBernd Weimer <bernd.weimer@pelagicore.com>2020-01-29 14:54:34 +0100
commita8ecf7df3873a21f5598f0e95abe6861805acc3a (patch)
treeb4a09532bdec4d5f6bede46866c80f3a4ca8a5c1
parent7cb1003e87edef973ee2a3f3267169b4daaa4ba6 (diff)
Defer logging output until configuration is known
Logging output is deferred until the logging configuration is known to make sure that the content and format is appropriate. This also replaces special handling of deployment warnings. Added option to force instant logging. Task-number: AUTOSUITE-1423 Change-Id: Ieba5fb4ca675c7b7d025fc1847da8ca045c782d8 Reviewed-by: Robert Griebl <robert.griebl@qt.io>
-rw-r--r--doc/configuration.qdoc6
-rw-r--r--src/common-lib/crashhandler.cpp5
-rw-r--r--src/common-lib/logging.cpp103
-rw-r--r--src/common-lib/logging.h5
-rw-r--r--src/main-lib/configuration.cpp47
-rw-r--r--src/main-lib/configuration.h4
-rw-r--r--src/main-lib/configuration_p.h3
-rw-r--r--src/main-lib/main.cpp12
-rw-r--r--src/main-lib/main.h4
-rw-r--r--src/manager-lib/sudo.cpp11
-rw-r--r--src/manager-lib/sudo.h2
-rw-r--r--src/package-lib/packageutilities.cpp10
-rw-r--r--src/package-lib/packageutilities.h3
-rw-r--r--src/shared-main-lib/sharedmain.cpp1
-rw-r--r--src/tools/appman/appman.cpp10
-rw-r--r--tests/main/tst_main.cpp7
16 files changed, 160 insertions, 73 deletions
diff --git a/doc/configuration.qdoc b/doc/configuration.qdoc
index 05666e21..583ad6ec 100644
--- a/doc/configuration.qdoc
+++ b/doc/configuration.qdoc
@@ -329,6 +329,12 @@ or across multiple config files, the final value is resolved based on these rule
The argument is the path to \c info.yaml. Aliases (\c{info-*.yaml}) are also loaded
from the given path.
\row
+ \li \b --log-instant
+ \li bool
+ \li Causes all logging messages to be printed right away at start-up. Usually, the
+ logging output is deferred until the logging configuration (e.g. logging rules) is
+ known. Expect different output and format at start-up.
+ \row
\li \b --logging-rule
\br [\c logging/rules]
\li array<string>
diff --git a/src/common-lib/crashhandler.cpp b/src/common-lib/crashhandler.cpp
index fd196dff..e1528a9c 100644
--- a/src/common-lib/crashhandler.cpp
+++ b/src/common-lib/crashhandler.cpp
@@ -412,6 +412,11 @@ static void crashHandler(const char *why, int stackFramesToIgnore)
}
}
+ if (Logging::deferredMessages()) {
+ fprintf(stderr, "\n > Accumulated logging output\n");
+ Logging::completeSetup();
+ }
+
if (Logging::isDltEnabled()) {
useAnsiColor = false;
printCrashInfo(Dlt, why, stackFramesToIgnore);
diff --git a/src/common-lib/logging.cpp b/src/common-lib/logging.cpp
index 74d9a7c6..c59b0fc9 100644
--- a/src/common-lib/logging.cpp
+++ b/src/common-lib/logging.cpp
@@ -159,6 +159,20 @@ QDLT_LOGGING_CATEGORY(LogGeneral, "general", "GEN", "Messages without dedicated
QDLT_FALLBACK_CATEGORY(LogGeneral)
+struct DeferredMessage {
+ DeferredMessage(QtMsgType _msgType, const QMessageLogContext &_context, const QString &_message);
+ DeferredMessage(DeferredMessage &&other) Q_DECL_NOEXCEPT;
+ ~DeferredMessage();
+
+ QtMsgType msgType;
+ int line;
+ const char *file;
+ const char *function;
+ const char *category;
+ const QString message;
+};
+
+
bool Logging::s_dltEnabled =
#if defined(QT_GENIVIEXTRAS_LIB)
true;
@@ -172,6 +186,38 @@ QtMessageHandler Logging::s_defaultQtHandler = nullptr;
QByteArray Logging::s_applicationId = QByteArray();
QVariant Logging::s_useAMConsoleLoggerConfig = QVariant();
+static std::vector<DeferredMessage> s_deferredMessages;
+
+DeferredMessage::DeferredMessage(QtMsgType _msgType, const QMessageLogContext &_context, const QString &_message)
+ : msgType(_msgType)
+ , line(_context.line)
+ , message(_message)
+{
+ file = qstrdup(_context.file);
+ function = qstrdup(_context.function);
+ category = qstrdup(_context.category);
+}
+
+DeferredMessage::DeferredMessage(DeferredMessage &&other) Q_DECL_NOEXCEPT
+ : msgType(other.msgType)
+ , line(other.line)
+ , file(other.file)
+ , function(other.function)
+ , category(other.category)
+ , message(other.message)
+{
+ other.file = nullptr;
+ other.function = nullptr;
+ other.category = nullptr;
+}
+
+DeferredMessage::~DeferredMessage()
+{
+ delete[] file;
+ delete[] function;
+ delete[] category;
+}
+
static void colorLogToStderr(QtMsgType msgType, const QMessageLogContext &context, const QString &message)
{
@@ -338,6 +384,23 @@ static void colorLogToStderr(QtMsgType msgType, const QMessageLogContext &contex
fputs(out.constData(), stderr);
}
+void Logging::messageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message)
+{
+#if defined(QT_GENIVIEXTRAS_LIB)
+ if (s_dltEnabled)
+ QDltRegistration::messageHandler(msgType, context, message);
+#endif
+ if (Q_UNLIKELY(!s_useAMConsoleLogger))
+ s_defaultQtHandler(msgType, context, message);
+ else
+ colorLogToStderr(msgType, context, message);
+}
+
+void Logging::deferredMessageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message)
+{
+ s_deferredMessages.emplace_back(msgType, context, message);
+}
+
void Logging::initialize()
{
initialize(0, nullptr);
@@ -345,28 +408,19 @@ void Logging::initialize()
void Logging::initialize(int argc, const char * const *argv)
{
+ bool instantLogging = false;
if (argc > 0 && argv) {
for (int i = 1; i < argc; ++i) {
- if (strcmp("--no-dlt-logging", argv[i]) == 0) {
+ if (strcmp("--no-dlt-logging", argv[i]) == 0)
Logging::setDltEnabled(false);
- break;
- }
+ else if (strcmp("--log-instant", argv[i]) == 0)
+ instantLogging = true;
}
}
- auto messageHandler = [](QtMsgType msgType, const QMessageLogContext &context, const QString &message) {
-#if defined(QT_GENIVIEXTRAS_LIB)
- if (s_dltEnabled)
- QDltRegistration::messageHandler(msgType, context, message);
-#endif
- if (Q_UNLIKELY(!s_useAMConsoleLogger))
- s_defaultQtHandler(msgType, context, message);
- else
- colorLogToStderr(msgType, context, message);
- };
-
s_messagePatternDefined = qEnvironmentVariableIsSet("QT_MESSAGE_PATTERN");
- s_defaultQtHandler = qInstallMessageHandler(messageHandler);
+ s_defaultQtHandler = instantLogging ? qInstallMessageHandler(messageHandler)
+ : qInstallMessageHandler(deferredMessageHandler);
}
QStringList Logging::filterRules()
@@ -408,6 +462,20 @@ void Logging::useAMConsoleLogger(const QVariant &config)
s_useAMConsoleLogger = !s_messagePatternDefined;
}
+void Logging::completeSetup()
+{
+ for (const DeferredMessage &msg : s_deferredMessages) {
+ QLoggingCategory cat(msg.category);
+ if (cat.isEnabled(msg.msgType)) {
+ QMessageLogContext context(msg.file, msg.line, msg.function, msg.category);
+ messageHandler(msg.msgType, context, msg.message);
+ }
+ }
+
+ std::vector<DeferredMessage>().swap(s_deferredMessages);
+ qInstallMessageHandler(messageHandler);
+}
+
QByteArray Logging::applicationId()
{
return s_applicationId;
@@ -418,6 +486,11 @@ void Logging::setApplicationId(const QByteArray &appId)
s_applicationId = appId;
}
+bool Logging::deferredMessages()
+{
+ return !s_deferredMessages.empty();
+}
+
bool Logging::isDltEnabled()
{
return s_dltEnabled;
diff --git a/src/common-lib/logging.h b/src/common-lib/logging.h
index 054d8cdb..643687fd 100644
--- a/src/common-lib/logging.h
+++ b/src/common-lib/logging.h
@@ -66,15 +66,20 @@ class Logging
public:
static void initialize();
static void initialize(int argc, const char * const *argv);
+ static void messageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message);
+ static void deferredMessageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message);
static QStringList filterRules();
static void setFilterRules(const QStringList &rules);
static void setMessagePattern(const QString &pattern);
static QVariant useAMConsoleLogger();
static void useAMConsoleLogger(const QVariant &config);
+ static void completeSetup();
static QByteArray applicationId();
static void setApplicationId(const QByteArray &appId);
+ static bool deferredMessages();
+
// DLT functionality
static bool isDltEnabled();
static void setDltEnabled(bool enabled);
diff --git a/src/main-lib/configuration.cpp b/src/main-lib/configuration.cpp
index 371275cb..18353e4f 100644
--- a/src/main-lib/configuration.cpp
+++ b/src/main-lib/configuration.cpp
@@ -107,7 +107,7 @@ public:
}
void preProcessSourceContent(QByteArray &sourceContent, const QString &fileName)
{
- sourceContent = ConfigurationData::substituteVars(sourceContent, fileName, warnings);
+ sourceContent = ConfigurationData::substituteVars(sourceContent, fileName);
}
ConfigurationData *loadFromCache(QDataStream &ds)
{
@@ -178,6 +178,7 @@ Configuration::Configuration(const QStringList &defaultConfigFilePaths,
m_clp.addOption({ qSL("build-config"), qSL("Dumps the build configuration and exits.") });
m_clp.addPositionalArgument(qSL("qml-file"), qSL("The main QML file."));
+ m_clp.addOption({ qSL("log-instant"), qSL("Log instantly at start-up, neglect configuration") });
m_clp.addOption({ qSL("database"), qSL("Deprecated (ingored)."), qSL("file") });
m_clp.addOption({ qSL("builtin-apps-manifest-dir"), qSL("Base directory for built-in application manifests."), qSL("dir") });
m_clp.addOption({ qSL("installation-dir"), qSL("Base directory for package installations."), qSL("dir") });
@@ -272,12 +273,12 @@ void Configuration::showParserMessage(const QString &message, MessageType type)
// ^^^^ copied from QCommandLineParser ... why is this not public API?
-void Configuration::parse(QStringList *deploymentWarnings)
+void Configuration::parse()
{
- parseWithArguments(QCoreApplication::arguments(), deploymentWarnings);
+ parseWithArguments(QCoreApplication::arguments());
}
-void Configuration::parseWithArguments(const QStringList &arguments, QStringList *deploymentWarnings)
+void Configuration::parseWithArguments(const QStringList &arguments)
{
if (!m_clp.parse(arguments)) {
showParserMessage(m_clp.errorText() + qL1C('\n'), ErrorMessage);
@@ -300,6 +301,7 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList
exit(1);
}
}
+
#if defined(AM_TIME_CONFIG_PARSING)
QElapsedTimer timer;
timer.start();
@@ -319,7 +321,7 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList
ConfigCache<ConfigurationData> cache(configFilePaths, qSL("config"), cacheOptions);
try {
- cache.parse(deploymentWarnings);
+ cache.parse();
m_data = cache.takeMergedResult();
} catch (const Exception &e) {
showParserMessage(e.errorString() + qL1C('\n'), ErrorMessage);
@@ -353,8 +355,10 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList
if (installationDir().isEmpty()) {
const auto ilocs = m_data->installationLocations;
- if (!ilocs.isEmpty() && deploymentWarnings)
- *deploymentWarnings << qL1S("Support for \"installationLocations\" in the main config file has been removed:");
+ if (!ilocs.isEmpty()) {
+ qCWarning(LogDeployment) << "Support for \"installationLocations\" in the main config file "
+ "has been removed:";
+ }
for (const auto iloc : ilocs) {
QVariantMap map = iloc.toMap();
@@ -362,22 +366,22 @@ void Configuration::parseWithArguments(const QStringList &arguments, QStringList
if (id == qSL("internal-0")) {
m_installationDir = map.value(qSL("installationPath")).toString();
m_documentDir = map.value(qSL("documentPath")).toString();
- if (deploymentWarnings)
- *deploymentWarnings << qL1S(" * still using installation location \"internal-0\" for backward compatibility");
- } else if (deploymentWarnings) {
- *deploymentWarnings << qL1S(" * ignoring installation location ") + id;
+ qCWarning(LogDeployment) << " * still using installation location \"internal-0\" for backward "
+ "compatibility";
+ } else {
+ qCWarning(LogDeployment) << " * ignoring installation location" << id;
}
}
}
- if (installationDir().isEmpty() && deploymentWarnings) {
- *deploymentWarnings << qL1S("No --installation-dir command line parameter or"
- " applications/installationDir configuration key specified. It won't be possible to install,"
- " remove or access installable packages.");
+ if (installationDir().isEmpty()) {
+ qCWarning(LogDeployment) << "No --installation-dir command line parameter or applications/installationDir "
+ "configuration key specified. It won't be possible to install, remove or "
+ "access installable packages.";
}
- if (value<bool>("start-session-dbus") && deploymentWarnings)
- *deploymentWarnings << qL1S("Option \"--start-session-dbus\" has been deprecated and will be ignored.");
+ if (value<bool>("start-session-dbus"))
+ qCWarning(LogDeployment) << "Option \"--start-session-dbus\" has been deprecated and will be ignored.";
}
ConfigurationData *ConfigurationData::loadFromCache(QDataStream &ds)
@@ -552,8 +556,7 @@ void ConfigurationData::mergeFrom(const ConfigurationData *from)
MERGE_SCALAR(flags.forceSingleProcess);
}
-QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, const QString &fileName,
- QStringList *deploymentWarnings)
+QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, const QString &fileName)
{
QByteArray string = sourceContent;
int posBeg = -1;
@@ -581,9 +584,9 @@ QByteArray ConfigurationData::substituteVars(const QByteArray &sourceContent, co
varValue = QStandardPaths::writableLocation(static_cast<QStandardPaths::StandardLocation>(loc)).toUtf8();
}
- if (varValue.isNull() && deploymentWarnings) {
- *deploymentWarnings << qL1S("Could not replace variable ${") + qL1S(varName)
- + qL1S("} while parsing ") + fileName;
+ if (varValue.isNull()) {
+ qCWarning(LogDeployment).nospace() << "Could not replace variable ${" << varName << "} while parsing "
+ << fileName;
continue;
}
string.replace(posBeg, varName.length() + 3, varValue);
diff --git a/src/main-lib/configuration.h b/src/main-lib/configuration.h
index 7c950a57..d73b2442 100644
--- a/src/main-lib/configuration.h
+++ b/src/main-lib/configuration.h
@@ -61,8 +61,8 @@ public:
Configuration(const char *additionalDescription = nullptr, bool onlyOnePositionalArgument = true);
virtual ~Configuration();
- void parse(QStringList *deploymentWarnings = nullptr);
- virtual void parseWithArguments(const QStringList &arguments, QStringList *deploymentWarnings = nullptr);
+ void parse();
+ virtual void parseWithArguments(const QStringList &arguments);
QVariant buildConfig() const;
QString mainQmlFile() const;
diff --git a/src/main-lib/configuration_p.h b/src/main-lib/configuration_p.h
index e97f9f2f..0b0f9c4f 100644
--- a/src/main-lib/configuration_p.h
+++ b/src/main-lib/configuration_p.h
@@ -60,8 +60,7 @@ QT_BEGIN_NAMESPACE_AM
struct ConfigurationData
{
static ConfigurationData *loadFromSource(QIODevice *source, const QString &fileName);
- static QByteArray substituteVars(const QByteArray &sourceContent, const QString &fileName,
- QStringList *deploymentWarnings = nullptr);
+ static QByteArray substituteVars(const QByteArray &sourceContent, const QString &fileName);
static ConfigurationData *loadFromCache(QDataStream &ds);
void saveToCache(QDataStream &ds) const;
void mergeFrom(const ConfigurationData *from);
diff --git a/src/main-lib/main.cpp b/src/main-lib/main.cpp
index ffd17dda..df24e516 100644
--- a/src/main-lib/main.cpp
+++ b/src/main-lib/main.cpp
@@ -205,6 +205,12 @@ Main::~Main()
*/
void Main::setup(const Configuration *cfg, const QStringList &deploymentWarnings) Q_DECL_NOEXCEPT_EXPR(false)
{
+ Q_UNUSED(deploymentWarnings);
+ setup(cfg);
+}
+
+void Main::setup(const Configuration *cfg) Q_DECL_NOEXCEPT_EXPR(false)
+{
// basics that are needed in multiple setup functions below
m_noSecurity = cfg->noSecurity();
m_developmentMode = cfg->developmentMode();
@@ -213,15 +219,11 @@ void Main::setup(const Configuration *cfg, const QStringList &deploymentWarnings
m_documentDir = cfg->documentDir();
CrashHandler::setCrashActionConfiguration(cfg->managerCrashAction());
- setupLogging(cfg->verbose(), cfg->loggingRules(), cfg->messagePattern(), cfg->useAMConsoleLogger());
setupQmlDebugging(cfg->qmlDebugging());
if (!cfg->dltId().isEmpty() || !cfg->dltDescription().isEmpty())
Logging::setSystemUiDltId(cfg->dltId().toLocal8Bit(), cfg->dltDescription().toLocal8Bit());
Logging::registerUnregisteredDltContexts();
-
- // dump accumulated warnings, now that logging rules are set
- for (const QString &warning : deploymentWarnings)
- qCWarning(LogDeployment).noquote() << warning;
+ setupLogging(cfg->verbose(), cfg->loggingRules(), cfg->messagePattern(), cfg->useAMConsoleLogger());
registerResources(cfg->resources());
diff --git a/src/main-lib/main.h b/src/main-lib/main.h
index 9e3b5992..09168aee 100644
--- a/src/main-lib/main.h
+++ b/src/main-lib/main.h
@@ -96,7 +96,9 @@ public:
bool isSingleProcessMode() const;
- void setup(const Configuration *cfg, const QStringList &deploymentWarnings = QStringList()) Q_DECL_NOEXCEPT_EXPR(false);
+ Q_DECL_DEPRECATED void setup(const Configuration *cfg, const QStringList &deploymentWarnings)
+ Q_DECL_NOEXCEPT_EXPR(false);
+ void setup(const Configuration *cfg) Q_DECL_NOEXCEPT_EXPR(false);
void loadQml(bool loadDummyData) Q_DECL_NOEXCEPT_EXPR(false);
void showWindow(bool showFullscreen);
diff --git a/src/manager-lib/sudo.cpp b/src/manager-lib/sudo.cpp
index 729c4665..e9e4a50a 100644
--- a/src/manager-lib/sudo.cpp
+++ b/src/manager-lib/sudo.cpp
@@ -117,7 +117,7 @@ QT_END_NAMESPACE_AM
QT_BEGIN_NAMESPACE_AM
-void Sudo::forkServer(DropPrivileges dropPrivileges, QStringList *warnings)
+void Sudo::forkServer(DropPrivileges dropPrivileges)
{
bool canSudo = false;
@@ -126,17 +126,16 @@ void Sudo::forkServer(DropPrivileges dropPrivileges, QStringList *warnings)
uid_t effectiveUid = geteuid();
canSudo = (realUid == 0) || (effectiveUid == 0);
#else
- Q_UNUSED(warnings)
Q_UNUSED(dropPrivileges)
#endif
if (!canSudo) {
SudoServer::createInstance(-1);
SudoClient::createInstance(-1, SudoServer::instance());
- if (warnings) {
- *warnings << qSL("For the installer to work correctly, the executable needs to be run either as root via sudo or SUID (preferred)");
- *warnings << qSL("(using fallback implementation - you might experience permission errors on installer operations)");
- }
+ qCWarning(LogDeployment) << "For the installer to work correctly, the executable needs to be run either as "
+ "root via sudo or SUID (preferred)";
+ qCWarning(LogDeployment) << "(using fallback implementation - you might experience permission errors on "
+ "installer operations)";
return;
}
diff --git a/src/manager-lib/sudo.h b/src/manager-lib/sudo.h
index 33215279..ddb99422 100644
--- a/src/manager-lib/sudo.h
+++ b/src/manager-lib/sudo.h
@@ -67,7 +67,7 @@ public:
DropPrivilegesRegainable, // only use this for auto-tests
};
- static void forkServer(DropPrivileges dropPrivileges, QStringList *warnings = nullptr) Q_DECL_NOEXCEPT_EXPR(false);
+ static void forkServer(DropPrivileges dropPrivileges) Q_DECL_NOEXCEPT_EXPR(false);
};
class SudoInterface
diff --git a/src/package-lib/packageutilities.cpp b/src/package-lib/packageutilities.cpp
index f5e80180..be3db8b5 100644
--- a/src/package-lib/packageutilities.cpp
+++ b/src/package-lib/packageutilities.cpp
@@ -52,13 +52,14 @@
#include "packageutilities.h"
#include "packageutilities_p.h"
#include "global.h"
+#include "logging.h"
#include <clocale>
QT_BEGIN_NAMESPACE_AM
-bool PackageUtilities::ensureCorrectLocale(QStringList *warnings)
+bool PackageUtilities::ensureCorrectLocale()
{
// We need to make sure we are running in a Unicode locale, since we are
// running into problems when unpacking packages with libarchive that
@@ -68,7 +69,6 @@ bool PackageUtilities::ensureCorrectLocale(QStringList *warnings)
#if defined(Q_OS_WIN)
// Windows is UTF16
- Q_UNUSED(warnings)
return true;
#else
@@ -88,10 +88,8 @@ bool PackageUtilities::ensureCorrectLocale(QStringList *warnings)
if (checkUtf())
return true;
- if (warnings) {
- *warnings << qL1S("The current locale is not UTF-8 capable. Trying to find a capable one "
- "now, but this is time consuming and should be avoided");
- }
+ qCWarning(LogDeployment) << "The current locale is not UTF-8 capable. Trying to find a capable one now, "
+ "but this is time consuming and should be avoided";
// LC_ALL trumps all the rest, so if this is not specifying an UTF-8 locale, we need to unset it
QByteArray lc_all = qgetenv("LC_ALL");
diff --git a/src/package-lib/packageutilities.h b/src/package-lib/packageutilities.h
index 2b9c4a8b..97318d04 100644
--- a/src/package-lib/packageutilities.h
+++ b/src/package-lib/packageutilities.h
@@ -43,13 +43,12 @@
#pragma once
#include <QtAppManCommon/global.h>
-#include <QStringList>
QT_BEGIN_NAMESPACE_AM
namespace PackageUtilities
{
-bool ensureCorrectLocale(QStringList *warnings = nullptr);
+bool ensureCorrectLocale();
bool checkCorrectLocale();
}
diff --git a/src/shared-main-lib/sharedmain.cpp b/src/shared-main-lib/sharedmain.cpp
index f34fcdea..7c41206a 100644
--- a/src/shared-main-lib/sharedmain.cpp
+++ b/src/shared-main-lib/sharedmain.cpp
@@ -181,6 +181,7 @@ void SharedMain::setupLogging(bool verbose, const QStringList &loggingRules,
Logging::setFilterRules(rules);
Logging::setMessagePattern(messagePattern);
Logging::useAMConsoleLogger(useAMConsoleLogger);
+ Logging::completeSetup();
StartupTimer::instance()->checkpoint("after logging setup");
}
diff --git a/src/tools/appman/appman.cpp b/src/tools/appman/appman.cpp
index a907ee6d..679e89f6 100644
--- a/src/tools/appman/appman.cpp
+++ b/src/tools/appman/appman.cpp
@@ -81,11 +81,9 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
StartupTimer::instance()->checkpoint("after basic initialization");
try {
- QStringList deploymentWarnings;
-
#if !defined(AM_DISABLE_INSTALLER)
- PackageUtilities::ensureCorrectLocale(&deploymentWarnings);
- Sudo::forkServer(Sudo::DropPrivilegesPermanently, &deploymentWarnings);
+ PackageUtilities::ensureCorrectLocale();
+ Sudo::forkServer(Sudo::DropPrivilegesPermanently);
StartupTimer::instance()->checkpoint("after sudo server fork");
#endif
@@ -102,7 +100,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
#endif
Configuration cfg(additionalDescription, onlyOnePositionalArgument);
- cfg.parse(&deploymentWarnings);
+ cfg.parse();
StartupTimer::instance()->checkpoint("after command line parse");
#if defined(AM_TESTRUNNER)
@@ -112,7 +110,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
cfg.setForceVerbose(qEnvironmentVariableIsSet("VERBOSE_TEST"));
qInfo() << "Verbose mode is" << (cfg.verbose() ? "on" : "off") << "(changed by (un)setting $VERBOSE_TEST)";
#endif
- a.setup(&cfg, deploymentWarnings);
+ a.setup(&cfg);
#if defined(AM_TESTRUNNER)
a.qmlEngine()->rootContext()->setContextProperty("buildConfig", cfg.buildConfig());
#endif
diff --git a/tests/main/tst_main.cpp b/tests/main/tst_main.cpp
index effad02e..c3220022 100644
--- a/tests/main/tst_main.cpp
+++ b/tests/main/tst_main.cpp
@@ -32,7 +32,6 @@
#include <QtTest>
#include <QDir>
#include <QString>
-#include <QStringList>
#include "packagemanager.h"
#include "package.h"
@@ -140,17 +139,15 @@ void tst_Main::initMain()
{
main = new Main(argc, argv);
- QStringList deploymentWarnings;
-
QString amConfigPath = QFINDTESTDATA("am-config.yaml");
auto pathList = QStringList(amConfigPath);
config = new DefaultConfiguration(pathList, QString());
- config->parse(&deploymentWarnings);
+ config->parse();
if (m_verbose)
config->setForceVerbose(true);
- main->setup(config, deploymentWarnings);
+ main->setup(config);
PackageManager::instance()->setAllowInstallationOfUnsignedPackages(true);
}