Handle VxWorks in QSysInfo
Right now VxWorks is not recognized as a known platform in QSysInfo. This leads to issues with classes that depend on it to properly handle the OS specific functionality (like QFileSelector). Solve the issue by adding vxworks-specific implementation of kernelVersion, productType and productVersion. Task-number: QTBUG-115777 Pick-to: 6.7 Change-Id: Ib544d19f604f3f2d1f088f6160dd210cd6743717 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 65b5debe3a22ff47cf77dd25cf1ec85582ca0f6c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
9e5759cd2a
commit
56ec3aa56a
@ -709,7 +709,8 @@ QString QSysInfo::kernelType()
|
|||||||
Returns the release version of the operating system kernel. On Windows, it
|
Returns the release version of the operating system kernel. On Windows, it
|
||||||
returns the version of the NT kernel. On Unix systems, including
|
returns the version of the NT kernel. On Unix systems, including
|
||||||
Android and \macos, it returns the same as the \c{uname -r}
|
Android and \macos, it returns the same as the \c{uname -r}
|
||||||
command would return.
|
command would return. On VxWorks, it returns the numeric part of the string
|
||||||
|
reported by kernelVersion().
|
||||||
|
|
||||||
If the version could not be determined, this function may return an empty
|
If the version could not be determined, this function may return an empty
|
||||||
string.
|
string.
|
||||||
@ -724,8 +725,17 @@ QString QSysInfo::kernelVersion()
|
|||||||
osver.majorVersion(), osver.minorVersion(), osver.microVersion());
|
osver.majorVersion(), osver.minorVersion(), osver.microVersion());
|
||||||
#else
|
#else
|
||||||
struct utsname u;
|
struct utsname u;
|
||||||
if (uname(&u) == 0)
|
if (uname(&u) == 0) {
|
||||||
|
# ifdef Q_OS_VXWORKS
|
||||||
|
// The string follows the pattern "Core Kernel version: w.x.y.z"
|
||||||
|
auto versionStr = QByteArrayView(u.kernelversion);
|
||||||
|
if (auto lastSpace = versionStr.lastIndexOf(' '); lastSpace != -1) {
|
||||||
|
return QString::fromLatin1(versionStr.sliced(lastSpace + 1));
|
||||||
|
}
|
||||||
|
# else
|
||||||
return QString::fromLatin1(u.release);
|
return QString::fromLatin1(u.release);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
return QString();
|
return QString();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -762,6 +772,8 @@ QString QSysInfo::kernelVersion()
|
|||||||
|
|
||||||
\b{Windows note}: this function return "windows"
|
\b{Windows note}: this function return "windows"
|
||||||
|
|
||||||
|
\b{VxWorks note}: this function return "vxworks"
|
||||||
|
|
||||||
For other Unix-type systems, this function usually returns "unknown".
|
For other Unix-type systems, this function usually returns "unknown".
|
||||||
|
|
||||||
\sa QFileSelector, kernelType(), kernelVersion(), productVersion(), prettyProductName()
|
\sa QFileSelector, kernelType(), kernelVersion(), productVersion(), prettyProductName()
|
||||||
@ -792,6 +804,8 @@ QString QSysInfo::productType()
|
|||||||
return QStringLiteral("darwin");
|
return QStringLiteral("darwin");
|
||||||
#elif defined(Q_OS_WASM)
|
#elif defined(Q_OS_WASM)
|
||||||
return QStringLiteral("wasm");
|
return QStringLiteral("wasm");
|
||||||
|
#elif defined(Q_OS_VXWORKS)
|
||||||
|
return QStringLiteral("vxworks");
|
||||||
|
|
||||||
#elif defined(USE_ETC_OS_RELEASE) // Q_OS_UNIX
|
#elif defined(USE_ETC_OS_RELEASE) // Q_OS_UNIX
|
||||||
QUnixOSVersion unixOsVersion;
|
QUnixOSVersion unixOsVersion;
|
||||||
@ -808,7 +822,7 @@ QString QSysInfo::productType()
|
|||||||
Returns the product version of the operating system in string form. If the
|
Returns the product version of the operating system in string form. If the
|
||||||
version could not be determined, this function returns "unknown".
|
version could not be determined, this function returns "unknown".
|
||||||
|
|
||||||
It will return the Android, iOS, \macos, Windows full-product
|
It will return the Android, iOS, \macos, VxWorks, Windows full-product
|
||||||
versions on those systems.
|
versions on those systems.
|
||||||
|
|
||||||
Typical returned values are (note: list not exhaustive):
|
Typical returned values are (note: list not exhaustive):
|
||||||
@ -821,6 +835,7 @@ QString QSysInfo::productType()
|
|||||||
\li "8.6" (watchOS 8.6)
|
\li "8.6" (watchOS 8.6)
|
||||||
\li "11" (Windows 11)
|
\li "11" (Windows 11)
|
||||||
\li "Server 2022" (Windows Server 2022)
|
\li "Server 2022" (Windows Server 2022)
|
||||||
|
\li "24.03" (VxWorks 7 - 24.03)
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
On Linux systems, it will try to determine the distribution version and will
|
On Linux systems, it will try to determine the distribution version and will
|
||||||
@ -849,6 +864,12 @@ QString QSysInfo::productVersion()
|
|||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
|
|
||||||
|
#elif defined(Q_OS_VXWORKS)
|
||||||
|
utsname u;
|
||||||
|
if (uname(&u) == 0)
|
||||||
|
return QString::fromLatin1(u.releaseversion);
|
||||||
|
// fall through
|
||||||
|
|
||||||
#elif defined(USE_ETC_OS_RELEASE) // Q_OS_UNIX
|
#elif defined(USE_ETC_OS_RELEASE) // Q_OS_UNIX
|
||||||
QUnixOSVersion unixOsVersion;
|
QUnixOSVersion unixOsVersion;
|
||||||
findUnixOsVersion(unixOsVersion);
|
findUnixOsVersion(unixOsVersion);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user