summaryrefslogtreecommitdiffstats
path: root/src/libs/ifwtools
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-08-27 11:34:44 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2021-09-14 15:04:30 +0300
commit14b4bdde43a6e400a2212b155c75b67c2913998a (patch)
tree3b3a6e7fe4f5ca66aae00d4e608c2ced4ccee797 /src/libs/ifwtools
parent7be4b9c71af4d4668deab355db73beb7feaf35c1 (diff)
repogen: add support for setting compression level for data archives
Task-number: QTIFW-1587 Change-Id: I86c4b08eb43e3cafbab83e04961c51d6bdbc98ba Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/ifwtools')
-rw-r--r--src/libs/ifwtools/repositorygen.cpp14
-rw-r--r--src/libs/ifwtools/repositorygen.h11
2 files changed, 16 insertions, 9 deletions
diff --git a/src/libs/ifwtools/repositorygen.cpp b/src/libs/ifwtools/repositorygen.cpp
index 6d87caef4..98cd66768 100644
--- a/src/libs/ifwtools/repositorygen.cpp
+++ b/src/libs/ifwtools/repositorygen.cpp
@@ -759,13 +759,14 @@ static void writeSHA1ToNodeWithName(QDomDocument &doc, QDomNodeList &list, const
}
}
-void QInstallerTools::createArchive(const QString &filename, const QStringList &data)
+void QInstallerTools::createArchive(const QString &filename, const QStringList &data, Compression compression)
{
QScopedPointer<AbstractArchive> targetArchive(ArchiveFactory::instance().create(filename));
if (!targetArchive) {
throw QInstaller::Error(QString::fromLatin1("Could not create handler "
"object for archive \"%1\": \"%2\".").arg(filename, QLatin1String(Q_FUNC_INFO)));
}
+ targetArchive->setCompressionLevel(compression);
if (!(targetArchive->open(QIODevice::WriteOnly) && targetArchive->create(data))) {
throw Error(QString::fromLatin1("Could not create archive \"%1\": %2").arg(
QDir::toNativeSeparators(filename), targetArchive->errorString()));
@@ -906,7 +907,7 @@ void QInstallerTools::splitMetadata(const QStringList &entryList, const QString
}
void QInstallerTools::copyComponentData(const QStringList &packageDirs, const QString &repoDir,
- PackageInfoVector *const infos, const QString &archiveSuffix)
+ PackageInfoVector *const infos, const QString &archiveSuffix, Compression compression)
{
for (int i = 0; i < infos->count(); ++i) {
const PackageInfo info = infos->at(i);
@@ -945,7 +946,7 @@ void QInstallerTools::copyComponentData(const QStringList &packageDirs, const QS
} else if (fileInfo.isDir()) {
qDebug() << "Compressing data directory" << entry;
QString target = QString::fromLatin1("%1/%3%2.%4").arg(namedRepoDir, entry, info.version, archiveSuffix);
- createArchive(target, QStringList() << dataDir.absoluteFilePath(entry));
+ createArchive(target, QStringList() << dataDir.absoluteFilePath(entry), compression);
compressedFiles.append(target);
} else if (fileInfo.isSymLink()) {
filesToCompress.append(dataDir.absoluteFilePath(entry));
@@ -956,7 +957,7 @@ void QInstallerTools::copyComponentData(const QStringList &packageDirs, const QS
if (!filesToCompress.isEmpty()) {
qDebug() << "Compressing files found in data directory:" << filesToCompress;
QString target = QString::fromLatin1("%1/%2content.%3").arg(namedRepoDir, info.version, archiveSuffix);
- createArchive(target, filesToCompress);
+ createArchive(target, filesToCompress, compression);
compressedFiles.append(target);
}
@@ -1089,7 +1090,8 @@ PackageInfoVector QInstallerTools::collectPackages(RepositoryInfo info, QStringL
}
void QInstallerTools::createRepository(RepositoryInfo info, PackageInfoVector *packages,
- const QString &tmpMetaDir, bool createComponentMetadata, bool createUnifiedMetadata, const QString &archiveSuffix)
+ const QString &tmpMetaDir, bool createComponentMetadata, bool createUnifiedMetadata,
+ const QString &archiveSuffix, Compression compression)
{
QHash<QString, QString> pathToVersionMapping = QInstallerTools::buildPathToVersionMapping(*packages);
@@ -1105,7 +1107,7 @@ void QInstallerTools::createRepository(RepositoryInfo info, PackageInfoVector *p
unite7zFiles.append(it.fileInfo().absoluteFilePath());
}
}
- QInstallerTools::copyComponentData(directories, info.repositoryDir, packages, archiveSuffix);
+ QInstallerTools::copyComponentData(directories, info.repositoryDir, packages, archiveSuffix, compression);
QInstallerTools::copyMetaData(tmpMetaDir, info.repositoryDir, *packages, QLatin1String("{AnyApplication}"),
QLatin1String(QUOTE(IFW_REPOSITORY_FORMAT_VERSION)), unite7zFiles);
diff --git a/src/libs/ifwtools/repositorygen.h b/src/libs/ifwtools/repositorygen.h
index 5f67b8220..054c023f4 100644
--- a/src/libs/ifwtools/repositorygen.h
+++ b/src/libs/ifwtools/repositorygen.h
@@ -31,6 +31,8 @@
#include "ifwtools_global.h"
+#include <abstractarchive.h>
+
#include <QHash>
#include <QString>
#include <QStringList>
@@ -52,6 +54,7 @@ struct IFWTOOLS_EXPORT PackageInfo
bool createContentSha1Node;
};
typedef QVector<PackageInfo> PackageInfoVector;
+typedef QInstaller::AbstractArchive::CompressionLevel Compression;
enum IFWTOOLS_EXPORT FilterType {
Include,
@@ -77,7 +80,7 @@ PackageInfoVector IFWTOOLS_EXPORT createListOfRepositoryPackages(const QStringLi
QHash<QString, QString> IFWTOOLS_EXPORT buildPathToVersionMapping(const PackageInfoVector &info);
-void IFWTOOLS_EXPORT createArchive(const QString &filename, const QStringList &data);
+void IFWTOOLS_EXPORT createArchive(const QString &filename, const QStringList &data, Compression compression = Compression::Normal);
void IFWTOOLS_EXPORT compressMetaDirectories(const QString &repoDir, const QString &existingUnite7zUrl,
const QHash<QString, QString> &versionMapping, bool createSplitMetadata, bool createUnifiedMetadata);
@@ -89,14 +92,16 @@ void splitMetadata(const QStringList &entryList, const QString &repoDir, QDomDoc
void IFWTOOLS_EXPORT copyMetaData(const QString &outDir, const QString &dataDir, const PackageInfoVector &packages,
const QString &appName, const QString& appVersion, const QStringList &uniteMetadatas);
void IFWTOOLS_EXPORT copyComponentData(const QStringList &packageDir, const QString &repoDir,
- PackageInfoVector *const infos, const QString &archiveSuffix);
+ PackageInfoVector *const infos, const QString &archiveSuffix,
+ Compression compression = Compression::Normal);
void IFWTOOLS_EXPORT filterNewComponents(const QString &repositoryDir, QInstallerTools::PackageInfoVector &packages);
QString IFWTOOLS_EXPORT existingUniteMeta7z(const QString &repositoryDir);
PackageInfoVector IFWTOOLS_EXPORT collectPackages(RepositoryInfo info, QStringList *filteredPackages, FilterType filterType, bool updateNewComponents, QStringList packagesUpdatedWithSha);
void IFWTOOLS_EXPORT createRepository(RepositoryInfo info, PackageInfoVector *packages, const QString &tmpMetaDir,
- bool createComponentMetadata, bool createUnifiedMetadata, const QString &archiveSuffix);
+ bool createComponentMetadata, bool createUnifiedMetadata, const QString &archiveSuffix,
+ Compression compression = Compression::Normal);
} // namespace QInstallerTools
#endif // REPOSITORYGEN_H