11<?php 
22
3- const  BRANCHES  = [
4-     ['name '  => 'master ' , 'ref '  => 'master ' , 'version '  => ['major '  => 8 , 'minor '  => 5 ]],
5-     ['name '  => 'PHP-8.4 ' , 'ref '  => 'PHP-8.4 ' , 'version '  => ['major '  => 8 , 'minor '  => 4 ]],
6-     ['name '  => 'PHP-8.3 ' , 'ref '  => 'PHP-8.3 ' , 'version '  => ['major '  => 8 , 'minor '  => 3 ]],
7-     ['name '  => 'PHP-8.2 ' , 'ref '  => 'PHP-8.2 ' , 'version '  => ['major '  => 8 , 'minor '  => 2 ]],
8-     ['name '  => 'PHP-8.1 ' , 'ref '  => 'PHP-8.1 ' , 'version '  => ['major '  => 8 , 'minor '  => 1 ]],
9- ];
3+ const  BRANCHES  = ['master ' , 'PHP-8.4 ' , 'PHP-8.3 ' , 'PHP-8.2 ' , 'PHP-8.1 ' ];
104
115function  get_branch_commit_cache_file_path (): string  {
126    return  dirname (__DIR__ ) . '/branch-commit-cache.json ' ;
@@ -21,137 +15,21 @@ function get_branches() {
2115
2216    $ changed_branches  = [];
2317    foreach  (BRANCHES  as  $ branch ) {
24-         $ previous_commit_hash  = $ branch_commit_map [$ branch[ ' ref ' ] ] ?? null ;
25-         $ current_commit_hash  = trim (shell_exec ('git rev-parse origin/ '  . $ branch[ ' ref ' ] ));
18+         $ previous_commit_hash  = $ branch_commit_map [$ branch ] ?? null ;
19+         $ current_commit_hash  = trim (shell_exec ('git rev-parse origin/ '  . $ branch ));
2620
2721        if  ($ previous_commit_hash  !== $ current_commit_hash ) {
2822            $ changed_branches [] = $ branch ;
2923        }
3024
31-         $ branch_commit_map [$ branch[ ' ref ' ] ] = $ current_commit_hash ;
25+         $ branch_commit_map [$ branch ] = $ current_commit_hash ;
3226    }
3327
3428    file_put_contents ($ branch_commit_cache_file , json_encode ($ branch_commit_map ));
3529
3630    return  $ changed_branches ;
3731}
3832
39- function  get_matrix_include (array  $ branches ) {
40-     $ jobs  = [];
41-     foreach  ($ branches  as  $ branch ) {
42-         $ jobs [] = [
43-             'name '  => '_ASAN_UBSAN ' ,
44-             'branch '  => $ branch ,
45-             'debug '  => true ,
46-             'zts '  => true ,
47-             'configuration_parameters '  => "CFLAGS='-fsanitize=undefined,address -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address' " ,
48-             'run_tests_parameters '  => '--asan ' ,
49-             'test_function_jit '  => false ,
50-             'asan '  => true ,
51-         ];
52-         $ jobs [] = [
53-             'name '  => '_REPEAT ' ,
54-             'branch '  => $ branch ,
55-             'debug '  => true ,
56-             'zts '  => false ,
57-             'run_tests_parameters '  => '--repeat 2 ' ,
58-             'timeout_minutes '  => 360 ,
59-             'test_function_jit '  => true ,
60-             'asan '  => false ,
61-         ];
62-         $ jobs [] = [
63-             'name '  => '_VARIATION ' ,
64-             'branch '  => $ branch ,
65-             'debug '  => true ,
66-             'zts '  => true ,
67-             'configuration_parameters '  => "CFLAGS='-DZEND_RC_DEBUG=1 -DPROFITABILITY_CHECKS=0 -DZEND_VERIFY_FUNC_INFO=1 -DZEND_VERIFY_TYPE_INFERENCE' " ,
68-                 'run_tests_parameters '  => '-d zend_test.observer.enabled=1 -d zend_test.observer.show_output=0 ' ,
69-             'timeout_minutes '  => 360 ,
70-             'test_function_jit '  => true ,
71-             'asan '  => false ,
72-         ];
73-     }
74-     return  $ jobs ;
75- }
76- 
77- function  get_windows_matrix_include (array  $ branches ) {
78-     $ jobs  = [];
79-     foreach  ($ branches  as  $ branch ) {
80-         $ jobs [] = [
81-             'branch '  => $ branch ,
82-             'x64 '  => true ,
83-             'zts '  => true ,
84-             'opcache '  => true ,
85-         ];
86-         $ jobs [] = [
87-             'branch '  => $ branch ,
88-             'x64 '  => false ,
89-             'zts '  => false ,
90-             'opcache '  => false ,
91-         ];
92-     }
93-     return  $ jobs ;
94- }
95- 
96- function  get_macos_matrix_include (array  $ branches ) {
97-     $ jobs  = [];
98-     foreach  ($ branches  as  $ branch ) {
99-         foreach ([true , false ] as  $ debug ) {
100-             foreach ([true , false ] as  $ zts ) {
101-                 $ jobs [] = [
102-                     'branch '  => $ branch ,
103-                     'debug '  => $ debug ,
104-                     'zts '  => $ zts ,
105-                     'os '  => '13 ' ,
106-                     'arch '  => 'X64 ' ,
107-                     'test_jit '  => true ,
108-                 ];
109-                 if  ($ branch ['version ' ]['minor ' ] >= 4  || $ branch ['version ' ]['major ' ] >= 9 ) {
110-                     $ jobs [] = [
111-                         'branch '  => $ branch ,
112-                         'debug '  => $ debug ,
113-                         'zts '  => $ zts ,
114-                         'os '  => '14 ' ,
115-                         'arch '  => 'ARM64 ' ,
116-                         'test_jit '  => !$ zts ,
117-                     ];
118-                 }
119-             }
120-         }
121-     }
122-     return  $ jobs ;
123- }
124- 
125- function  get_alpine_matrix_include (array  $ branches ) {
126-     $ jobs  = [];
127-     foreach  ($ branches  as  $ branch ) {
128-         if  ([$ branch ['version ' ]['major ' ], $ branch ['version ' ]['minor ' ]] < [8 , 4 ]) {
129-             continue ;
130-         }
131-         $ jobs [] = [
132-             'name '  => '_ASAN_UBSAN ' ,
133-             'branch '  => $ branch ,
134-             'debug '  => true ,
135-             'zts '  => true ,
136-             'asan '  => true ,
137-             'test_jit '  => true ,
138-             'configuration_parameters '  => "CFLAGS='-fsanitize=undefined,address -fno-sanitize=function -DZEND_TRACK_ARENA_ALLOC' LDFLAGS='-fsanitize=undefined,address -fno-sanitize=function' CC=clang-17 CXX=clang++-17 " ,
139-             'run_tests_parameters '  => '--asan -x ' ,
140-         ];
141-     }
142-     return  $ jobs ;
143- }
144- 
145- function  get_current_version (): array  {
146-     $ file  = dirname (__DIR__ ) . '/main/php_version.h ' ;
147-     $ content  = file_get_contents ($ file );
148-     preg_match ('(^#define PHP_MAJOR_VERSION (?<num>\d+)$)m ' , $ content , $ matches );
149-     $ major  = $ matches ['num ' ];
150-     preg_match ('(^#define PHP_MINOR_VERSION (?<num>\d+)$)m ' , $ content , $ matches );
151-     $ minor  = $ matches ['num ' ];
152-     return  ['major '  => $ major , 'minor '  => $ minor ];
153- }
154- 
15533$ trigger  = $ argv [1 ] ?? 'schedule ' ;
15634$ attempt  = (int ) ($ argv [2 ] ?? 1 );
15735$ monday  = date ('w ' , time ()) === '1 ' ;
@@ -162,19 +40,8 @@ function get_current_version(): array {
16240    @unlink (get_branch_commit_cache_file_path ());
16341}
16442$ branch  = $ argv [3 ] ?? 'master ' ;
165- 
166- $ branches  = $ branch  === 'master ' 
167-     ? get_branches ()
168-     : [['name '  => strtoupper ($ branch ), 'ref '  => $ branch , 'version '  => get_current_version ()]];
169- $ matrix_include  = get_matrix_include ($ branches );
170- $ windows_matrix_include  = get_windows_matrix_include ($ branches );
171- $ macos_matrix_include  = get_macos_matrix_include ($ branches );
172- $ alpine_matrix_include  = get_alpine_matrix_include ($ branches );
43+ $ branches  = $ branch  === 'master '  ? get_branches () : [$ branch ];
17344
17445$ f  = fopen (getenv ('GITHUB_OUTPUT ' ), 'a ' );
17546fwrite ($ f , 'branches= '  . json_encode ($ branches , JSON_UNESCAPED_SLASHES ) . "\n" );
176- fwrite ($ f , 'matrix-include= '  . json_encode ($ matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
177- fwrite ($ f , 'windows-matrix-include= '  . json_encode ($ windows_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
178- fwrite ($ f , 'macos-matrix-include= '  . json_encode ($ macos_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
179- fwrite ($ f , 'alpine-matrix-include= '  . json_encode ($ alpine_matrix_include , JSON_UNESCAPED_SLASHES ) . "\n" );
18047fclose ($ f );
0 commit comments