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 |
This comment was marked as outdated.
This comment was marked as outdated.
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 |
|
I agree with you, but in practice, I am close to giving up on my usual task of updating V8 mainly because of GCC. Until recently, it's been relatively OK because IBM still often submitted compatibility patches to make it work for AIX, but this is going to stop since they switched to Clang. I'll open another PR to only bump the minimum version. |
1 similar comment
This comment was marked as outdated.
This comment was marked as outdated.
|
I reached out a bit and I can confirm I (and maybe with additional hands) could help keep a non-EOL version of GCC + x64 Linux build supported at least in the foreseeable future - we could keep it working via GHA in the main repo and in canary to reduce the churn in V8 updates. Can we keep this configuration as supported in BUILDING.md and in the actions? |
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: