|
17 | 17 | #include "utils/engine_matcher_utils.h" |
18 | 18 | #include "utils/file_manager_utils.h" |
19 | 19 | #include "utils/github_release_utils.h" |
| 20 | +#include "utils/hardware/os_info.h" |
20 | 21 | #include "utils/logging_utils.h" |
21 | 22 | #include "utils/normalize_engine.h" |
22 | 23 | #include "utils/result.hpp" |
@@ -528,16 +529,59 @@ EngineService::GetEngineVariants(const std::string& engine, |
528 | 529 |
|
529 | 530 | std::vector<EngineVariant> compatible_variants; |
530 | 531 | std::vector<github_release_utils::GitHubAsset> assets; |
| 532 | + |
| 533 | + auto get_os_major = []() -> int { |
| 534 | + auto os_info = cortex::hw::GetOSInfo(); |
| 535 | + // Get os major version |
| 536 | + size_t dot_pos = os_info.version.find_first_of("."); |
| 537 | + if (dot_pos != std::string::npos) { |
| 538 | + try { |
| 539 | + return std::stoi(os_info.version.substr(0, dot_pos)); |
| 540 | + } catch (const std::exception& e) { |
| 541 | + return 0; |
| 542 | + } |
| 543 | + } else { |
| 544 | + // No version found |
| 545 | + return 0; |
| 546 | + } |
| 547 | + }; |
| 548 | + |
531 | 549 | if (engine_release_menlo.has_value()) { |
532 | | - assets.insert(std::end(assets), |
533 | | - std::begin(engine_release_menlo.value().assets), |
534 | | - std::end(engine_release_menlo.value().assets)); |
| 550 | + // In case of macos, if os version is 12, we get binary from menlo |
| 551 | + std::copy_if( |
| 552 | + engine_release_menlo.value().assets.begin(), |
| 553 | + engine_release_menlo.value().assets.end(), std::back_inserter(assets), |
| 554 | + [get_os_major](const github_release_utils::GitHubAsset& assets) { |
| 555 | +#if defined(__APPLE__) && defined(__MACH__) |
| 556 | + if (get_os_major() == 12 && |
| 557 | + assets.name.find(kMacOs) != std::string::npos) { |
| 558 | + return true; |
| 559 | + } |
| 560 | + return false; |
| 561 | +#else |
| 562 | + return true; |
| 563 | +#endif |
| 564 | + }); |
535 | 565 | } |
| 566 | + |
536 | 567 | if (engine_release_ggml.has_value()) { |
537 | | - assets.insert(std::end(assets), |
538 | | - std::begin(engine_release_ggml.value().assets), |
539 | | - std::end(engine_release_ggml.value().assets)); |
| 568 | + // In case of macos, if os version is 12, we get binary from menlo |
| 569 | + std::copy_if( |
| 570 | + engine_release_ggml.value().assets.begin(), |
| 571 | + engine_release_ggml.value().assets.end(), std::back_inserter(assets), |
| 572 | + [get_os_major](const github_release_utils::GitHubAsset& assets) { |
| 573 | +#if defined(__APPLE__) && defined(__MACH__) |
| 574 | + if (get_os_major() > 12 && |
| 575 | + assets.name.find(kMacOs) != std::string::npos) { |
| 576 | + return true; |
| 577 | + } |
| 578 | + return false; |
| 579 | +#else |
| 580 | + return true; |
| 581 | +#endif |
| 582 | + }); |
540 | 583 | } |
| 584 | + |
541 | 585 | for (const auto& variant : assets) { |
542 | 586 | CTL_INF("content_type: " << variant.content_type |
543 | 587 | << ", name: " << variant.name); |
|
0 commit comments