Make it possible for a module to specify bundling single files

To make sure libQt5QuickParticles.so is loaded for Qt Quick
applications, we need to be able to specify bundling
specific files, not just subdirectories.

Task-number: QTCREATORBUG-9299
Change-Id: I743ee5ea714355ba6398378f4f54b6ede64d4c85
Reviewed-by: default avatarDaniel Teske <daniel.teske@digia.com>
parent ee9ec5a4
......@@ -520,12 +520,20 @@ void AndroidPackageCreationStep::collectFiles(QList<DeployItem> *deployList,
QSet<QString> alreadyListed;
foreach (QString bundledFile, m_otherBundledFiles) {
if (!bundledFile.endsWith(QLatin1Char('/')))
bundledFile.append(QLatin1Char('/'));
QStringList allFiles;
if (QFileInfo(qtVersionSourcePath + QLatin1Char('/') + bundledFile).isDir()) {
if (!bundledFile.endsWith(QLatin1Char('/')))
bundledFile.append(QLatin1Char('/'));
allFiles = collectRelativeFilePaths(qtVersionSourcePath + QLatin1Char('/') + bundledFile);
} else {
// If we need to bundle a specific file, we just add an empty string and the file
// names and data will be prepared correctly in the loop below.
allFiles = QStringList(QString());
}
QStringList allFiles = collectRelativeFilePaths(qtVersionSourcePath + QLatin1Char('/') + bundledFile);
foreach (QString file, allFiles) {
QString fullPath = qtVersionSourcePath + QLatin1Char('/') + bundledFile + QLatin1Char('/') + file;
QString fullPath = qtVersionSourcePath + QLatin1Char('/') + bundledFile + file;
if (alreadyListed.contains(fullPath))
continue;
......@@ -534,22 +542,31 @@ void AndroidPackageCreationStep::collectFiles(QList<DeployItem> *deployList,
QString garbledFileName;
QString destinationPath;
bool shouldStrip = false;
if (file.endsWith(QLatin1String(".so"))) {
garbledFileName = QLatin1String("lib")
+ AndroidManager::libraryPrefix()
+ QString(bundledFile).replace(QLatin1Char('/'), QLatin1Char('_'))
+ QString(file).replace(QLatin1Char('/'), QLatin1Char('_'));
QString fullFileName = bundledFile + file;
if (fullFileName.endsWith(QLatin1String(".so"))) {
if (fullFileName.startsWith(QLatin1String("lib/"))) {
// Special case when the destination folder is lib/
// Since this is also the source folder, there is no need to garble the file
// name and copy it. We also won't have write access to this folder, so we
// couldn't if we wanted to.
garbledFileName = fullFileName.mid(sizeof("lib/") - 1);
} else {
garbledFileName = QLatin1String("lib")
+ AndroidManager::libraryPrefix()
+ QString(fullFileName).replace(QLatin1Char('/'), QLatin1Char('_'));
}
destinationPath = androidLibPath + QLatin1Char('/') + garbledFileName;
shouldStrip = true;
} else {
garbledFileName = AndroidManager::libraryPrefix() + bundledFile + file;
garbledFileName = AndroidManager::libraryPrefix() + fullFileName;
destinationPath = androidAssetsPath + garbledFileName;
}
deployList->append(DeployItem(fullPath, 0, destinationPath, shouldStrip));
pluginsAndImportsList->append(DeployItem(garbledFileName,
0,
bundledFile + file,
fullFileName,
shouldStrip));
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment