summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@digia.com>2013-10-29 13:50:14 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-30 16:38:52 +0100
commit254c89c08f4a694c7ff4ccf0f9e41216106631e4 (patch)
tree4c654aebbac94519927c1bd9badaa5131b0ff267
parentac41a8cb8894108868ef91e10888a08e482767b5 (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.cpp26
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;
}