summaryrefslogtreecommitdiffstats
path: root/tools/repogen
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2019-10-30 09:50:05 +0200
committerKatja Marttila <katja.marttila@qt.io>2020-03-24 07:38:56 +0200
commit14a2502c7781a7e8036912767eea990a92dd560c (patch)
tree0e5137943ee8ebd56892a21f41cde3486ab2c8ba /tools/repogen
parent4d7c5d092e95f2eb2113780971027e0adfa41440 (diff)
Add possibility to compress metadata per repository
Added two new configure options for repogen. --unite-metadata will create both 'old' style meta 7z, which is one per component, and new style which is one per repository. --unite-metadata-only will create only new syntax meta 7z. One meta 7z per repository will significantly decrease the download time if there are several packages in one repository. Change-Id: I651b24e93fdef3efb6253ee9b119ebad3bae4d59 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'tools/repogen')
-rw-r--r--tools/repogen/repogen.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/tools/repogen/repogen.cpp b/tools/repogen/repogen.cpp
index e785ffd04..2d16fa720 100644
--- a/tools/repogen/repogen.cpp
+++ b/tools/repogen/repogen.cpp
@@ -68,6 +68,13 @@ static void printUsage()
std::cout << " -v|--verbose Verbose output" << std::endl;
+ std::cout << " --unite-metadata Combine all metadata into one 7z. This speeds up metadata " << std::endl;
+ std::cout << " download phase. Creates also metadata 7z per component for " << std::endl;
+ std::cout << " backward compatibility." << std::endl;
+
+ std::cout << " --unite-metadata-only Combine all metadata into one 7z. This speeds up metadata " << std::endl;
+ std::cout << " download phase." << std::endl;
+
std::cout << std::endl;
std::cout << "Example:" << std::endl;
std::cout << " " << appName << " -p ../examples/packages repository/"
@@ -99,6 +106,8 @@ int main(int argc, char** argv)
QInstallerTools::FilterType filterType = QInstallerTools::Exclude;
bool remove = false;
bool updateExistingRepositoryWithNewComponents = false;
+ bool createUnitedMetadata = false;
+ bool createOnlyUnitedMetadata = false;
//TODO: use a for loop without removing values from args like it is in binarycreator.cpp
//for (QStringList::const_iterator it = args.begin(); it != args.end(); ++it) {
@@ -176,7 +185,14 @@ int main(int argc, char** argv)
} else if (args.first() == QLatin1String("-r") || args.first() == QLatin1String("--remove")) {
remove = true;
args.removeFirst();
- } else {
+ } else if (args.first() == QLatin1String("--unite-metadata")) {
+ createUnitedMetadata = true;
+ args.removeFirst();
+ } else if (args.first() == QLatin1String("--unite-metadata-only")) {
+ createOnlyUnitedMetadata = true;
+ args.removeFirst();
+ }
+ else {
printUsage();
return 1;
}
@@ -281,7 +297,8 @@ int main(int argc, char** argv)
QInstallerTools::copyComponentData(directories, repositoryDir, &packages);
QInstallerTools::copyMetaData(tmpMetaDir, repositoryDir, packages, QLatin1String("{AnyApplication}"),
QLatin1String(QUOTE(IFW_REPOSITORY_FORMAT_VERSION)));
- QInstallerTools::compressMetaDirectories(tmpMetaDir, tmpMetaDir, pathToVersionMapping);
+ QInstallerTools::compressMetaDirectories(tmpMetaDir, tmpMetaDir, pathToVersionMapping,
+ createUnitedMetadata, createOnlyUnitedMetadata);
QDirIterator it(repositoryDir, QStringList(QLatin1String("Updates*.xml")), QDir::Files | QDir::CaseSensitive);
while (it.hasNext()) {