From da6d9ffb4bedc8c39e71db47b2ee7ddb6490cad1 Mon Sep 17 00:00:00 2001 From: Jerry Ma Date: Tue, 2 Apr 2024 15:05:49 +0800 Subject: [PATCH] Cmake version check (#400) * add cmake version checker for doctor * fix linux distro checker message --- src/SPC/doctor/item/LinuxToolCheckList.php | 16 ++++++++++++++++ src/SPC/doctor/item/OSCheckList.php | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/SPC/doctor/item/LinuxToolCheckList.php b/src/SPC/doctor/item/LinuxToolCheckList.php index f81b4a13..a8665e69 100644 --- a/src/SPC/doctor/item/LinuxToolCheckList.php +++ b/src/SPC/doctor/item/LinuxToolCheckList.php @@ -74,6 +74,22 @@ class LinuxToolCheckList return CheckResult::ok(); } + #[AsCheckItem('if cmake version >= 3.18', limit_os: 'Linux')] + public function checkCMakeVersion(): ?CheckResult + { + $check_cmd = 'cmake --version'; + $pattern = '/cmake version (.*)/m'; + $out = shell()->execWithResult($check_cmd, false)[1][0]; + if (preg_match($pattern, $out, $match)) { + $ver = $match[1]; + if (version_compare($ver, '3.18.0') <= 0) { + return CheckResult::fail('cmake version is too low (' . $ver . '), please update it manually!'); + } + return CheckResult::ok($match[1]); + } + return CheckResult::fail('Failed to get cmake version'); + } + /** @noinspection PhpUnused */ #[AsCheckItem('if necessary linux headers are installed', limit_os: 'Linux')] public function checkSystemOSPackages(): ?CheckResult diff --git a/src/SPC/doctor/item/OSCheckList.php b/src/SPC/doctor/item/OSCheckList.php index eef30f60..7975dde9 100644 --- a/src/SPC/doctor/item/OSCheckList.php +++ b/src/SPC/doctor/item/OSCheckList.php @@ -20,7 +20,7 @@ class OSCheckList return CheckResult::fail('Current OS is not supported: ' . PHP_OS_FAMILY); } $distro = PHP_OS_FAMILY === 'Linux' ? (' ' . SystemUtil::getOSRelease()['dist']) : ''; - $known_distro = PHP_OS_FAMILY === 'Linux' && in_array(SystemUtil::getOSRelease()['dist'], SystemUtil::getSupportedDistros()); + $known_distro = PHP_OS_FAMILY !== 'Linux' || in_array(SystemUtil::getOSRelease()['dist'], SystemUtil::getSupportedDistros()); return CheckResult::ok(PHP_OS_FAMILY . ' ' . php_uname('m') . $distro . ', supported' . ($known_distro ? '' : ' (but not tested on this distro)')); } }