mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-24 18:04:14 +08:00
Smart xswiftbus compatibility check based on git commit SHA-1
This is more tolerant that the simple check based on version numbers. Different versions can be compatible if they have the same SHA-1 when considering only those files that can influence xswiftbus.
This commit is contained in:
@@ -77,11 +77,16 @@ using namespace BlackCore;
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
inline const QString &xswiftbusServiceName()
|
const QString &xswiftbusServiceName()
|
||||||
{
|
{
|
||||||
static const QString name("org.swift-project.xswiftbus");
|
static const QString name("org.swift-project.xswiftbus");
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
const QString &commitHash()
|
||||||
|
{
|
||||||
|
static const QString hash(XSWIFTBUS_COMMIT);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace BlackSimPlugin
|
namespace BlackSimPlugin
|
||||||
@@ -1362,11 +1367,12 @@ namespace BlackSimPlugin
|
|||||||
|
|
||||||
const QString swiftVersion = CBuildConfig::getVersionString();
|
const QString swiftVersion = CBuildConfig::getVersionString();
|
||||||
const QString xswiftbusVersion = service.getVersionNumber();
|
const QString xswiftbusVersion = service.getVersionNumber();
|
||||||
|
const QString xswiftbusCommitHash = service.getCommitHash();
|
||||||
if (xswiftbusVersion.isEmpty())
|
if (xswiftbusVersion.isEmpty())
|
||||||
{
|
{
|
||||||
CLogMessage(this).warning(u"Could not determine which version of XSwiftBus is running. Mismatched versions might cause instability.");
|
CLogMessage(this).warning(u"Could not determine which version of XSwiftBus is running. Mismatched versions might cause instability.");
|
||||||
}
|
}
|
||||||
else if (swiftVersion != xswiftbusVersion)
|
else if (commitHash() != xswiftbusCommitHash)
|
||||||
{
|
{
|
||||||
CLogMessage(this).error(u"You are using an incorrect version of XSwiftBus. The version of XSwiftBus (%1) should match the version of swift (%2). Consider upgrading!") << xswiftbusVersion << swiftVersion;
|
CLogMessage(this).error(u"You are using an incorrect version of XSwiftBus. The version of XSwiftBus (%1) should match the version of swift (%2). Consider upgrading!") << xswiftbusVersion << swiftVersion;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ HEADERS += *.h
|
|||||||
DISTFILES += simulatorxplane.json
|
DISTFILES += simulatorxplane.json
|
||||||
DESTDIR = $$DestRoot/bin/plugins/simulator
|
DESTDIR = $$DestRoot/bin/plugins/simulator
|
||||||
|
|
||||||
|
isEmpty(XSWIFTBUS_COMMIT): error(Missing XSWIFTBUS_COMMIT variable)
|
||||||
|
DEFINES += XSWIFTBUS_COMMIT=\\\"$$XSWIFTBUS_COMMIT\\\"
|
||||||
|
|
||||||
win32 {
|
win32 {
|
||||||
dlltarget.path = $$PREFIX/bin/plugins/simulator
|
dlltarget.path = $$PREFIX/bin/plugins/simulator
|
||||||
INSTALLS += dlltarget
|
INSTALLS += dlltarget
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ namespace BlackSimPlugin
|
|||||||
return m_dbusInterface->callDBusRet<QString>(QLatin1String("getVersionNumber"));
|
return m_dbusInterface->callDBusRet<QString>(QLatin1String("getVersionNumber"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CXSwiftBusServiceProxy::getCommitHash()
|
||||||
|
{
|
||||||
|
return m_dbusInterface->callDBusRet<QString>(QLatin1String("getCommitHash"));
|
||||||
|
}
|
||||||
|
|
||||||
void CXSwiftBusServiceProxy::getOwnAircraftSituationDataAsync(XPlaneData *o_xplaneData)
|
void CXSwiftBusServiceProxy::getOwnAircraftSituationDataAsync(XPlaneData *o_xplaneData)
|
||||||
{
|
{
|
||||||
if (!o_xplaneData) { return; }
|
if (!o_xplaneData) { return; }
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ namespace BlackSimPlugin
|
|||||||
//! Get XSwiftBus version number
|
//! Get XSwiftBus version number
|
||||||
QString getVersionNumber();
|
QString getVersionNumber();
|
||||||
|
|
||||||
|
//! Get SHA1 of the last commit that could influence xswiftbus
|
||||||
|
QString getCommitHash();
|
||||||
|
|
||||||
//! Get own aircraft situation data
|
//! Get own aircraft situation data
|
||||||
void getOwnAircraftSituationDataAsync(BlackSimPlugin::XPlane::XPlaneData *o_xplaneData);
|
void getOwnAircraftSituationDataAsync(BlackSimPlugin::XPlane::XPlaneData *o_xplaneData);
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,11 @@ namespace XSwiftBus
|
|||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CService::getCommitHash() const
|
||||||
|
{
|
||||||
|
return XSWIFTBUS_COMMIT;
|
||||||
|
}
|
||||||
|
|
||||||
void CService::addTextMessage(const std::string &text, double red, double green, double blue)
|
void CService::addTextMessage(const std::string &text, double red, double green, double blue)
|
||||||
{
|
{
|
||||||
if (text.empty()) { return; }
|
if (text.empty()) { return; }
|
||||||
@@ -253,6 +258,13 @@ namespace XSwiftBus
|
|||||||
sendDBusReply(sender, serial, getVersionNumber());
|
sendDBusReply(sender, serial, getVersionNumber());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else if (message.getMethodName() == "getCommitHash")
|
||||||
|
{
|
||||||
|
queueDBusCall([ = ]()
|
||||||
|
{
|
||||||
|
sendDBusReply(sender, serial, getCommitHash());
|
||||||
|
});
|
||||||
|
}
|
||||||
else if (message.getMethodName() == "addTextMessage")
|
else if (message.getMethodName() == "addTextMessage")
|
||||||
{
|
{
|
||||||
maybeSendEmptyDBusReply(wantsReply, sender, serial);
|
maybeSendEmptyDBusReply(wantsReply, sender, serial);
|
||||||
|
|||||||
@@ -62,6 +62,9 @@ namespace XSwiftBus
|
|||||||
//! Returns the XSwiftBus version number
|
//! Returns the XSwiftBus version number
|
||||||
std::string getVersionNumber() const;
|
std::string getVersionNumber() const;
|
||||||
|
|
||||||
|
//! Returns the SHA1 of the last commit that could influence xswiftbus.
|
||||||
|
std::string getCommitHash() const;
|
||||||
|
|
||||||
//! Add a text message to the on-screen display, with RGB components in the range [0,1]
|
//! Add a text message to the on-screen display, with RGB components in the range [0,1]
|
||||||
void addTextMessage(const std::string &text, double red, double green, double blue);
|
void addTextMessage(const std::string &text, double red, double green, double blue);
|
||||||
|
|
||||||
|
|||||||
10
src/xswiftbus/version.pri
Normal file
10
src/xswiftbus/version.pri
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# this file is included by swift.pro in the project root
|
||||||
|
|
||||||
|
XSWIFTBUS_DEPENDENTS = $$SourceRoot/src/xswiftbus \
|
||||||
|
$$SourceRoot/src/blackmisc/simulation/xplane/qtfreeutils.* \
|
||||||
|
$$SourceRoot/src/blackmisc/simulation/settings/xswiftbussettingsqtfree.*
|
||||||
|
|
||||||
|
XSWIFTBUS_COMMIT = $$system(git log -n 1 --format=%h -- $$XSWIFTBUS_DEPENDENTS)
|
||||||
|
|
||||||
|
# make the variable available in other files without needing to be included
|
||||||
|
cache(XSWIFTBUS_COMMIT)
|
||||||
@@ -86,6 +86,9 @@ isEmpty(GIT_BIN) {
|
|||||||
DEFINES += XSWIFTBUS_VERSION=\\\"$$swiftConfig(version.full)\\\"
|
DEFINES += XSWIFTBUS_VERSION=\\\"$$swiftConfig(version.full)\\\"
|
||||||
DEFINES += GIT_COMMIT_TS=\\\"$$GIT_COMMIT_TS\\\"
|
DEFINES += GIT_COMMIT_TS=\\\"$$GIT_COMMIT_TS\\\"
|
||||||
|
|
||||||
|
isEmpty(XSWIFTBUS_COMMIT): error(Missing XSWIFTBUS_COMMIT variable)
|
||||||
|
DEFINES += XSWIFTBUS_COMMIT=\\\"$$XSWIFTBUS_COMMIT\\\"
|
||||||
|
|
||||||
# X-Plane plugins must follow a prescribed filename and directory structure.
|
# X-Plane plugins must follow a prescribed filename and directory structure.
|
||||||
TARGET_EXT = .xpl
|
TARGET_EXT = .xpl
|
||||||
win32:TARGET = win
|
win32:TARGET = win
|
||||||
|
|||||||
Reference in New Issue
Block a user