From 066cd9ea40c6f5bef20159c9dc1094c6055fec59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Srinivas=20Reddy=20Thatiparthy=20=28=E0=B0=A4=E0=B0=BE?= =?UTF-8?q?=E0=B0=9F=E0=B0=BF=E0=B0=AA=E0=B0=B0=E0=B1=8D=E0=B0=A4=E0=B0=BF?= =?UTF-8?q?=20=E0=B0=B6=E0=B1=8D=E0=B0=B0=E0=B1=80=E0=B0=A8=E0=B0=BF?= =?UTF-8?q?=E0=B0=B5=E0=B0=BE=E0=B0=B8=E0=B1=8D=20=20=E0=B0=B0=E0=B1=86?= =?UTF-8?q?=E0=B0=A1=E0=B1=8D=E0=B0=A1=E0=B0=BF=29?= Date: Wed, 12 Feb 2025 07:23:29 +0530 Subject: [PATCH] gh-128446: Skip Windows CI for Unix build system changes (GH-128450) (cherry picked from commit b05fa90b21dd01bb836285cdd41920320b09e681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Srinivas Reddy Thatiparthy (తాటిపర్తి శ్రీనివాస్ రెడ్డి) Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com> Authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com> --- .github/workflows/build.yml | 10 ++++++++-- .github/workflows/reusable-context.yml | 4 ++++ Tools/build/compute-changes.py | 25 +++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a6331a1712776..fade255e43708d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -197,7 +197,7 @@ jobs: Windows ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} needs: build-context - if: fromJSON(needs.build-context.outputs.run-tests) + if: fromJSON(needs.build-context.outputs.run-windows-tests) strategy: fail-fast: false matrix: @@ -640,13 +640,19 @@ jobs: build_ubuntu, build_ubuntu_ssltests, build_wasi, - build_windows, build_asan, build_tsan, test_hypothesis, ' || '' }} + ${{ + !fromJSON(needs.build-context.outputs.run-windows-tests) + && ' + build_windows, + ' + || '' + }} ${{ !fromJSON(needs.build-context.outputs.run-ci-fuzz) && ' diff --git a/.github/workflows/reusable-context.yml b/.github/workflows/reusable-context.yml index fa4df6f29711db..73e036a146f5d4 100644 --- a/.github/workflows/reusable-context.yml +++ b/.github/workflows/reusable-context.yml @@ -26,6 +26,9 @@ on: # yamllint disable-line rule:truthy run-tests: description: Whether to run the regular tests value: ${{ jobs.compute-changes.outputs.run-tests }} # bool + run-windows-tests: + description: Whether to run the Windows tests + value: ${{ jobs.compute-changes.outputs.run-windows-tests }} # bool run-windows-msi: description: Whether to run the MSI installer smoke tests value: ${{ jobs.compute-changes.outputs.run-windows-msi }} # bool @@ -44,6 +47,7 @@ jobs: run-docs: ${{ steps.changes.outputs.run-docs }} run-tests: ${{ steps.changes.outputs.run-tests }} run-windows-msi: ${{ steps.changes.outputs.run-windows-msi }} + run-windows-tests: ${{ steps.changes.outputs.run-windows-tests }} steps: - name: Set up Python uses: actions/setup-python@v5 diff --git a/Tools/build/compute-changes.py b/Tools/build/compute-changes.py index 105ba58cc9d941..86c447dd4f64e0 100644 --- a/Tools/build/compute-changes.py +++ b/Tools/build/compute-changes.py @@ -21,11 +21,27 @@ GITHUB_DEFAULT_BRANCH = os.environ["GITHUB_DEFAULT_BRANCH"] GITHUB_CODEOWNERS_PATH = Path(".github/CODEOWNERS") GITHUB_WORKFLOWS_PATH = Path(".github/workflows") + CONFIGURATION_FILE_NAMES = frozenset({ ".pre-commit-config.yaml", ".ruff.toml", "mypy.ini", }) +UNIX_BUILD_SYSTEM_FILE_NAMES = frozenset({ + Path("aclocal.m4"), + Path("config.guess"), + Path("config.sub"), + Path("configure"), + Path("configure.ac"), + Path("install-sh"), + Path("Makefile.pre.in"), + Path("Modules/makesetup"), + Path("Modules/Setup"), + Path("Modules/Setup.bootstrap.in"), + Path("Modules/Setup.stdlib.in"), + Path("Tools/build/regen-configure.sh"), +}) + SUFFIXES_C_OR_CPP = frozenset({".c", ".h", ".cpp"}) SUFFIXES_DOCUMENTATION = frozenset({".rst", ".md"}) @@ -36,6 +52,7 @@ class Outputs: run_docs: bool = False run_tests: bool = False run_windows_msi: bool = False + run_windows_tests: bool = False def compute_changes() -> None: @@ -53,6 +70,8 @@ def compute_changes() -> None: if outputs.run_tests: print("Run tests") + if outputs.run_windows_tests: + print("Run Windows tests") if outputs.run_ci_fuzz: print("Run CIFuzz tests") @@ -98,6 +117,7 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: run_tests = False run_ci_fuzz = False run_docs = False + run_windows_tests = False run_windows_msi = False for file in changed_files: @@ -120,6 +140,9 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: ): run_tests = True + if file not in UNIX_BUILD_SYSTEM_FILE_NAMES: + run_windows_tests = True + # The fuzz tests are pretty slow so they are executed only for PRs # changing relevant files. if file.suffix in SUFFIXES_C_OR_CPP: @@ -142,6 +165,7 @@ def process_changed_files(changed_files: Set[Path]) -> Outputs: run_ci_fuzz=run_ci_fuzz, run_docs=run_docs, run_tests=run_tests, + run_windows_tests=run_windows_tests, run_windows_msi=run_windows_msi, ) @@ -172,6 +196,7 @@ def write_github_output(outputs: Outputs) -> None: f.write(f"run-ci-fuzz={bool_lower(outputs.run_ci_fuzz)}\n") f.write(f"run-docs={bool_lower(outputs.run_docs)}\n") f.write(f"run-tests={bool_lower(outputs.run_tests)}\n") + f.write(f"run-windows-tests={bool_lower(outputs.run_windows_tests)}\n") f.write(f"run-windows-msi={bool_lower(outputs.run_windows_msi)}\n")