build: downgrade GCC support to experimental#62533
build: downgrade GCC support to experimental#62533targos wants to merge 1 commit intonodejs:mainfrom
Conversation
|
Review requested:
|
|
The main goal is to unblock #61898 and future V8 updates. |
Update the configure script to select Clang by default. V8 no longer officially supports GCC and we often have problems because of it. Also bump the expected version to 13.2 because version 12 can't compile newer V8. Signed-Off-By: Michaël Zasso <targos@protonmail.com>
|
Would it make more sense to deprecate GCC rather than move it to experimental? Or is there an expectation that the "experimental" flag could be removed, even though the following is stated?
|
| - name: Install Clang ${{ env.CLANG_VERSION }} | ||
| uses: ./.github/actions/install-clang | ||
| with: | ||
| clang-version: ${{ env.CLANG_VERSION }} |
There was a problem hiding this comment.
This job only packs the tarball, the actual compilation already uses clang
| - name: Install Clang ${{ env.CLANG_VERSION }} | |
| uses: ./.github/actions/install-clang | |
| with: | |
| clang-version: ${{ env.CLANG_VERSION }} |
There was a problem hiding this comment.
If clang is not installed, the new default in configure.py makes it fail. See https://github.com/nodejs/node/actions/runs/23843452764/job/69504716314?pr=62533
There was a problem hiding this comment.
Can we add a flag to disable that check:
diff --git a/configure.py b/configure.py
index 6182537bfa..49a99767a9 100755
--- a/configure.py
+++ b/configure.py
@@ -2607,7 +2607,8 @@ configurations = {
}
# Print a warning when the compiler is too old.
-check_compiler(output)
+if not os.environ['SKIP_COMPILER_CHECK']:
+ check_compiler(output)
# determine the "flavor" (operating system) we're building for,
# leveraging gyp's GetFlavor function| env: | ||
| CC: clang-19 | ||
| CXX: clang++-19 |
There was a problem hiding this comment.
| env: | |
| CC: clang-19 | |
| CXX: clang++-19 |
| - name: Install Clang ${{ env.CLANG_VERSION }} | ||
| uses: ./.github/actions/install-clang | ||
| with: | ||
| clang-version: ${{ env.CLANG_VERSION }} | ||
|
|
There was a problem hiding this comment.
| - name: Install Clang ${{ env.CLANG_VERSION }} | |
| uses: ./.github/actions/install-clang | |
| with: | |
| clang-version: ${{ env.CLANG_VERSION }} |
| CC: clang-19 | ||
| CXX: clang++-19 |
There was a problem hiding this comment.
| CC: clang-19 | |
| CXX: clang++-19 |
I think the GCC support for 61898 was already unblocked by https://chromium-review.googlesource.com/c/v8/v8/+/7666244 and the remaining blocker seems unrelated? (I think the remaining blocker is similar to something else I fixed for the previous upgrade, most likely a legit bug in V8's transitions management) |
|
The current GCC issue is something else: #61898 (comment) |
It seems specific to GCC 12? I feel that we could split the discussion separately: bumping GCC support to 13 (12 already reached EOL last year, so this seems less disruptive), and moving GCC to experimental on all platforms, which can cause more disruption, especially considering addons and downstream distros - it would be unfortunate to disrupt Linux distros just because an EOL version of GCC doesn't work on AIX - at least keeping an up-to-date version of GCC on Linux supported is good ROI, and V8 is generally happy to take patches to keep that working |
Update the configure script to select Clang by default.
V8 no longer officially supports GCC and we often have problems because of it.
Also bump the expected version to 13.2 because version 12 can't compile newer V8.
/cc @nodejs/build @nodejs/tsc @nodejs/embedders @nodejs/delivery-channels @nodejs/distros
Impacted CI systems: