summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKonstantin Podsvirov <konstantin@podsvirov.pro>2017-08-28 14:25:27 +0300
committerKonstantin Podsvirov <konstantin@podsvirov.pro>2017-11-13 14:50:07 +0000
commit1f3eded578314fb903bf50447d614fd314bd0eec (patch)
treeddf8f4b80dab5386c8c3f881c46b940173e3c17a /tools
parentee24c7aefce6acbcac7a51f7c8c53c84ecdc7eca (diff)
Allow comparing non-numeric versions
Changes: - Improve KDUpdater::compareVersion method; - Add tst_CompareVersion test. Task-number: QTIFW-948 Change-Id: If64f807cfb04e56d2bdd5fa250f456631df3f239 Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/common/repositorygen.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/tools/common/repositorygen.cpp b/tools/common/repositorygen.cpp
index 1c4a877c0..908020ea4 100644
--- a/tools/common/repositorygen.cpp
+++ b/tools/common/repositorygen.cpp
@@ -481,7 +481,10 @@ PackageInfoVector QInstallerTools::createListOfPackages(const QStringList &packa
PackageInfo info;
info.name = it->fileName();
info.version = packageElement.firstChildElement(QLatin1String("Version")).text();
- if (!QRegExp(QLatin1String("[0-9]+((\\.|-)[0-9]+)*")).exactMatch(info.version)) {
+ // Version cannot start with comparison characters, be an empty string
+ // or have whitespaces at the beginning or at the end
+ if (!QRegExp(QLatin1String("(?![<=>\\s]+)(.+)")).exactMatch(info.version) ||
+ (info.version != info.version.trimmed())) {
if (ignoreInvalidPackages)
continue;
throw QInstaller::Error(QString::fromLatin1("Component version for \"%1\" is invalid! <Version>%2</Version>")