summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-07-15 11:23:49 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-16 10:19:31 +0200
commite31e0e948e8812ad572ed953906912c03ecf914a (patch)
treefa509caa5702d5d26201da82b6214ced819466fb
parent3315b5a35f86f70d9d3ef32fcc07d90406f5b30a (diff)
downloadqbs-e31e0e948e8812ad572ed953906912c03ecf914a.tar.gz
Set engine environment before starting the module loader.
This was wrong all along, resulting in potentially different results of calls to qbs.getenv() during evaluation. Change-Id: I1e4ef50802f1248dfcbd0ac1c036a8fcfaf5e1b6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/lib/language/loader.cpp4
-rw-r--r--src/lib/language/projectresolver.cpp8
-rw-r--r--src/lib/language/projectresolver.h4
3 files changed, 6 insertions, 10 deletions
diff --git a/src/lib/language/loader.cpp b/src/lib/language/loader.cpp
index a4689b925..520db3584 100644
--- a/src/lib/language/loader.cpp
+++ b/src/lib/language/loader.cpp
@@ -87,6 +87,7 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &parameters)
{
QBS_CHECK(QFileInfo(parameters.projectFilePath()).isAbsolute());
+ m_engine->setEnvironment(parameters.environment());
m_engine->clearExceptions();
// At this point, we cannot set a sensible total effort, because we know nothing about
@@ -97,12 +98,13 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &parameters)
m_progressObserver->initialize(Tr::tr("Resolving project for configuration %1")
.arg(TopLevelProject::deriveId(parameters.buildConfigurationTree())), 1);
}
+
ModuleLoaderResult loadResult
= m_moduleLoader->load(parameters.projectFilePath(),
parameters.buildConfigurationTree(),
true);
const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult,
- parameters.buildRoot(), parameters.buildConfigurationTree(), parameters.environment());
+ parameters.buildRoot(), parameters.buildConfigurationTree());
// E.g. if the top-level project is disabled.
if (m_progressObserver)
diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp
index 8cd61b3d1..231dab1c2 100644
--- a/src/lib/language/projectresolver.cpp
+++ b/src/lib/language/projectresolver.cpp
@@ -80,8 +80,7 @@ void ProjectResolver::setProgressObserver(ProgressObserver *observer)
TopLevelProjectPtr ProjectResolver::resolve(ModuleLoaderResult &loadResult,
const QString &buildRoot,
- const QVariantMap &buildConfiguration,
- const QProcessEnvironment &environment)
+ const QVariantMap &buildConfiguration)
{
QBS_ASSERT(FileInfo::isAbsolute(buildRoot), return TopLevelProjectPtr());
if (m_logger.traceEnabled())
@@ -91,7 +90,6 @@ TopLevelProjectPtr ProjectResolver::resolve(ModuleLoaderResult &loadResult,
projectContext.loadResult = &loadResult;
m_buildRoot = buildRoot;
m_buildConfiguration = buildConfiguration;
- m_environment = environment;
m_productContext = 0;
m_moduleContext = 0;
resolveTopLevelProject(loadResult.root, &projectContext);
@@ -164,7 +162,7 @@ void ProjectResolver::resolveTopLevelProject(Item *item, ProjectContext *project
resolveProject(item, projectContext);
project->usedEnvironment = m_engine->usedEnvironment();
project->fileExistsResults = m_engine->fileExistsResults();
- project->environment = m_environment;
+ project->environment = m_engine->environment();
project->buildSystemFiles = m_engine->imports();
makeSubProjectNamesUniqe(project);
resolveProductDependencies(projectContext);
@@ -186,8 +184,6 @@ void ProjectResolver::resolveProject(Item *item, ProjectContext *projectContext)
projectContext->dummyModule = ResolvedModule::create();
projectContext->dummyModule->jsImports = item->file()->jsImports();
- m_evaluator->engine()->setEnvironment(m_environment);
-
QVariantMap projectProperties;
for (QMap<QString, PropertyDeclaration>::const_iterator it
= item->propertyDeclarations().constBegin();
diff --git a/src/lib/language/projectresolver.h b/src/lib/language/projectresolver.h
index 0ec172230..b97633e50 100644
--- a/src/lib/language/projectresolver.h
+++ b/src/lib/language/projectresolver.h
@@ -57,8 +57,7 @@ public:
void setProgressObserver(ProgressObserver *observer);
TopLevelProjectPtr resolve(ModuleLoaderResult &loadResult, const QString &buildRoot,
- const QVariantMap &buildConfiguration,
- const QProcessEnvironment &environment);
+ const QVariantMap &buildConfiguration);
private:
struct ProjectContext
@@ -122,7 +121,6 @@ private:
QVariantMap m_buildConfiguration;
ProductContext *m_productContext;
ModuleContext *m_moduleContext;
- QProcessEnvironment m_environment;
QMap<QString, ResolvedProductPtr> m_productsByName;
QHash<ResolvedProductPtr, Item *> m_productItemMap;
QMap<QString, QVariantMap> m_exports;