diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-15 09:56:54 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-06-15 09:56:54 +0200 |
commit | a46c03c0737ce5e2e5b231e448e3fc112ef1fc59 (patch) | |
tree | 77f8bc134b8eb4515947d219af4095c2865767cc /src/lib | |
parent | 9788db406f1a3317e3904cb910eab4d518d9cf8b (diff) | |
parent | d994e54712efb69225d73d93fc57b89a3d39cacb (diff) |
Merge 1.12 into master
Change-Id: I72bbda4537a65bc525afc38a3d280f3c23940c12
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/corelib/api/project.cpp | 16 | ||||
-rw-r--r-- | src/lib/corelib/api/runenvironment.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/buildgraphloader.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/executor.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/inputartifactscanner.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rescuableartifactdata.h | 3 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 16 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.h | 2 | ||||
-rw-r--r-- | src/lib/corelib/tools/fileinfo.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/tools/msvcinfo.cpp | 2 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.cpp | 2 |
11 files changed, 27 insertions, 30 deletions
diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index 69c7edf77..bad18cab9 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -801,16 +801,14 @@ ProjectTransformerData ProjectPrivate::transformerData() ProductTransformerData productTransformerData; for (const Transformer * const t : allTransformers) { TransformerData tData; - for (Artifact * const a : t->inputs) - tData.d->inputs << createArtifactData(a, product, targetArtifacts); - for (Artifact * const a : t->explicitlyDependsOn) - tData.d->inputs << createArtifactData(a, product, targetArtifacts); - for (Artifact * const a - : RulesApplicator::collectAuxiliaryInputs(t->rule.get(), product.get())) { - tData.d->inputs << createArtifactData(a, product, targetArtifacts); - } - for (Artifact * const a : t->outputs) + Set<const Artifact *> allInputs; + for (Artifact * const a : t->outputs) { tData.d->outputs << createArtifactData(a, product, targetArtifacts); + for (const Artifact * const child : filterByType<Artifact>(a->children)) + allInputs << child; + } + for (const Artifact * const input : allInputs) + tData.d->inputs << createArtifactData(input, product, targetArtifacts); tData.d->commands = ruleCommandListForTransformer(t); productTransformerData << tData; } diff --git a/src/lib/corelib/api/runenvironment.cpp b/src/lib/corelib/api/runenvironment.cpp index d803639a8..bf973cbc4 100644 --- a/src/lib/corelib/api/runenvironment.cpp +++ b/src/lib/corelib/api/runenvironment.cpp @@ -311,7 +311,7 @@ int RunEnvironment::doRunTarget(const QString &targetBin, const QStringList &arg << QStringLiteral("-t") // allow test packages << QStringLiteral("-d") // allow version code downgrade << targetBin); - if (!process.waitForFinished()) { + if (!process.waitForFinished(-1)) { if (process.error() == QProcess::FailedToStart) { throw ErrorInfo(Tr::tr("The process '%1' could not be started: %2") .arg(targetExecutable) @@ -351,7 +351,7 @@ int RunEnvironment::doRunTarget(const QString &targetBin, const QStringList &arg << StringConstants::simctlInstallCommand() << simulatorId << QDir::cleanPath(bundlePath)); - if (!process.waitForFinished()) { + if (!process.waitForFinished(-1)) { if (process.error() == QProcess::FailedToStart) { throw ErrorInfo(Tr::tr("The process '%1' could not be started: %2") .arg(targetExecutable) diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index 9890a8327..f9b9910e6 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -888,7 +888,7 @@ void BuildGraphLoader::rescueOldBuildData(const ResolvedProductConstPtr &restore = oldArtifact->transformer->lastPrepareScriptExecutionTime; const ChildrenInfo &childrenInfo = childLists.value(oldArtifact); for (Artifact * const child : qAsConst(childrenInfo.children)) { - rad.children << RescuableArtifactData::ChildData(child->product->name, + rad.children.emplace_back(child->product->name, child->product->multiplexConfigurationId, child->filePath(), childrenInfo.childrenAddedByScanner.contains(child)); std::transform(oldArtifact->fileDependencies.cbegin(), diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp index 8713b9b41..980e2182a 100644 --- a/src/lib/corelib/buildgraph/executor.cpp +++ b/src/lib/corelib/buildgraph/executor.cpp @@ -775,7 +775,7 @@ void Executor::rescueOldBuildData(Artifact *artifact, bool *childrenAdded = 0) bool canRescue = artifact->transformer->commands == rad.commands; if (canRescue) { ResolvedProductPtr pseudoProduct = ResolvedProduct::create(); - for (const RescuableArtifactData::ChildData &cd : qAsConst(rad.children)) { + for (const RescuableArtifactData::ChildData &cd : rad.children) { pseudoProduct->name = cd.productName; pseudoProduct->multiplexConfigurationId = cd.productMultiplexId; Artifact * const child = lookupArtifact(pseudoProduct, m_project->buildData.get(), @@ -828,7 +828,7 @@ void Executor::rescueOldBuildData(Artifact *artifact, bool *childrenAdded = 0) if (canRescue) { const TypeFilter<Artifact> childArtifacts(artifact->children); - const int newChildCount = childrenToConnect.size() + const size_t newChildCount = childrenToConnect.size() + std::distance(childArtifacts.begin(), childArtifacts.end()); QBS_CHECK(newChildCount >= rad.children.size()); if (newChildCount > rad.children.size()) { diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp index 644b95d79..d183b1879 100644 --- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp +++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp @@ -255,6 +255,8 @@ void InputArtifactScanner::resolveScanResultDependencies(const Artifact *inputAr if (FileInfo::isAbsolute(dependencyFilePath)) { resolveDepencency(dependency, inputArtifact->product.get(), &resolvedDependency); + if (resolvedDependency.filePath.isEmpty()) + goto unresolved; goto resolved; } diff --git a/src/lib/corelib/buildgraph/rescuableartifactdata.h b/src/lib/corelib/buildgraph/rescuableartifactdata.h index fbcf8a9d4..a88d63273 100644 --- a/src/lib/corelib/buildgraph/rescuableartifactdata.h +++ b/src/lib/corelib/buildgraph/rescuableartifactdata.h @@ -54,7 +54,6 @@ #include <tools/persistence.h> #include <QtCore/qhash.h> -#include <QtCore/qlist.h> #include <vector> @@ -103,7 +102,7 @@ public: }; FileTime timeStamp; - QList<ChildData> children; + std::vector<ChildData> children; std::vector<QString> fileDependencies; bool knownOutOfDate = false; diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index d04475abb..4cb328f2c 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -156,7 +156,7 @@ ArtifactSet RulesApplicator::collectAuxiliaryInputs(const Rule *rule, const ResolvedProduct *product) { return collectAdditionalInputs(rule->auxiliaryInputs, rule, product, - RulesApplicator::CurrentProduct | RulesApplicator::Dependencies); + CurrentProduct | Dependencies); } static void copyProperty(const QString &name, const QScriptValue &src, QScriptValue dst) @@ -319,16 +319,13 @@ ArtifactSet RulesApplicator::collectAdditionalInputs(const FileTags &tags, const // 2) An artifact marked with filesAreTargets: true inside a Group inside of a // Module also ends up in the results returned by product->lookupArtifactsByFileTag, // so it should be considered conceptually as a "dependent product artifact". - if ((inputsSources.testFlag(RulesApplicator::CurrentProduct) - && !dependency->isTargetOfModule()) - || (inputsSources.testFlag(RulesApplicator::Dependencies) - && dependency->isTargetOfModule()) - ) { + if ((inputsSources.testFlag(CurrentProduct) && !dependency->isTargetOfModule()) + || (inputsSources.testFlag(Dependencies) && dependency->isTargetOfModule())) { artifacts << dependency; } } - if (inputsSources.testFlag(RulesApplicator::Dependencies)) { + if (inputsSources.testFlag(Dependencies)) { for (const ResolvedProductConstPtr &depProduct : product->dependencies) { for (Artifact * const ta : depProduct->targetArtifacts()) { if (ta->fileTags().contains(fileTag) @@ -345,11 +342,10 @@ ArtifactSet RulesApplicator::collectAdditionalInputs(const FileTags &tags, const ArtifactSet RulesApplicator::collectExplicitlyDependsOn() { ArtifactSet first = collectAdditionalInputs( - m_rule->explicitlyDependsOn, m_rule.get(), m_product.get(), - RulesApplicator::CurrentProduct); + m_rule->explicitlyDependsOn, m_rule.get(), m_product.get(), CurrentProduct); ArtifactSet second = collectAdditionalInputs( m_rule->explicitlyDependsOnFromDependencies, m_rule.get(), m_product.get(), - RulesApplicator::Dependencies); + Dependencies); return first.unite(second); } diff --git a/src/lib/corelib/buildgraph/rulesapplicator.h b/src/lib/corelib/buildgraph/rulesapplicator.h index 76220f52d..adc58f3d0 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.h +++ b/src/lib/corelib/buildgraph/rulesapplicator.h @@ -76,7 +76,7 @@ public: const ArtifactSet &artifactsToRemove, const Logger &logger); static ArtifactSet collectAuxiliaryInputs(const Rule *rule, const ResolvedProduct *product); - enum InputsSourceFlag { CurrentProduct, Dependencies }; + enum InputsSourceFlag { CurrentProduct = 1, Dependencies = 2 }; Q_DECLARE_FLAGS(InputsSources, InputsSourceFlag) private: diff --git a/src/lib/corelib/tools/fileinfo.cpp b/src/lib/corelib/tools/fileinfo.cpp index a1571b954..3adacc883 100644 --- a/src/lib/corelib/tools/fileinfo.cpp +++ b/src/lib/corelib/tools/fileinfo.cpp @@ -360,8 +360,10 @@ QString applicationDirPath() FileInfo::FileInfo(const QString &fileName) { - if (stat(fileName.toLocal8Bit(), &m_stat) == -1) + if (stat(fileName.toLocal8Bit(), &m_stat) == -1) { m_stat.st_mtime = 0; + m_stat.st_mode = 0; + } } bool FileInfo::exists() const diff --git a/src/lib/corelib/tools/msvcinfo.cpp b/src/lib/corelib/tools/msvcinfo.cpp index 27e523d90..e390c9a30 100644 --- a/src/lib/corelib/tools/msvcinfo.cpp +++ b/src/lib/corelib/tools/msvcinfo.cpp @@ -101,7 +101,7 @@ static QByteArray runProcess(const QString &exeFilePath, const QStringList &args process.write(pipeData); process.closeWriteChannel(); } - if (!process.waitForFinished() || process.exitStatus() != QProcess::NormalExit) + if (!process.waitForFinished(-1) || process.exitStatus() != QProcess::NormalExit) throw ErrorInfo(mkStr("Could not run %1 (%2)").arg(exeFilePath, process.errorString())); if (process.exitCode() != 0 && !allowFailure) { ErrorInfo e(mkStr("Process '%1' failed with exit code %2.") diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp index 6d82d50ad..adeeef7bc 100644 --- a/src/lib/qtprofilesetup/qtprofilesetup.cpp +++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp @@ -523,7 +523,7 @@ static void replaceSpecialValues(QByteArray *content, const Profile &profile, additionalContent += "\n"; const QByteArray indent(4, ' '); additionalContent += "Group {\n" - + indent + indent + "files: [product.Qt[\"" + module.qbsName.toUtf8() + "\"]" + + indent + indent + "files: [Qt[\"" + module.qbsName.toUtf8() + "\"]" + ".libFilePath]\n" + indent + indent + "filesAreTargets: true\n" + indent + indent + "fileTags: [\"" + libraryFileTag(qtEnvironment, module) |