diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-08-27 11:34:44 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2021-09-14 15:04:30 +0300 |
commit | 14b4bdde43a6e400a2212b155c75b67c2913998a (patch) | |
tree | 3b3a6e7fe4f5ca66aae00d4e608c2ced4ccee797 /src/libs/ifwtools | |
parent | 7be4b9c71af4d4668deab355db73beb7feaf35c1 (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.cpp | 14 | ||||
-rw-r--r-- | src/libs/ifwtools/repositorygen.h | 11 |
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 |