diff -Nru qbs-1.3.0+201501291118/debian/bzr-builder.manifest qbs-1.3.0+201501301103/debian/bzr-builder.manifest --- qbs-1.3.0+201501291118/debian/bzr-builder.manifest 2015-01-29 11:18:24.000000000 +0000 +++ qbs-1.3.0+201501301103/debian/bzr-builder.manifest 2015-01-30 11:03:53.000000000 +0000 @@ -1,3 +1,3 @@ -# bzr-builder format 0.3 deb-version {debupstream}+201501291118-18 -lp:qbs revid:git-v1:42bcede68445257316e769b5ade67b6d92a1995a +# bzr-builder format 0.3 deb-version {debupstream}+201501301103-18 +lp:qbs revid:git-v1:3fedcb4331205a4af3309361f4e1cb8137e5b1a5 nest packaging lp:~torkvemada/qbs/debian debian revid:torkvema@gmail.com-20140530193608-d819pb1es51bp8n3 diff -Nru qbs-1.3.0+201501291118/debian/changelog qbs-1.3.0+201501301103/debian/changelog --- qbs-1.3.0+201501291118/debian/changelog 2015-01-29 11:18:24.000000000 +0000 +++ qbs-1.3.0+201501301103/debian/changelog 2015-01-30 11:03:53.000000000 +0000 @@ -1,8 +1,8 @@ -qbs (1.3.0+201501291118-18~ubuntu12.04.1) precise; urgency=low +qbs (1.3.0+201501301103-18~ubuntu12.04.1) precise; urgency=low * Auto build. - -- Vsevolod Velichko Thu, 29 Jan 2015 11:18:24 +0000 + -- Vsevolod Velichko Fri, 30 Jan 2015 11:03:53 +0000 qbs (1.3.0) unstable; urgency=low diff -Nru qbs-1.3.0+201501291118/doc/reference/items/autotestrunner.qdoc qbs-1.3.0+201501301103/doc/reference/items/autotestrunner.qdoc --- qbs-1.3.0+201501291118/doc/reference/items/autotestrunner.qdoc 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/doc/reference/items/autotestrunner.qdoc 2015-01-30 11:03:44.000000000 +0000 @@ -77,6 +77,19 @@ \li Default \li Description \row + \li arguments + \li stringList + \li empty + \li The list of arguments to invoke the autotest with. + \row + \li environment + \li stringList + \li set internally + \li A list of environment variables that are added to the run environment. + They are provided as a list of strings in the form "varName=value". + By default, DYLD_LIBRARY_PATH, DYLD_FRAMEWORK_PATH, and DYLD_ROOT_PATH + are set on OS X and iOS, or an empty list for other platforms. + \row \li limitToSubProject \li bool \li \c true diff -Nru qbs-1.3.0+201501291118/share/qbs/imports/qbs/base/AutotestRunner.qbs qbs-1.3.0+201501301103/share/qbs/imports/qbs/base/AutotestRunner.qbs --- qbs-1.3.0+201501291118/share/qbs/imports/qbs/base/AutotestRunner.qbs 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/imports/qbs/base/AutotestRunner.qbs 2015-01-30 11:03:44.000000000 +0000 @@ -1,10 +1,14 @@ import qbs -import qbs.DarwinTools +import qbs.ModUtils Product { name: "autotest-runner" type: ["autotest-result"] builtByDefault: false + property stringList arguments: [] + property stringList environment: ModUtils.flattenEnvironmentDictionary( + qbs.commonRunEnvironment, + qbs.pathListSeparator) property bool limitToSubProject: true Depends { productTypes: "autotest" @@ -18,16 +22,9 @@ alwaysUpdated: false } prepare: { - var cmd = new Command(input.filePath); + var cmd = new Command(input.filePath, product.arguments); cmd.description = "Running test " + input.fileName; - if (product.moduleProperty("qbs", "hostOS").contains("darwin") && - product.moduleProperty("qbs", "targetOS").contains("darwin")) { - cmd.environment = []; - var env = DarwinTools.standardDyldEnvironment(product); - for (var i in env) { - cmd.environment.push(i + "=" + env[i]); - } - } + cmd.environment = product.environment; return cmd; } } diff -Nru qbs-1.3.0+201501291118/share/qbs/imports/qbs/DarwinTools/darwin-tools.js qbs-1.3.0+201501301103/share/qbs/imports/qbs/DarwinTools/darwin-tools.js --- qbs-1.3.0+201501291118/share/qbs/imports/qbs/DarwinTools/darwin-tools.js 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/imports/qbs/DarwinTools/darwin-tools.js 2015-01-30 11:03:44.000000000 +0000 @@ -1,31 +1,5 @@ var FileInfo = loadExtension("qbs.FileInfo"); -function standardDyldEnvironment(config) { - var installRoot = config.moduleProperty("qbs", "installRoot"); - var installPrefix = config.moduleProperty("qbs", "installPrefix"); - var pathListSeparator = config.moduleProperty("qbs", "pathListSeparator"); - var sysroot = config.moduleProperty("qbs", "sysroot"); - - var env = { - "DYLD_FRAMEWORK_PATH": [ - FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"), - FileInfo.joinPaths(installRoot, installPrefix, "lib"), - FileInfo.joinPaths(installRoot, installPrefix) - ].join(pathListSeparator), - "DYLD_LIBRARY_PATH": [ - FileInfo.joinPaths(installRoot, installPrefix, "lib"), - FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"), - FileInfo.joinPaths(installRoot, installPrefix) - ].join(pathListSeparator) - }; - - if (sysroot) { - env["DYLD_ROOT_PATH"] = [sysroot]; - } - - return env; -} - /** * Returns the most appropriate Apple platform name given a targetOS list. * Possible platform names include macosx, iphoneos, and iphonesimulator. diff -Nru qbs-1.3.0+201501291118/share/qbs/imports/qbs/ModUtils/utils.js qbs-1.3.0+201501301103/share/qbs/imports/qbs/ModUtils/utils.js --- qbs-1.3.0+201501291118/share/qbs/imports/qbs/ModUtils/utils.js 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/imports/qbs/ModUtils/utils.js 2015-01-30 11:03:44.000000000 +0000 @@ -138,6 +138,22 @@ return result; } +/** + * Flattens an environment dictionary (string keys to arrays or strings) + * into a string list containing items like \c key=value1:value2:value3 + */ +function flattenEnvironmentDictionary(dict, pathListSeparator) { + var list = []; + for (var i in dict) { + var value = dict[i]; + if (typeof value === Array) { + value = value.join(pathListSeparator); + } + list.push(i + "=" + value); + } + return list; +} + var EnvironmentVariable = (function () { function EnvironmentVariable(name, separator, convertPathSeparators) { if (!name) diff -Nru qbs-1.3.0+201501291118/share/qbs/modules/cpp/DarwinGCC.qbs qbs-1.3.0+201501301103/share/qbs/modules/cpp/DarwinGCC.qbs --- qbs-1.3.0+201501291118/share/qbs/modules/cpp/DarwinGCC.qbs 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/modules/cpp/DarwinGCC.qbs 2015-01-30 11:03:44.000000000 +0000 @@ -36,24 +36,14 @@ } setupRunEnvironment: { + var env = qbs.commonRunEnvironment; + env["DYLD_ROOT_PATH"] = sysroot; var env; - env = new ModUtils.EnvironmentVariable("DYLD_FRAMEWORK_PATH", qbs.pathListSeparator); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, "Library", "Frameworks")); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, "lib")); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix)); - env.set(); - - env = new ModUtils.EnvironmentVariable("DYLD_LIBRARY_PATH", qbs.pathListSeparator); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, "lib")); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix, "Library", "Frameworks")); - env.append(FileInfo.joinPaths(qbs.installRoot, qbs.installPrefix)); - env.set(); - - if (qbs.sysroot) { - env = new ModUtils.EnvironmentVariable("DYLD_ROOT_PATH", qbs.pathListSeparator); - env.append(qbs.sysroot); - env.set(); + for (var i in env) { + var v = new ModUtils.EnvironmentVariable(i, qbs.pathListSeparator); + v.value = env[i]; + v.set(); } } diff -Nru qbs-1.3.0+201501291118/share/qbs/modules/cpp/gcc.js qbs-1.3.0+201501301103/share/qbs/modules/cpp/gcc.js --- qbs-1.3.0+201501291118/share/qbs/modules/cpp/gcc.js 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/modules/cpp/gcc.js 2015-01-30 11:03:44.000000000 +0000 @@ -228,7 +228,7 @@ } var requireAppExtensionSafeApi = ModUtils.moduleProperty(product, "requireAppExtensionSafeApi"); - if (requireAppExtensionSafeApi !== undefined) { + if (requireAppExtensionSafeApi !== undefined && product.moduleProperty("qbs", "targetOS").contains("darwin")) { args.push(requireAppExtensionSafeApi ? "-fapplication-extension" : "-fno-application-extension"); } diff -Nru qbs-1.3.0+201501291118/share/qbs/modules/qbs/common.qbs qbs-1.3.0+201501301103/share/qbs/modules/qbs/common.qbs --- qbs-1.3.0+201501291118/share/qbs/modules/qbs/common.qbs 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/share/qbs/modules/qbs/common.qbs 2015-01-30 11:03:44.000000000 +0000 @@ -101,4 +101,28 @@ validator.validate(); } + + // private properties + property var commonRunEnvironment: { + var env = {}; + if (hostOS.contains("darwin") && targetOS.contains("darwin")) { + env["DYLD_FRAMEWORK_PATH"] = [ + FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"), + FileInfo.joinPaths(installRoot, installPrefix, "lib"), + FileInfo.joinPaths(installRoot, installPrefix) + ].join(pathListSeparator); + + env["DYLD_LIBRARY_PATH"] = [ + FileInfo.joinPaths(installRoot, installPrefix, "lib"), + FileInfo.joinPaths(installRoot, installPrefix, "Library", "Frameworks"), + FileInfo.joinPaths(installRoot, installPrefix) + ].join(pathListSeparator); + + if (sysroot) { + env["DYLD_ROOT_PATH"] = [sysroot]; + } + } + + return env; + } } diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/buildgraph/rulesapplicator.cpp qbs-1.3.0+201501301103/src/lib/corelib/buildgraph/rulesapplicator.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/buildgraph/rulesapplicator.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/buildgraph/rulesapplicator.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -49,6 +49,7 @@ #include #include +#include #include namespace qbs { @@ -427,21 +428,49 @@ return; outputArtifact->properties = outputArtifact->properties->clone(); - QVariantMap artifactModulesCfg = outputArtifact->properties->value() - .value(QLatin1String("modules")).toMap(); + QVariantMap artifactCfg = outputArtifact->properties->value(); foreach (const NameValuePair &nvp, m_propertyValues) { - const QStringList &nameParts = nvp.first; - const QVariant &value = nvp.second; - if (!artifactModulesCfg.contains(nameParts.first())) { + const QStringList valuePath = findValuePath(artifactCfg, nvp.first); + if (valuePath.isEmpty()) { throw ErrorInfo(Tr::tr("Cannot set module property %1 on artifact %2.") - .arg(nameParts.join(QLatin1String(".")), + .arg(nvp.first.join(QLatin1String(".")), outputArtifact->filePath())); } - setConfigProperty(artifactModulesCfg, nameParts, value); + setConfigProperty(artifactCfg, valuePath, nvp.second); } - QVariantMap outputArtifactConfig = outputArtifact->properties->value(); - outputArtifactConfig.insert(QLatin1String("modules"), artifactModulesCfg); - outputArtifact->properties->setValue(outputArtifactConfig); + outputArtifact->properties->setValue(artifactCfg); + } + + QStringList findValuePath(const QVariantMap &cfg, const QStringList &nameParts) + { + QStringList tmp = nameParts; + const QString propertyName = tmp.takeLast(); + const QString moduleName = tmp.join(QLatin1Char('.')); + const QStringList modulePath = findModulePath(cfg, moduleName); + if (modulePath.isEmpty()) + return modulePath; + return QStringList(modulePath) << propertyName; + } + + QStringList findModulePath(const QVariantMap &cfg, const QString &moduleName) + { + typedef QPair MapAndPath; + QQueue q; + q.enqueue(MapAndPath(cfg.value(QLatin1String("modules")).toMap(), + QStringList(QLatin1String("modules")))); + do { + const MapAndPath current = q.takeFirst(); + const QVariantMap &mod = current.first; + for (QVariantMap::const_iterator it = mod.constBegin(); it != mod.constEnd(); ++it) { + const QVariantMap m = it.value().toMap(); + const QStringList currentPath = QStringList(current.second) << it.key(); + if (it.key() == moduleName) + return currentPath; + q.enqueue(MapAndPath(m.value(QLatin1String("modules")).toMap(), + QStringList(currentPath) << QLatin1String("modules"))); + } + } while (!q.isEmpty()); + return QStringList(); } }; diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/language.cpp qbs-1.3.0+201501301103/src/lib/corelib/language/language.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/language/language.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/language.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -559,6 +559,29 @@ BuildEnv, RunEnv }; +static bool findModuleMapRecursively_impl(const QVariantMap &cfg, const QString &moduleName, + QVariantMap *result) +{ + for (QVariantMap::const_iterator it = cfg.constBegin(); it != cfg.constEnd(); ++it) { + if (it.key() == moduleName) { + *result = it.value().toMap(); + return true; + } + if (findModuleMapRecursively_impl(it.value().toMap().value("modules").toMap(), moduleName, + result)) { + return true; + } + } + return false; +} + +static QVariantMap findModuleMapRecursively(const QVariantMap &cfg, const QString &moduleName) +{ + QVariantMap result; + findModuleMapRecursively_impl(cfg, moduleName, &result); + return result; +} + static QProcessEnvironment getProcessEnvironment(ScriptEngine *engine, EnvType envType, const QList &modules, const PropertyMapConstPtr &productConfiguration, @@ -640,7 +663,7 @@ } // expose the module's properties - QVariantMap moduleCfg = productModules.value(module->name).toMap(); + QVariantMap moduleCfg = findModuleMapRecursively(productModules, module->name); for (QVariantMap::const_iterator it = moduleCfg.constBegin(); it != moduleCfg.constEnd(); ++it) scope.setProperty(it.key(), engine->toScriptValue(it.value())); @@ -652,7 +675,7 @@ QString envTypeStr = (envType == BuildEnv ? QLatin1String("build") : QLatin1String("run")); throw ErrorInfo(Tr::tr("Error while setting up %1 environment: %2") - .arg(envTypeStr, scriptValue.toString())); + .arg(envTypeStr, scriptValue.toString()), setupScript->location); } } diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/moduleloader.cpp qbs-1.3.0+201501301103/src/lib/corelib/language/moduleloader.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/language/moduleloader.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/moduleloader.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -458,7 +458,6 @@ setScopeForDescendants(item, productContext.scope); resolveDependencies(&dependsContext, item); checkItemCondition(item); - createAdditionalModuleInstancesInProduct(&productContext); foreach (Item *child, item->children()) { if (child->typeName() == QLatin1String("Group")) @@ -541,28 +540,6 @@ QSet(referencedFilePaths) << subProjectFilePath); } -void ModuleLoader::createAdditionalModuleInstancesInProduct(ProductContext *productContext) -{ - Item::Modules modulesToCheck; - QSet modulesInProduct; - foreach (const Item::Module &module, productContext->item->modules()) { - modulesInProduct += module.name; - modulesToCheck += module.item->prototype()->modules(); - } - while (!modulesToCheck.isEmpty()) { - Item::Module module = modulesToCheck.takeFirst(); - if (modulesInProduct.contains(module.name)) - continue; - modulesInProduct += module.name; - modulesToCheck += module.item->prototype()->modules(); - Item *instance = Item::create(m_pool); - instantiateModule(productContext, productContext->item, instance, module.item->prototype(), - module.name); - module.item = instance; - productContext->item->modules().append(module); - } -} - void ModuleLoader::handleGroup(ProductContext *productContext, Item *item) { checkCancelation(); @@ -1218,11 +1195,7 @@ } QBS_CHECK(obj == depinst); } - depinst->setPrototype(m.item); - depinst->setFile(m.item->file()); - depinst->setLocation(m.item->location()); - depinst->setTypeName(m.item->typeName()); - depinst->setScope(moduleInstance); + instantiateModule(productContext, moduleInstance, depinst, m.item, m.name); m.item = depinst; moduleInstance->modules() += m; } diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/moduleloader.h qbs-1.3.0+201501301103/src/lib/corelib/language/moduleloader.h --- qbs-1.3.0+201501291118/src/lib/corelib/language/moduleloader.h 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/moduleloader.h 2015-01-30 11:03:44.000000000 +0000 @@ -168,7 +168,6 @@ void initProductProperties(const ProjectContext *project, Item *item); void handleSubProject(ProjectContext *projectContext, Item *item, const QSet &referencedFilePaths); - void createAdditionalModuleInstancesInProduct(ProductContext *productContext); void handleGroup(ProductContext *productContext, Item *group); void deferExportItem(ProductContext *productContext, Item *item); void mergeExportItems(ProductContext *productContext); diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/projectresolver.cpp qbs-1.3.0+201501301103/src/lib/corelib/language/projectresolver.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/language/projectresolver.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/projectresolver.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -50,6 +50,7 @@ #include #include +#include #include #include @@ -380,9 +381,7 @@ foreach (Item *child, subItems) callItemFunction(mapping, child, projectContext); - foreach (const Item::Module &module, item->modules()) - resolveModule(module.name, module.item, projectContext); - + resolveModules(item, projectContext); product->fileTags += productContext.additionalFileTags; foreach (const ResolvedTransformerPtr &transformer, product->transformers) @@ -397,12 +396,33 @@ m_progressObserver->incrementProgressValue(); } +void ProjectResolver::resolveModules(const Item *item, ProjectContext *projectContext) +{ + // Breadth first search needed here, because the product might set properties on the cpp module, + // whose children must be evaluated in that context then. + QQueue modules; + foreach (const Item::Module &m, item->modules()) + modules.enqueue(m); + QSet seen; + while (!modules.isEmpty()) { + const Item::Module m = modules.takeFirst(); + if (seen.contains(m.name)) + continue; + seen.insert(m.name); + resolveModule(m.name, m.item, projectContext); + foreach (const Item::Module &childModule, m.item->modules()) + modules.enqueue(childModule); + } +} + void ProjectResolver::resolveModule(const QStringList &moduleName, Item *item, ProjectContext *projectContext) { checkCancelation(); if (!m_evaluator->boolValue(item, QLatin1String("present"))) return; + + ModuleContext * const oldModuleContext = m_moduleContext; ModuleContext moduleContext; moduleContext.module = ResolvedModule::create(); m_moduleContext = &moduleContext; @@ -433,7 +453,7 @@ foreach (Item *child, item->children()) callItemFunction(mapping, child, projectContext); - m_moduleContext = 0; + m_moduleContext = oldModuleContext; } SourceArtifactPtr ProjectResolver::createSourceArtifact(const ResolvedProductConstPtr &rproduct, @@ -1107,11 +1127,17 @@ bool lookupPrototype) const { checkCancelation(); + QSet seenModuleNames; + for (Item::Modules::const_iterator it = item->modules().constBegin(); it != item->modules().constEnd(); ++it) { - QVariantMap depmods; const Item::Module &module = *it; + if (seenModuleNames.contains(module.name)) + continue; + seenModuleNames << module.name; + + QVariantMap depmods; evaluateModuleValues(module.item, &depmods, lookupPrototype); QVariantMap dep = evaluateProperties(module.item, lookupPrototype); dep.insert(QLatin1String("modules"), depmods); diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/projectresolver.h qbs-1.3.0+201501301103/src/lib/corelib/language/projectresolver.h --- qbs-1.3.0+201501291118/src/lib/corelib/language/projectresolver.h 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/projectresolver.h 2015-01-30 11:03:44.000000000 +0000 @@ -116,6 +116,7 @@ void resolveProject(Item *item, ProjectContext *projectContext); void resolveSubProject(Item *item, ProjectContext *projectContext); void resolveProduct(Item *item, ProjectContext *projectContext); + void resolveModules(const Item *item, ProjectContext *projectContext); void resolveModule(const QStringList &moduleName, Item *item, ProjectContext *projectContext); void resolveGroup(Item *item, ProjectContext *projectContext); void resolveRule(Item *item, ProjectContext *projectContext); diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/language/tst_language.cpp qbs-1.3.0+201501301103/src/lib/corelib/language/tst_language.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/language/tst_language.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/language/tst_language.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -916,10 +916,10 @@ QTest::newRow("init") << QString() << QStringList(); QTest::newRow("merge_lists") << "defines" - << (QStringList() << "THE_PRODUCT" << "QT_CORE" << "QT_GUI" << "QT_NETWORK"); + << (QStringList() << "THE_PRODUCT" << "QT_GUI" << "QT_CORE" << "QT_NETWORK"); QTest::newRow("merge_lists_and_values") << "defines" - << (QStringList() << "THE_PRODUCT" << "QT_CORE" << "QT_GUI" << "QT_NETWORK"); + << (QStringList() << "THE_PRODUCT" << "QT_GUI" << "QT_CORE" << "QT_NETWORK"); QTest::newRow("merge_lists_with_duplicates") << "cxxFlags" << (QStringList() << "-foo" << "BAR" << "-foo" << "BAZ"); diff -Nru qbs-1.3.0+201501291118/src/lib/corelib/tools/propertyfinder.cpp qbs-1.3.0+201501301103/src/lib/corelib/tools/propertyfinder.cpp --- qbs-1.3.0+201501291118/src/lib/corelib/tools/propertyfinder.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/src/lib/corelib/tools/propertyfinder.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -77,7 +77,7 @@ // These are the non-matching modules. for (QVariantMap::ConstIterator it = moduleProperties.constBegin(); it != moduleProperties.constEnd(); ++it) { - findModuleValues(it->toMap(), true); + findModuleValues(it->toMap(), searchRecursively); } } diff -Nru qbs-1.3.0+201501291118/tests/auto/api/tst_api.cpp qbs-1.3.0+201501301103/tests/auto/api/tst_api.cpp --- qbs-1.3.0+201501291118/tests/auto/api/tst_api.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/tests/auto/api/tst_api.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -895,7 +895,6 @@ void TestApi::exportWithRecursiveDepends() { const qbs::ErrorInfo errorInfo = doBuildProject("export-with-recursive-depends/project.qbs"); - QEXPECT_FAIL("", "QBS-706", Abort); VERIFY_NO_ERROR(errorInfo); } diff -Nru qbs-1.3.0+201501291118/tests/auto/blackbox/testdata/nested-properties/modules/lowerlevel/lower-level.qbs qbs-1.3.0+201501301103/tests/auto/blackbox/testdata/nested-properties/modules/lowerlevel/lower-level.qbs --- qbs-1.3.0+201501291118/tests/auto/blackbox/testdata/nested-properties/modules/lowerlevel/lower-level.qbs 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/tests/auto/blackbox/testdata/nested-properties/modules/lowerlevel/lower-level.qbs 2015-01-30 11:03:44.000000000 +0000 @@ -12,7 +12,6 @@ var cmd = new JavaScriptCommand(); cmd.sourceCode = function() { }; var prop = product.moduleProperty("lowerlevel", "prop"); - var listProp = product.moduleProperties("lowerlevel", "listProp"); cmd.description = "lowerlevel.prop is '" + prop + "'."; return [cmd]; } diff -Nru qbs-1.3.0+201501291118/tests/auto/blackbox/tst_blackbox.cpp qbs-1.3.0+201501301103/tests/auto/blackbox/tst_blackbox.cpp --- qbs-1.3.0+201501291118/tests/auto/blackbox/tst_blackbox.cpp 2015-01-29 11:18:22.000000000 +0000 +++ qbs-1.3.0+201501301103/tests/auto/blackbox/tst_blackbox.cpp 2015-01-30 11:03:44.000000000 +0000 @@ -1586,7 +1586,6 @@ { QDir::setCurrent(testDataDir + "/nested-properties"); QCOMPARE(runQbs(), 0); - QEXPECT_FAIL(0, "QBS-726", Abort); QVERIFY2(m_qbsStdout.contains("value in higherlevel"), m_qbsStdout.constData()); }