build: bump minimum Clang version to 19

This is now required by V8.

Refs: https://github.com/nodejs/node-v8/issues/302
PR-URL: https://github.com/nodejs/node/pull/59048
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
This commit is contained in:
Michaël Zasso 2025-08-02 16:10:07 +02:00 committed by GitHub
parent 037b65500b
commit 8a87ba031b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 56 additions and 12 deletions

View file

@ -0,0 +1,15 @@
name: Install Clang
description: Installs a specific Clang version. Useful if the GitHub runner does not have it by default.
inputs:
clang-version:
description: The Clang major version to install
required: true
runs:
using: composite
steps:
- name: Install Clang
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y clang-${{ inputs.clang-version }}

View file

@ -30,8 +30,9 @@ concurrency:
env: env:
PYTHON_VERSION: '3.12' PYTHON_VERSION: '3.12'
FLAKY_TESTS: keep_retrying FLAKY_TESTS: keep_retrying
CC: sccache clang CLANG_VERSION: '19'
CXX: sccache clang++ CC: sccache clang-19
CXX: sccache clang++-19
SCCACHE_GHA_ENABLED: 'true' SCCACHE_GHA_ENABLED: 'true'
permissions: permissions:
@ -45,6 +46,10 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with: with:
persist-credentials: false persist-credentials: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:
@ -75,6 +80,10 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with: with:
persist-credentials: false persist-credentials: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:

View file

@ -36,8 +36,9 @@ concurrency:
env: env:
PYTHON_VERSION: '3.12' PYTHON_VERSION: '3.12'
FLAKY_TESTS: keep_retrying FLAKY_TESTS: keep_retrying
CC: sccache clang CLANG_VERSION: '19'
CXX: sccache clang++ CC: sccache clang-19
CXX: sccache clang++-19
SCCACHE_GHA_ENABLED: 'true' SCCACHE_GHA_ENABLED: 'true'
permissions: permissions:
@ -51,6 +52,10 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with: with:
persist-credentials: false persist-credentials: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:

View file

@ -36,8 +36,9 @@ concurrency:
env: env:
PYTHON_VERSION: '3.12' PYTHON_VERSION: '3.12'
FLAKY_TESTS: keep_retrying FLAKY_TESTS: keep_retrying
CC: sccache clang CLANG_VERSION: '19'
CXX: sccache clang++ CC: sccache clang-19
CXX: sccache clang++-19
SCCACHE_GHA_ENABLED: 'true' SCCACHE_GHA_ENABLED: 'true'
permissions: permissions:
@ -51,6 +52,10 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with: with:
persist-credentials: false persist-credentials: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:

View file

@ -33,8 +33,9 @@ concurrency:
env: env:
PYTHON_VERSION: '3.12' PYTHON_VERSION: '3.12'
FLAKY_TESTS: keep_retrying FLAKY_TESTS: keep_retrying
CC: clang CLANG_VERSION: '19'
CXX: clang++ CC: clang-19
CXX: clang++-19
permissions: permissions:
contents: read contents: read
@ -47,6 +48,10 @@ jobs:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with: with:
persist-credentials: false persist-credentials: false
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:

View file

@ -27,8 +27,9 @@ concurrency:
env: env:
PYTHON_VERSION: '3.12' PYTHON_VERSION: '3.12'
FLAKY_TESTS: keep_retrying FLAKY_TESTS: keep_retrying
CC: sccache clang CLANG_VERSION: '19'
CXX: sccache clang++ CC: sccache clang-19
CXX: sccache clang++-19
SCCACHE_GHA_ENABLED: 'true' SCCACHE_GHA_ENABLED: 'true'
permissions: permissions:
@ -47,6 +48,10 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
path: node path: node
- name: Install Clang ${{ env.CLANG_VERSION }}
uses: ./node/.github/actions/install-clang
with:
clang-version: ${{ env.CLANG_VERSION }}
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with: with:

View file

@ -1236,8 +1236,8 @@ def check_compiler(o):
print_verbose(f"Detected {'clang ' if is_clang else ''}C++ compiler (CXX={CXX}) version: {version_str}") print_verbose(f"Detected {'clang ' if is_clang else ''}C++ compiler (CXX={CXX}) version: {version_str}")
if not ok: if not ok:
warn(f'failed to autodetect C++ compiler version (CXX={CXX})') warn(f'failed to autodetect C++ compiler version (CXX={CXX})')
elif clang_version < (8, 0, 0) if is_clang else gcc_version < (12, 2, 0): elif clang_version < (19, 1, 0) if is_clang else gcc_version < (12, 2, 0):
warn(f'C++ compiler (CXX={CXX}, {version_str}) too old, need g++ 12.2.0 or clang++ 8.0.0') warn(f'C++ compiler (CXX={CXX}, {version_str}) too old, need g++ 12.2.0 or clang++ 19.1.0')
ok, is_clang, clang_version, gcc_version = try_check_compiler(CC, 'c') ok, is_clang, clang_version, gcc_version = try_check_compiler(CC, 'c')
version_str = ".".join(map(str, clang_version if is_clang else gcc_version)) version_str = ".".join(map(str, clang_version if is_clang else gcc_version))