diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2013-10-29 13:50:14 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-30 16:38:52 +0100 |
commit | 254c89c08f4a694c7ff4ccf0f9e41216106631e4 (patch) | |
tree | 4c654aebbac94519927c1bd9badaa5131b0ff267 | |
parent | ac41a8cb8894108868ef91e10888a08e482767b5 (diff) |
Fix dependency detection corner case
Also skip indirect dependencies from the "bundled" element if
their dependencies are not explicitly included.
Task-number: QTBUG-34285
Change-Id: Iedb726c35d1c979a2ebab551095edcf4ce5cb3a1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
-rw-r--r-- | src/androiddeployqt/main.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp index 974448d38..a5ce60868 100644 --- a/src/androiddeployqt/main.cpp +++ b/src/androiddeployqt/main.cpp @@ -1176,6 +1176,8 @@ bool readDependenciesFromElf(Options *options, return true; } +bool goodToCopy(const Options *options, const QString &file); + bool readDependencies(Options *options) { if (options->verbose) @@ -1188,21 +1190,27 @@ bool readDependencies(Options *options) return true; } - // Add dependencies of application binary first QSet<QString> usedDependencies; QSet<QString> remainingDependencies; - QString fileName = options->applicationBinary; + // Add dependencies of application binary first + if (!readDependenciesFromElf(options, options->applicationBinary, &usedDependencies, &remainingDependencies)) + return false; + QString qtDir = options->qtInstallDirectory + QLatin1Char('/'); - for (;;) { - if (!readDependenciesFromElf(options, fileName, &usedDependencies, &remainingDependencies)) - return false; - if (remainingDependencies.isEmpty()) - break; + + while (!remainingDependencies.isEmpty()) { QSet<QString>::iterator start = remainingDependencies.begin(); - fileName = qtDir+*start; + QString fileName = qtDir+*start; remainingDependencies.erase(start); - }; + if (goodToCopy(options, fileName)) { + bool ok = readDependenciesFromElf(options, fileName, &usedDependencies, &remainingDependencies); + if (!ok) + return false; + } + else if (options->verbose) + fprintf(stdout, "Skipping %s due to unmet dependencies\n", qPrintable(fileName)); + } return true; } |