@@ -197,8 +197,72 @@ jobs:
197197 ref : ${{ inputs.ci_tools_version }}
198198 repository : ${{ inputs.override_ci_tools_repository }}
199199
200+ - name : Setup Go
201+ uses : actions/setup-go@v5
202+ with :
203+ go-version-file : extension-ci-tools/scripts/extbuild/go.mod
204+ cache : true
205+ cache-dependency-path : extension-ci-tools/scripts/extbuild/go.sum
206+
207+ - name : Dump event path file
208+ run : |
209+ echo "$GITHUB_EVENT_PATH"
210+ cat "$GITHUB_EVENT_PATH"
211+
212+ - name : Compute extension build matrix
213+ continue-on-error : true
214+ run : |
215+ make -C extension-ci-tools/scripts/extbuild test build -sj4
216+ mkdir -p build
217+ extension-ci-tools/scripts/extbuild/build/extbuild matrix \
218+ --input extension-ci-tools/config/distribution_matrix.json \
219+ --exclude "${{ inputs.exclude_archs }}" \
220+ --opt-in "${{ inputs.opt_in_archs }}" \
221+ --reduced-ci-mode "${{ inputs.reduced_ci_mode }}" \
222+ --out build/extbuild_matrix.env
223+ echo "extbuild matrix output:"
224+ cat build/extbuild_matrix.env
225+
226+ - name : Compare extbuild vs python matrices
227+ continue-on-error : true
228+ run : |
229+ mkdir -p build/python_ref build/extbuild_ref
230+
231+ python3 extension-ci-tools/scripts/modify_distribution_matrix.py --input extension-ci-tools/config/distribution_matrix.json --select_os linux --output build/python_ref/linux_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
232+ python3 extension-ci-tools/scripts/modify_distribution_matrix.py --input extension-ci-tools/config/distribution_matrix.json --select_os osx --output build/python_ref/osx_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
233+ python3 extension-ci-tools/scripts/modify_distribution_matrix.py --input extension-ci-tools/config/distribution_matrix.json --select_os windows --output build/python_ref/windows_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
234+ python3 extension-ci-tools/scripts/modify_distribution_matrix.py --input extension-ci-tools/config/distribution_matrix.json --select_os wasm --output build/python_ref/wasm_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
235+
236+ for platform in linux osx windows wasm; do
237+ grep "^${platform}_matrix=" build/extbuild_matrix.env | sed "s/^${platform}_matrix=//" > "build/extbuild_ref/${platform}_matrix.json"
238+ done
239+
240+ has_diff=0
241+ for platform in linux osx windows wasm; do
242+ echo "=== ${platform} matrix diff (extbuild vs python) ==="
243+ if ! diff -u \
244+ <(jq -S 'walk(if type == "object" then del(.opt_in, .run_in_reduced_ci_mode) else . end)' "build/extbuild_ref/${platform}_matrix.json") \
245+ <(jq -S 'walk(if type == "object" then del(.opt_in, .run_in_reduced_ci_mode) else . end)' "build/python_ref/${platform}_matrix.json"); then
246+ has_diff=1
247+ else
248+ echo "No differences."
249+ fi
250+ echo
251+ done
252+
253+ if [ "$has_diff" -ne 0 ]; then
254+ echo "Matrix differences detected."
255+ echo "::warning title=Matrix differences detected::extbuild and python matrix outputs differ. See diff logs in this step."
256+ {
257+ echo "### Matrix differences detected"
258+ echo "extbuild and python matrix outputs differ. See the diff logs in this step."
259+ } >> "$GITHUB_STEP_SUMMARY"
260+ exit 1
261+ fi
262+
200263 - id : parse-matrices
201264 run : |
265+ rm -rf build
202266 mkdir build
203267 python3 ${{ inputs.matrix_parse_script }} --input extension-ci-tools/config/distribution_matrix.json --select_os linux --output build/linux_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
204268 python3 ${{ inputs.matrix_parse_script }} --input extension-ci-tools/config/distribution_matrix.json --select_os osx --output build/osx_matrix.json --exclude "${{ inputs.exclude_archs }}" --opt_in "${{ inputs.opt_in_archs }}" --pretty --reduced_ci_mode ${{ inputs.reduced_ci_mode }}
0 commit comments