Add exclude for gen-ext-test-matrix

This commit is contained in:
crazywhalecc
2026-05-08 20:54:41 +08:00
parent 5529e66a61
commit be039802c0

View File

@@ -11,13 +11,20 @@ use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand('dev:gen-ext-test-matrix', 'Generate GitHub Actions extension test matrix JSON', [], true)] #[AsCommand('dev:gen-ext-test-matrix', 'Generate GitHub Actions extension test matrix JSON', [], true)]
class GenExtTestMatrixCommand extends BaseCommand class GenExtTestMatrixCommand extends BaseCommand
{ {
private const BUILD_TARGETS = '--build-cli --build-cgi --build-micro --dl-parallel=10'; private const string BUILD_TARGETS = '--build-cli --build-cgi --build-micro --dl-parallel=10';
private const OS_RUNNERS = [ private const array OS_RUNNERS = [
'linux' => ['arch' => 'x86_64', 'runner' => 'ubuntu-latest', 'os_key' => 'Linux'], 'linux' => ['arch' => 'x86_64', 'runner' => 'ubuntu-latest', 'os_key' => 'Linux'],
'windows' => ['arch' => 'x86_64', 'runner' => 'windows-2025', 'os_key' => 'Windows'], 'windows' => ['arch' => 'x86_64', 'runner' => 'windows-2025', 'os_key' => 'Windows'],
]; ];
/**
* Extensions excluded from specific OS matrix entries.
*/
private const array OS_EXCLUDE = [
'linux' => ['ext-glfw'],
];
protected bool $no_motd = true; protected bool $no_motd = true;
public function handle(): int public function handle(): int
@@ -52,8 +59,9 @@ class GenExtTestMatrixCommand extends BaseCommand
$os_key = $os_info['os_key']; $os_key = $os_info['os_key'];
// Filter by OS support // Filter by OS support
$os_regular = array_filter($all_regular, fn ($c) => $this->supportsOS($c, $os_key)); $os_exclude = array_fill_keys(self::OS_EXCLUDE[$os] ?? [], true);
$os_virtual = array_filter($all_virtual, fn ($c) => $this->supportsOS($c, $os_key)); $os_regular = array_filter($all_regular, fn ($c, $k) => $this->supportsOS($c, $os_key) && !isset($os_exclude[$k]), ARRAY_FILTER_USE_BOTH);
$os_virtual = array_filter($all_virtual, fn ($c, $k) => $this->supportsOS($c, $os_key) && !isset($os_exclude[$k]), ARRAY_FILTER_USE_BOTH);
// Pool: all ext-* names available on this OS (regular + virtual) // Pool: all ext-* names available on this OS (regular + virtual)
$pool_set = array_fill_keys( $pool_set = array_fill_keys(