From f85501c7bfc1be515f95367a3d16fb75911717dd Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 30 Mar 2017 03:19:17 +0200 Subject: [PATCH] refs #921, use QVersionNumber * CVersion removed * remaining utility functions moved to CBuildConfig * patch version -> micro version (Qt naming) * using classes adjusted --- mkspecs/features/common_pre.prf | 2 +- mkspecs/features/version.pri | 4 +- src/blackconfig/buildconfig.cpp | 61 ++++++-------------------- src/blackconfig/buildconfig.h | 37 +++++----------- src/blackconfig/buildconfig_gen.cpp.in | 13 ++---- src/blackcore/application.cpp | 12 ++--- src/blackcore/vatsim/networkvatlib.cpp | 2 +- src/blackmisc/filelogger.cpp | 10 +++-- src/blackmisc/network/networkutils.cpp | 2 +- 9 files changed, 46 insertions(+), 97 deletions(-) diff --git a/mkspecs/features/common_pre.prf b/mkspecs/features/common_pre.prf index b48818e4f..c66076185 100644 --- a/mkspecs/features/common_pre.prf +++ b/mkspecs/features/common_pre.prf @@ -16,7 +16,7 @@ include(version.pri) !win32 { VER_MAJ = $${BLACK_VER_MAJ} VER_MIN = $${BLACK_VER_MIN} - VER_PAT = $${BLACK_VER_PAT} + VER_MIC = $${BLACK_VER_MIC} VERSION = $${BLACK_VERSION} } diff --git a/mkspecs/features/version.pri b/mkspecs/features/version.pri index fc46468b1..8ca51c9a5 100644 --- a/mkspecs/features/version.pri +++ b/mkspecs/features/version.pri @@ -1,4 +1,4 @@ BLACK_VER_MAJ = 0 BLACK_VER_MIN = 7 -BLACK_VER_PAT = 3 -BLACK_VERSION = $${BLACK_VER_MAJ}.$${BLACK_VER_MIN}.$${BLACK_VER_PAT} +BLACK_VER_MIC = 3 +BLACK_VERSION = $${BLACK_VER_MAJ}.$${BLACK_VER_MIN}.$${BLACK_VER_MIC} diff --git a/src/blackconfig/buildconfig.cpp b/src/blackconfig/buildconfig.cpp index d38857e0a..5fb35efe6 100644 --- a/src/blackconfig/buildconfig.cpp +++ b/src/blackconfig/buildconfig.cpp @@ -375,6 +375,18 @@ namespace BlackConfig return buildDateAndTime; } + const QVersionNumber &CBuildConfig::getVersion() + { + static const QVersionNumber v { versionMajor(), versionMinor(), versionMicro(), buildTimestampAsVersionSegment(buildTimestamp()) }; + return v; + } + + const QString &CBuildConfig::getVersionString() + { + static const QString s(getVersion().toString()); + return s; + } + namespace Private { const QDateTime buildTimestampImpl() @@ -393,41 +405,7 @@ namespace BlackConfig return dt; } - const QString &CVersion::version() - { - static const QString v(versionMajorMinorPatch() + "." + QString::number(buildTimestampAsVersionSegment(CBuildConfig::buildTimestamp()))); - return v; - } - - const QList &CVersion::getVersionParts() - { - static const QList parts(splitIntoVersionParts(version())); - return parts; - } - - bool CVersion::isNewerVersion(const QString &versionString) - { - return isNewerVersion(version(), versionString); - } - - bool CVersion::isNewerVersion(const QString &aVersion, const QString &bVersion) - { - if (aVersion.isEmpty() || bVersion.isEmpty()) { return false; } - if (aVersion == bVersion) { return true; } - - const QList aParts(splitIntoVersionParts(aVersion)); - const QList bParts(splitIntoVersionParts(bVersion)); - for (int i = 0; i < bParts.length(); i++) - { - if (aParts.length() <= i) { return true; } - if (bParts.at(i) > aParts.at(i)) { return true; } - if (bParts.at(i) < aParts.at(i)) { return false; } - // same, try next part - } - return false; - } - - int CVersion::buildTimestampAsVersionSegment(const QDateTime &buildTimestamp) + int CBuildConfig::buildTimestampAsVersionSegment(const QDateTime &buildTimestamp) { if (buildTimestamp.isValid()) { @@ -438,19 +416,6 @@ namespace BlackConfig } return 0; // intentionally 0 and not zero => 0.7.3.0 <- } - - QList CVersion::splitIntoVersionParts(const QString &versionString) - { - const QStringList parts = versionString.split('.'); - QList partsInt; - for (const QString &p : parts) - { - bool ok = false; - int pInt = p.toInt(&ok); - partsInt.append(ok ? pInt : -1); - } - return partsInt; - } } // ns //! \endcond diff --git a/src/blackconfig/buildconfig.h b/src/blackconfig/buildconfig.h index 4046f8a2c..372254771 100644 --- a/src/blackconfig/buildconfig.h +++ b/src/blackconfig/buildconfig.h @@ -15,6 +15,7 @@ #include #include #include +#include namespace BlackConfig { @@ -152,26 +153,25 @@ namespace BlackConfig //! Returns SHA-1 of git HEAD at build time static const QString &gitHeadSha1(); + //! Version info 3 segments e.g. 0.8.3 + static const QString &versionMajorMinorPatch(); // defined in buildconfig_gen.cpp.in + //! Build timestamp static const QDateTime &buildTimestamp(); //! Returns the build date and time as string static const QString &buildDateAndTime(); - }; - //! Version - class CVersion - { - public: - //! Version info 3 segments e.g. 0.8.3 - static const QString &versionMajorMinorPatch(); // defined in buildconfig_gen.cpp.in + //! Version as QVersionNumber + static const QVersionNumber &getVersion(); - //! Version info 4 segments e.g. 0.8.3.12131 - static const QString &version(); + //! Version as QVersionNumber + static const QString &getVersionString(); - //! 4 Parts of the version - static const QList &getVersionParts(); + //! Turns build timestamp into a version number + static int buildTimestampAsVersionSegment(const QDateTime &buildTimestamp); + private: //! Major version static int versionMajor(); // defined in buildconfig_gen.cpp.in @@ -179,20 +179,7 @@ namespace BlackConfig static int versionMinor(); // defined in buildconfig_gen.cpp.in //! Patch version - static int versionPatch(); // defined in buildconfig_gen.cpp.in - - //! Is the given string representing a newer version (newer than "me")? - static bool isNewerVersion(const QString &versionString); - - //! Is the bVersion newer? - static bool isNewerVersion(const QString &aVersion, const QString &bVersion); - - //! Turns build timestamp into a version number - static int buildTimestampAsVersionSegment(const QDateTime &buildTimestamp); - - private: - //! Parts of version string 1.0.2.1234123 - static QList splitIntoVersionParts(const QString &versionString); + static int versionMicro(); // defined in buildconfig_gen.cpp.in }; } diff --git a/src/blackconfig/buildconfig_gen.cpp.in b/src/blackconfig/buildconfig_gen.cpp.in index 8c75ca5af..37db40660 100644 --- a/src/blackconfig/buildconfig_gen.cpp.in +++ b/src/blackconfig/buildconfig_gen.cpp.in @@ -151,13 +151,6 @@ const QString &BlackConfig::CBuildConfig::gitHeadSha1() return gitHeadSha1; } -const QString &BlackConfig::CVersion::versionMajorMinorPatch() -{ - static const QString version(\"$$BLACK_VERSION\"); - Q_ASSERT(!version.isEmpty()); - return version; -} - -int BlackConfig::CVersion::versionMajor() { return $$BLACK_VER_MAJ; } -int BlackConfig::CVersion::versionMinor() { return $$BLACK_VER_MIN; } -int BlackConfig::CVersion::versionPatch() { return $$BLACK_VER_PAT; } +int BlackConfig::CBuildConfig::versionMajor() { return $$BLACK_VER_MAJ; } +int BlackConfig::CBuildConfig::versionMinor() { return $$BLACK_VER_MIN; } +int BlackConfig::CBuildConfig::versionMicro() { return $$BLACK_VER_MIC; } diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index 70d43caf1..8dc1d14ba 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -112,7 +112,7 @@ namespace BlackCore { if (withMetadata) { CApplication::registerMetadata(); } QCoreApplication::setApplicationName(this->m_applicationName); - QCoreApplication::setApplicationVersion(CVersion::version()); + QCoreApplication::setApplicationVersion(CBuildConfig::getVersionString()); this->setObjectName(this->m_applicationName); const QString executable = QFileInfo(QCoreApplication::applicationFilePath()).fileName(); if (executable.startsWith("test")) @@ -184,7 +184,7 @@ namespace BlackCore CApplicationInfo::ApplicationMode mode; if (isRunningInDeveloperEnvironment()) { mode |= CApplicationInfo::Developer; } if (CBuildConfig::isDevBranch()) { mode |= CApplicationInfo::BetaTest; } - return { CApplication::getSwiftApplication(), mode, QCoreApplication::applicationFilePath(), CVersion::version(), CProcessInfo::currentProcess() }; + return { CApplication::getSwiftApplication(), mode, QCoreApplication::applicationFilePath(), CBuildConfig::getVersionString(), CProcessInfo::currentProcess() }; } CApplicationInfoList CApplication::getRunningApplications() @@ -213,7 +213,7 @@ namespace BlackCore const QString &CApplication::getApplicationNameAndVersion() const { - static const QString s(QCoreApplication::instance()->applicationName() + " " + CVersion::version()); + static const QString s(QCoreApplication::instance()->applicationName() + " " + CBuildConfig::getVersionString()); return s; } @@ -296,6 +296,8 @@ namespace BlackCore bool CApplication::start() { + this->m_started = false; // reset + // parse if needed, parsing contains its own error handling if (!this->m_parsed) { @@ -525,7 +527,7 @@ namespace BlackCore QString CApplication::getInfoString(const QString &separator) const { const QString str = - CVersion::version() % + CBuildConfig::getVersionString() % QLatin1Char(' ') % (CBuildConfig::isReleaseBuild() ? QLatin1String("Release build") : QLatin1String("Debug build")) % separator % getEnvironmentInfoString(separator) % @@ -1147,7 +1149,7 @@ namespace BlackCore // Caliper (mini-breakpad-server) annotations annotations["prod"] = executable().toStdString(); - annotations["ver"] = CVersion::version().toStdString(); + annotations["ver"] = CBuildConfig::getVersionString().toStdString(); QDir().mkpath(database); m_crashReportDatabase = CrashReportDatabase::Initialize(qstringToFilePath(database)); diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index 713494dd6..91e2739c0 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -121,7 +121,7 @@ namespace BlackCore if (!success) { serverType = CBuildConfig::isVatsimVersion() ? vatServerVatsim : vatServerLegacyFsd; } m_net.reset(Vat_CreateNetworkSession(serverType, sApp->swiftVersionChar(), - CVersion::versionMajor(), CVersion::versionMinor(), + CBuildConfig::getVersion().majorVersion(), CBuildConfig::getVersion().minorVersion(), "None", clientId, clientKey.toLocal8Bit().constData(), clientCapabilities)); diff --git a/src/blackmisc/filelogger.cpp b/src/blackmisc/filelogger.cpp index 4c5111bf4..2578134eb 100644 --- a/src/blackmisc/filelogger.cpp +++ b/src/blackmisc/filelogger.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -22,9 +23,10 @@ #include #include +using namespace BlackConfig; + namespace BlackMisc { - CFileLogger::CFileLogger(QObject *parent) : CFileLogger(QCoreApplication::applicationName(), QString(), parent) { @@ -117,12 +119,12 @@ namespace BlackMisc void CFileLogger::writeHeaderToFile() { m_stream << "This is " << m_applicationName; - m_stream << " version " << BlackConfig::CVersion::version(); + m_stream << " version " << CBuildConfig::getVersionString(); m_stream << " running on " << QSysInfo::prettyProductName(); m_stream << " " << QSysInfo::currentCpuArchitecture() << endl; - m_stream << "Built from revision " << BlackConfig::CBuildConfig::gitHeadSha1(); - m_stream << " on " << BlackConfig::CBuildConfig::buildTimestamp().toString() << endl; + m_stream << "Built from revision " << CBuildConfig::gitHeadSha1(); + m_stream << " on " << CBuildConfig::buildTimestamp().toString() << endl; m_stream << "Built with Qt " << QT_VERSION_STR; m_stream << " and running with Qt " << qVersion(); diff --git a/src/blackmisc/network/networkutils.cpp b/src/blackmisc/network/networkutils.cpp index c89e2c08a..6a401b7fa 100644 --- a/src/blackmisc/network/networkutils.cpp +++ b/src/blackmisc/network/networkutils.cpp @@ -212,7 +212,7 @@ namespace BlackMisc void CNetworkUtils::setSwiftUserAgent(QNetworkRequest &request) { - static const QString userAgent("swift/" + CVersion::version()); + static const QString userAgent("swift/" + CBuildConfig::getVersionString()); request.setRawHeader("User-Agent", userAgent.toLatin1()); }