aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/app/qbs/commandlinefrontend.cpp5
-rw-r--r--src/lib/corelib/api/internaljobs.cpp3
-rw-r--r--src/lib/corelib/language/tst_language.cpp8
-rw-r--r--src/lib/corelib/tools/settings.cpp3
-rw-r--r--src/lib/corelib/tools/settings.h2
-rw-r--r--src/lib/corelib/tools/setupprojectparameters.cpp40
-rw-r--r--src/lib/corelib/tools/setupprojectparameters.h9
-rw-r--r--src/lib/corelib/tools/tst_tools.cpp2
-rw-r--r--tests/auto/api/tst_api.cpp1
9 files changed, 48 insertions, 25 deletions
diff --git a/src/app/qbs/commandlinefrontend.cpp b/src/app/qbs/commandlinefrontend.cpp
index 4bbde7961..e24ad8677 100644
--- a/src/app/qbs/commandlinefrontend.cpp
+++ b/src/app/qbs/commandlinefrontend.cpp
@@ -125,6 +125,7 @@ void CommandLineFrontend::start()
params.setIgnoreDifferentProjectFilePath(m_parser.force());
params.setDryRun(m_parser.dryRun());
params.setLogElapsedTime(m_parser.logTime());
+ params.setSettingsDirectory(m_settings->baseDirectoy());
if (!m_parser.buildBeforeInstalling())
params.setRestoreBehavior(SetupProjectParameters::RestoreOnly);
foreach (const QVariantMap &buildConfig, m_parser.buildConfigurations()) {
@@ -145,10 +146,6 @@ void CommandLineFrontend::start()
params.setBuildVariant(buildVariant);
params.setBuildRoot(buildDirectory(profileName));
params.setOverriddenValues(userConfig);
- const ErrorInfo err = params.expandBuildConfiguration(m_settings);
- if (err.hasError())
- throw err;
-
SetupProjectJob * const job = Project::setupProject(params,
ConsoleLogger::instance().logSink(), this);
connectJob(job);
diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp
index 2899bbc6c..cf56f1b8a 100644
--- a/src/lib/corelib/api/internaljobs.cpp
+++ b/src/lib/corelib/api/internaljobs.cpp
@@ -229,6 +229,9 @@ TopLevelProjectPtr InternalSetupProjectJob::project() const
void InternalSetupProjectJob::start()
{
try {
+ const ErrorInfo err = m_parameters.expandBuildConfiguration();
+ if (err.hasError())
+ throw err;
execute();
} catch (const ErrorInfo &error) {
m_project.clear();
diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp
index 56876bb32..422d77a2f 100644
--- a/src/lib/corelib/language/tst_language.cpp
+++ b/src/lib/corelib/language/tst_language.cpp
@@ -143,8 +143,7 @@ void TestLanguage::initTestCase()
<< QLatin1String(SRCDIR "/../../../share/qbs"));
defaultParameters.setTopLevelProfile("qbs_autotests");
defaultParameters.setBuildVariant("debug");
- Settings settings((QString()));
- defaultParameters.expandBuildConfiguration(&settings);
+ defaultParameters.expandBuildConfiguration();
QVERIFY(QFileInfo(m_wildcardsTestDirPath).isAbsolute());
}
@@ -821,8 +820,7 @@ void TestLanguage::jsImportUsedInMultipleScopes()
SetupProjectParameters params = defaultParameters;
params.setProjectFilePath(testProject("jsimportsinmultiplescopes.qbs"));
params.setBuildVariant(buildVariant);
- Settings settings((QString()));
- params.expandBuildConfiguration(&settings);
+ params.expandBuildConfiguration();
TopLevelProjectPtr project = loader->loadProject(params);
QVERIFY(project);
QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
@@ -1042,7 +1040,7 @@ void TestLanguage::profileValuesAndOverriddenValues()
overriddenValues.insert("dummy.cFlags", "OVERRIDDEN");
parameters.setOverriddenValues(overriddenValues);
parameters.setProjectFilePath(testProject("profilevaluesandoverriddenvalues.qbs"));
- parameters.expandBuildConfiguration(&settings);
+ parameters.expandBuildConfiguration();
project = loader->loadProject(parameters);
QVERIFY(project);
QHash<QString, ResolvedProductPtr> products = productsFromProject(project);
diff --git a/src/lib/corelib/tools/settings.cpp b/src/lib/corelib/tools/settings.cpp
index 617fa2137..8fc86d465 100644
--- a/src/lib/corelib/tools/settings.cpp
+++ b/src/lib/corelib/tools/settings.cpp
@@ -53,7 +53,8 @@ static QSettings *createQSettings(const QString &baseDir)
: new QSettings(baseDir + QLatin1String("/qbs.conf"), format());
}
-Settings::Settings(const QString &baseDir) : m_settings(createQSettings(baseDir))
+Settings::Settings(const QString &baseDir)
+ : m_settings(createQSettings(baseDir)), m_baseDir(baseDir)
{
// Actual qbs settings are stored transparently within a group, because QSettings
// can see non-qbs fallback settings e.g. from QtProject that we're not interested in.
diff --git a/src/lib/corelib/tools/settings.h b/src/lib/corelib/tools/settings.h
index 9741c2bf0..622ed5b5f 100644
--- a/src/lib/corelib/tools/settings.h
+++ b/src/lib/corelib/tools/settings.h
@@ -59,6 +59,7 @@ public:
QStringList profiles() const;
QString fileName() const;
+ QString baseDirectoy() const { return m_baseDir; }
private:
QString internalRepresentation(const QString &externalKey) const;
@@ -67,6 +68,7 @@ private:
void checkStatus();
QSettings * const m_settings;
+ const QString m_baseDir;
};
} // namespace qbs
diff --git a/src/lib/corelib/tools/setupprojectparameters.cpp b/src/lib/corelib/tools/setupprojectparameters.cpp
index 71c62504c..8a31c92e9 100644
--- a/src/lib/corelib/tools/setupprojectparameters.cpp
+++ b/src/lib/corelib/tools/setupprojectparameters.cpp
@@ -60,6 +60,7 @@ public:
QString buildRoot;
QStringList searchPaths;
QStringList pluginPaths;
+ QString settingsBaseDir;
QVariantMap overriddenValues;
QVariantMap buildConfiguration;
mutable QVariantMap buildConfigurationTree;
@@ -204,6 +205,24 @@ void SetupProjectParameters::setPluginPaths(const QStringList &pluginPaths)
}
/*!
+ * \brief The base directory for qbs settings.
+ * This value is used to locate profiles and preferences.
+ */
+QString SetupProjectParameters::settingsDirectory() const
+{
+ return d->settingsBaseDir;
+}
+
+/*!
+ * \brief Sets the base directory for qbs settings.
+ * \param settingsBaseDir Will be used to locate profiles and preferences.
+ */
+void SetupProjectParameters::setSettingsDirectory(const QString &settingsBaseDir)
+{
+ d->settingsBaseDir = settingsBaseDir;
+}
+
+/*!
* Returns the overridden values of the build configuration.
*/
QVariantMap SetupProjectParameters::overriddenValues() const
@@ -269,15 +288,16 @@ QVariantMap SetupProjectParameters::buildConfigurationTree() const
}
-static QVariantMap expandedBuildConfigurationInternal(Settings *settings,
+static QVariantMap expandedBuildConfigurationInternal(const QString &settingsBaseDir,
const QString &profileName, const QString &buildVariant)
{
+ Settings settings(settingsBaseDir);
QVariantMap buildConfig;
// (1) Values from profile, if given.
if (!profileName.isEmpty()) {
ErrorInfo err;
- const Profile profile(profileName, settings);
+ const Profile profile(profileName, &settings);
const QStringList profileKeys = profile.allKeys(Profile::KeySelectionRecursive, &err);
if (err.hasError())
throw err;
@@ -302,11 +322,11 @@ static QVariantMap expandedBuildConfigurationInternal(Settings *settings,
return buildConfig;
}
-QVariantMap SetupProjectParameters::expandedBuildConfiguration(Settings *settings,
+QVariantMap SetupProjectParameters::expandedBuildConfiguration(const QString &settingsBaseDir,
const QString &profileName, const QString &buildVariant, ErrorInfo *errorInfo)
{
try {
- return expandedBuildConfigurationInternal(settings, profileName, buildVariant);
+ return expandedBuildConfigurationInternal(settingsBaseDir, profileName, buildVariant);
} catch (const ErrorInfo &err) {
if (errorInfo)
*errorInfo = err;
@@ -316,20 +336,20 @@ QVariantMap SetupProjectParameters::expandedBuildConfiguration(Settings *setting
/*!
- * \brief Expands the build configuration based on the given settings.
+ * \brief Expands the build configuration.
*
- * Expansion is the process by which the build configuration is completed based on the given
- * settings. E.g. the information configured in a profile is filled into the build
+ * Expansion is the process by which the build configuration is completed based on the settings
+ * in \c settingsDirectory(). E.g. the information configured in a profile is filled into the build
* configuration by this step.
*
* This method returns an Error. The list of entries in this error will be empty is the
* expansion was successful.
*/
-ErrorInfo SetupProjectParameters::expandBuildConfiguration(Settings *settings)
+ErrorInfo SetupProjectParameters::expandBuildConfiguration()
{
ErrorInfo err;
- QVariantMap expandedConfig
- = expandedBuildConfiguration(settings, topLevelProfile(), buildVariant(), &err);
+ QVariantMap expandedConfig = expandedBuildConfiguration(d->settingsBaseDir, topLevelProfile(),
+ buildVariant(), &err);
if (err.hasError())
return err;
if (d->buildConfiguration != expandedConfig) {
diff --git a/src/lib/corelib/tools/setupprojectparameters.h b/src/lib/corelib/tools/setupprojectparameters.h
index 01da55664..ced16ab72 100644
--- a/src/lib/corelib/tools/setupprojectparameters.h
+++ b/src/lib/corelib/tools/setupprojectparameters.h
@@ -72,13 +72,16 @@ public:
QStringList pluginPaths() const;
void setPluginPaths(const QStringList &pluginPaths);
+ QString settingsDirectory() const;
+ void setSettingsDirectory(const QString &settingsBaseDir);
+
QVariantMap overriddenValues() const;
void setOverriddenValues(const QVariantMap &values);
QVariantMap overriddenValuesTree() const;
- static QVariantMap expandedBuildConfiguration(Settings *settings, const QString &profileName,
- const QString &buildVariant, ErrorInfo *errorInfo = 0);
- ErrorInfo expandBuildConfiguration(Settings *settings);
+ static QVariantMap expandedBuildConfiguration(const QString &settingsBaseDir,
+ const QString &profileName, const QString &buildVariant, ErrorInfo *errorInfo = 0);
+ ErrorInfo expandBuildConfiguration();
QVariantMap buildConfiguration() const;
QVariantMap buildConfigurationTree() const;
diff --git a/src/lib/corelib/tools/tst_tools.cpp b/src/lib/corelib/tools/tst_tools.cpp
index e29997c82..c8b1f6cce 100644
--- a/src/lib/corelib/tools/tst_tools.cpp
+++ b/src/lib/corelib/tools/tst_tools.cpp
@@ -140,7 +140,7 @@ void TestTools::testBuildConfigMerging()
params.setTopLevelProfile(profile.name());
params.setBuildVariant(QLatin1String("debug"));
params.setOverriddenValues(overrideMap);
- const ErrorInfo error = params.expandBuildConfiguration(&settings);
+ const ErrorInfo error = params.expandBuildConfiguration();
QVERIFY2(!error.hasError(), qPrintable(error.toString()));
const QVariantMap finalMap = params.finalBuildConfigurationTree();
QCOMPARE(finalMap.count(), 3);
diff --git a/tests/auto/api/tst_api.cpp b/tests/auto/api/tst_api.cpp
index b68097299..1490a9faf 100644
--- a/tests/auto/api/tst_api.cpp
+++ b/tests/auto/api/tst_api.cpp
@@ -604,7 +604,6 @@ qbs::SetupProjectParameters TestApi::defaultSetupParameters() const
setupParams.setPluginPaths(prefs.pluginPaths(qbsRootPath + QLatin1String("/lib")));
setupParams.setTopLevelProfile(profileName);
setupParams.setBuildVariant(QLatin1String("debug"));
- setupParams.expandBuildConfiguration(settings.data());
return setupParams;
}