diff --git a/tools/linuxdeployqt/shared.cpp b/tools/linuxdeployqt/shared.cpp index 5d847da..176efc1 100644 --- a/tools/linuxdeployqt/shared.cpp +++ b/tools/linuxdeployqt/shared.cpp @@ -49,6 +49,7 @@ QString appBinaryPath; bool runStripEnabled = true; bool bundleAllButCoreLibs = false; +bool bundleEverything = false; bool fhsLikeMode = false; QString fhsPrefix; bool alwaysOwerwriteEnabled = false; @@ -429,43 +430,44 @@ LibraryInfo parseLddLibraryLine(const QString &line, const QString &appDirPath, if (trimmed.isEmpty()) return info; + if(!bundleEverything) { + if(bundleAllButCoreLibs) { + /* + Bundle every lib including the low-level ones except those that are explicitly blacklisted. + This is more suitable for bundling in a way that is portable between different distributions and target systems. + Along the way, this also takes care of non-Qt libraries. - if(bundleAllButCoreLibs) { - /* - Bundle every lib including the low-level ones except those that are explicitly blacklisted. - This is more suitable for bundling in a way that is portable between different distributions and target systems. - Along the way, this also takes care of non-Qt libraries. + The excludelist can be updated by running the bundled script generate-excludelist.sh + */ - The excludelist can be updated by running the bundled script generate-excludelist.sh - */ - - // copy generated excludelist - QStringList excludelist = generatedExcludelist; + // copy generated excludelist + QStringList excludelist = generatedExcludelist; - // append exclude libs - excludelist += excludeLibs; + // append exclude libs + excludelist += excludeLibs; - LogDebug() << "excludelist:" << excludelist; - if (! trimmed.contains("libicu")) { - if (containsHowOften(excludelist, QFileInfo(trimmed).completeBaseName())) { - LogDebug() << "Skipping blacklisted" << trimmed; - return info; - } - } - } else { - /* - Don't deploy low-level libraries in /usr or /lib because these tend to break if moved to a system with a different glibc. - TODO: Could make bundling these low-level libraries optional but then the bundles might need to - use something like patchelf --set-interpreter or http://bitwagon.com/rtldi/rtldi.html - With the Qt provided by qt.io the libicu libraries come bundled, but that is not the case with e.g., - Qt from ppas. Hence we make sure libicu is always bundled since it cannot be assumed to be on target sytems - */ - // Manual make of Qt deploys it to /usr/local/Qt-x.x.x so we cannot remove this path just like that, so let's allow known libs of Qt. - if (!trimmed.contains("libicu") && !trimmed.contains("lib/libQt") && !trimmed.contains("lib/libqgsttools")) { - if ((trimmed.startsWith("/usr") or (trimmed.startsWith("/lib")))) { - return info; - } - } + LogDebug() << "excludelist:" << excludelist; + if (! trimmed.contains("libicu")) { + if (containsHowOften(excludelist, QFileInfo(trimmed).completeBaseName())) { + LogDebug() << "Skipping blacklisted" << trimmed; + return info; + } + } + } else { + /* + Don't deploy low-level libraries in /usr or /lib because these tend to break if moved to a system with a different glibc. + TODO: Could make bundling these low-level libraries optional but then the bundles might need to + use something like patchelf --set-interpreter or http://bitwagon.com/rtldi/rtldi.html + With the Qt provided by qt.io the libicu libraries come bundled, but that is not the case with e.g., + Qt from ppas. Hence we make sure libicu is always bundled since it cannot be assumed to be on target sytems + */ + // Manual make of Qt deploys it to /usr/local/Qt-x.x.x so we cannot remove this path just like that, so let's allow known libs of Qt. + if (!trimmed.contains("libicu") && !trimmed.contains("lib/libQt") && !trimmed.contains("lib/libqgsttools")) { + if ((trimmed.startsWith("/usr") or (trimmed.startsWith("/lib")))) { + return info; + } + } + } } enum State {QtPath, LibraryName, Version, End};