Browse Source

Fix bundling of QtQuick/PrivateWidgets

master
probonopd 8 years ago
parent
commit
80aca76f19
  1. 15
      shared/shared.cpp

15
shared/shared.cpp

@ -784,7 +784,7 @@ void deployPlugins(const AppDirInfo &appDirInfo, const QString &pluginSourcePath
if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Gui")) { if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Gui")) {
LogDebug() << "libQt5Gui detected"; LogDebug() << "libQt5Gui detected";
pluginList.append("platforms/libqxcb.so"); pluginList.append("platforms/libqxcb.so");
// All image formats (svg if QtSvg.library is used) // All image formats (svg if QtSvg library is used)
QStringList imagePlugins = QDir(pluginSourcePath + QStringLiteral("/imageformats")).entryList(QStringList() << QStringLiteral("*.so")); QStringList imagePlugins = QDir(pluginSourcePath + QStringLiteral("/imageformats")).entryList(QStringList() << QStringLiteral("*.so"));
foreach (const QString &plugin, imagePlugins) { foreach (const QString &plugin, imagePlugins) {
if (plugin.contains(QStringLiteral("qsvg"))) { if (plugin.contains(QStringLiteral("qsvg"))) {
@ -817,7 +817,7 @@ void deployPlugins(const AppDirInfo &appDirInfo, const QString &pluginSourcePath
} }
} }
// Sql plugins if QtSql.library is in use // Sql plugins if QtSql library is in use
if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Sql")) { if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Sql")) {
QStringList sqlPlugins = QDir(pluginSourcePath + QStringLiteral("/sqldrivers")).entryList(QStringList() << QStringLiteral("*.so")); QStringList sqlPlugins = QDir(pluginSourcePath + QStringLiteral("/sqldrivers")).entryList(QStringList() << QStringLiteral("*.so"));
foreach (const QString &plugin, sqlPlugins) { foreach (const QString &plugin, sqlPlugins) {
@ -825,7 +825,7 @@ void deployPlugins(const AppDirInfo &appDirInfo, const QString &pluginSourcePath
} }
} }
// multimedia plugins if QtMultimedia.library is in use // multimedia plugins if QtMultimedia library is in use
if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Multimedia")) { if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Multimedia")) {
QStringList plugins = QDir(pluginSourcePath + QStringLiteral("/mediaservice")).entryList(QStringList() << QStringLiteral("*.so")); QStringList plugins = QDir(pluginSourcePath + QStringLiteral("/mediaservice")).entryList(QStringList() << QStringLiteral("*.so"));
foreach (const QString &plugin, plugins) { foreach (const QString &plugin, plugins) {
@ -958,6 +958,7 @@ bool deployQmlImports(const QString &appDirPath, DeploymentInfo deploymentInfo,
// run qmlimportscanner // run qmlimportscanner
QProcess qmlImportScanner; QProcess qmlImportScanner;
LogDebug() << qmlImportScannerPath << argumentList;
qmlImportScanner.start(qmlImportScannerPath, argumentList); qmlImportScanner.start(qmlImportScannerPath, argumentList);
if (!qmlImportScanner.waitForStarted()) { if (!qmlImportScanner.waitForStarted()) {
LogError() << "Could not start qmlimpoortscanner. Process error is" << qmlImportScanner.errorString(); LogError() << "Could not start qmlimpoortscanner. Process error is" << qmlImportScanner.errorString();
@ -1031,14 +1032,14 @@ bool deployQmlImports(const QString &appDirPath, DeploymentInfo deploymentInfo,
} }
// Special case: // Special case:
// Use of QtQuick.PrivateWidgets is not discoverable at deploy-time. // Use of QtQuick/PrivateWidgets is not discoverable at deploy-time.
// Recreate the run-time logic here as best as we can - deploy it iff // Recreate the run-time logic here as best as we can - deploy it iff
// 1) QtWidgets.library is used // 1) QtWidgets library is used
// 2) QtQuick.Controls is used // 2) QtQuick.Controls is used
// The intended failure mode is that libwidgetsplugin.dylib will be present // The intended failure mode is that libwidgetsplugin.dylib will be present
// in the app bundle but not used at run-time. // in the app bundle but not used at run-time.
if (deploymentInfo.deployedLibraries.contains("QtWidgets.library") && qtQuickContolsInUse) { if (deploymentInfo.deployedLibraries.contains("QtWidgets") && qtQuickContolsInUse) {
LogNormal() << "Deploying QML import QtQuick.PrivateWidgets"; LogNormal() << "Deploying QML import QtQuick/PrivateWidgets";
QString name = "QtQuick/PrivateWidgets"; QString name = "QtQuick/PrivateWidgets";
QString path = qmlImportsPath + QLatin1Char('/') + name; QString path = qmlImportsPath + QLatin1Char('/') + name;
deployQmlImport(appDirPath, deploymentInfo.rpathsUsed, path, name); deployQmlImport(appDirPath, deploymentInfo.rpathsUsed, path, name);

Loading…
Cancel
Save