make sure featureRoots is pre-cached in the root envs

just clearing the cache to signal the need for reconstruction is a pretty
safe way to ensure that every subproject will do the same work.
now projects don't need to inherit the root env's m_qmakefeatures any more,
as they are guaranteed not to need rebuilding the cache.

Change-Id: Ibc0b2d39dabf4a47430975ad30c6b32689de7854
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
Oswald Buddenhagen
2012-08-01 18:04:08 +02:00
parent 5fecb00738
commit 4a9702e921
2 changed files with 5 additions and 7 deletions

View File

@@ -200,7 +200,6 @@ void QMakeEvaluator::initFrom(const QMakeEvaluator &other)
m_qmakespecFull = other.m_qmakespecFull;
m_qmakespecName = other.m_qmakespecName;
m_qmakepath = other.m_qmakepath;
m_qmakefeatures = other.m_qmakefeatures;
m_featureRoots = other.m_featureRoots;
}
@@ -1101,8 +1100,7 @@ bool QMakeEvaluator::loadSpec()
m_qmakespecName = IoUtils::fileName(m_qmakespecFull).toString();
if (!evaluateFeatureFile(QLatin1String("spec_post.prf")))
return false;
// The spec extends the feature search path, so invalidate the cache.
m_featureRoots.clear();
updateFeaturePaths(); // The spec extends the feature search path, so rebuild the cache.
if (!m_conffile.isEmpty()
&& !evaluateFileDirect(m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly)) {
return false;
@@ -1273,7 +1271,7 @@ QStringList QMakeEvaluator::qmakeMkspecPaths() const
return ret;
}
QStringList QMakeEvaluator::qmakeFeaturePaths() const
void QMakeEvaluator::updateFeaturePaths()
{
QString mkspecs_concat = QLatin1String("/mkspecs");
QString features_concat = QLatin1String("/features/");
@@ -1335,7 +1333,7 @@ QStringList QMakeEvaluator::qmakeFeaturePaths() const
foreach (const QString &root, feature_roots)
if (IoUtils::exists(root))
ret << root;
return ret;
m_featureRoots = ret;
}
ProString QMakeEvaluator::propertyValue(const ProString &name) const
@@ -1640,7 +1638,7 @@ bool QMakeEvaluator::evaluateFeatureFile(const QString &fileName, bool silent)
fn += QLatin1String(".prf");
if (m_featureRoots.isEmpty())
m_featureRoots = qmakeFeaturePaths();
updateFeaturePaths();
int start_root = 0;
QString currFn = currentFileName();
if (IoUtils::fileName(currFn) == IoUtils::fileName(fn)) {