summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-06-10 13:13:47 +0300
committerKatja Marttila <katja.marttila@qt.io>2020-06-11 09:19:15 +0000
commitfb2992faf76ad738687e1e50a2735d4113ff8865 (patch)
treea1ecc92bb984c4a535cb27c8d6e559d629d9576e /tools
parentf6565bdc455d7b3a10941c29d780b58fc1305ef2 (diff)
Generate unique metadata name for unified metadata
If the metadata name is the same although the package is updated, it might cause problems when pushing the data to distribution systems that requires a filename change in order to replicate content. If the filename stays the same it may not be refreshed to the cache. Task-number: QTIFW-1838 Change-Id: I2fc8c1cdf559dab89b57a74ebbe758cdc71da29c Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/common/repositorygen.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/tools/common/repositorygen.cpp b/tools/common/repositorygen.cpp
index 5341f30a7..4215f127d 100644
--- a/tools/common/repositorygen.cpp
+++ b/tools/common/repositorygen.cpp
@@ -626,7 +626,7 @@ QHash<QString, QString> QInstallerTools::buildPathToVersionMapping(const Package
}
static void writeSHA1ToNodeWithName(QDomDocument &doc, QDomNodeList &list, const QByteArray &sha1sum,
- const QString &nodename = QString())
+ const QString &nodename = QString(), const QString &metadataName = QString())
{
if (nodename.isEmpty())
qDebug() << "Searching sha1sum node.";
@@ -650,6 +650,13 @@ static void writeSHA1ToNodeWithName(QDomDocument &doc, QDomNodeList &list, const
}
} else {
sha1Node = doc.createElement(scSHA1);
+ //Create also unique metadata name
+ if (!metadataName.isEmpty()) {
+ qDebug() << "Writing the metadata node with name " << metadataName;
+ QDomNode metaName = doc.createElement(QLatin1String("MetadataName"));
+ metaName.appendChild(doc.createTextNode(metadataName));
+ curNode.appendChild(metaName);
+ }
}
qDebug() << "- writing the sha1sum" << sha1Value;
sha1Node.appendChild(doc.createTextNode(sha1Value));
@@ -704,14 +711,17 @@ QStringList QInstallerTools::unifyMetadata(const QStringList &entryList, const Q
}
// Compress all metadata from repository to one single 7z
- const QString tmpTarget = repoDir + QLatin1String("/meta.7z");
+ const QString metadataFilename = QDateTime::currentDateTime().
+ toString(QLatin1String("yyyy-MM-dd-hhmm")) + QLatin1String("_meta.7z");
+ QDateTime dateTime = QDateTime::currentDateTime();
+ const QString tmpTarget = repoDir + QDir::separator() + metadataFilename;
Lib7z::createArchive(tmpTarget, absPaths, Lib7z::TmpFile::No);
QFile tmp(tmpTarget);
tmp.open(QFile::ReadOnly);
const QByteArray sha1Sum = QInstaller::calculateHash(&tmp, QCryptographicHash::Sha1);
QDomNodeList elements = doc.elementsByTagName(QLatin1String("Updates"));
- writeSHA1ToNodeWithName(doc, elements, sha1Sum, QString());
+ writeSHA1ToNodeWithName(doc, elements, sha1Sum, QString(), metadataFilename);
return absPaths;
}