-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deps: update V8 to 8.5 #34337
deps: update V8 to 8.5 #34337
Conversation
/cc @gengjiawen related to nodejs/node-v8#161 |
Yeap. Also msvc only report one error, I will give it a try. BTW, we need to cherrypick v8/v8@4ece106. |
@targos, since |
In case you want patch code for windows, you can get first two commit in https://github.com/gengjiawen/node/commits/v8-8.5-hack before nodejs/gyp-next#60 get fixed. @targos |
Is there any chance that it may get into Node 14 or 15? 😶 |
Major V8 updates are usually API/ABI incompatible with previous versions. This commit adapts NODE_MODULE_VERSION for V8 8.5. Refs: https://github.com/nodejs/CTC/blob/master/meetings/2016-09-28.md
Original commit message: [testrunner] delete ancient junit compatible format support Testrunner has ancient support for JUnit compatible XML output. This CL removes this old feature. [email protected],[email protected],[email protected] CC=[email protected] Bug: v8:8728 Change-Id: I7e1beb011dbaec3aa1a27398a5c52abdd778eaf0 Reviewed-on: https://chromium-review.googlesource.com/c/1430065 Reviewed-by: Jakob Gruber <[email protected]> Reviewed-by: Michael Starzinger <[email protected]> Commit-Queue: Tamer Tas <[email protected]> Cr-Commit-Position: refs/heads/master@{#59045} Refs: v8/v8@bd019bd PR-URL: nodejs#32116 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Jiawen Geng <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
Patch V8 (compiler/js-heap-broker.cc) to remove the use of an optional property, which is a fairly new C++ feature, since that requires a newer XCode version than the minimum requirement in BUILDING.md and thus breaks CI. PR-URL: nodejs#32116 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Jiawen Geng <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
Fixes a compilation issue on some platforms PR-URL: nodejs#32116 Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Jiawen Geng <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
Testing something: https://ci.nodejs.org/job/node-test-commit-arm-fanned/16538/ |
@targos I believe I have find the root cause through the generated mk file. It looks like the assembly file processed both on host and target. So we should limit it only on target ( Below is build by removing it in Maybe only something like (not quite sure about the syntax)
|
I don't know... My condition seems right. I looked at the Jenkins logs and for |
So, with the log I added, we can see that the variables have the following values:
There's no other log where _toolset is CI: https://ci.nodejs.org/job/node-test-commit-arm-fanned/16551/ Edit: doesn't work. I'm out of ideas. |
@targos if you want to test locally, you can also try https://github.com/mmarchini/node-arm-cross-builder |
_toolset being always |
_toolset seems to be 'target' all the time from what I test. Maybe a bug in gyp. Looks the generated mk file toolset is set correctly. Where 1 # This file is generated by gyp; do not edit.
2
3 TOOLSET := host
4 TARGET := v8_base_without_compiler |
This comment has been minimized.
This comment has been minimized.
I realise I'm somewhat "drive-by commenting" here, but is there a reason why we still have to cross compile for arm32? There's some reasonably quick stuff out there now (e.g. Raspberry Pi4 or ODROID-XU4 which I use) and if those could be used to build natively in a reasonable amount of time and don't exhibit the same problems it might be worth switching. |
Tinker {
'target_name': 'v8_cppgc_shared',
'type': 'none',
# 'conditions': [
# ['want_separate_host_toolset', {
# 'toolsets': ['host', 'target'],
# }],
# ],
'toolsets': ['host', 'target'] |
@sxa It's already tier 1 in build. I suppose even if we want to change it. It will be a much more bigger issue. Context: nodejs/TSC#931 (comment). |
For completeness, link to a proposed switch to building natively that went stale nodejs/build#1851 |
@targos I think I find the fix, not sure the reason why. I tested in the docker, works fine, you can test it in Jenkins. Change the part like this {
'target_name': 'v8_cppgc_shared',
'type': 'none',
# 'conditions': [
# ['want_separate_host_toolset', {
# 'toolsets': ['host', 'target'],
# }],
# ],
'toolsets': ['host', 'target'],
'direct_dependent_settings': {
'sources': [
'<(V8_ROOT)/src/heap/base/stack.cc',
'<(V8_ROOT)/src/heap/base/stack.h',
],
'conditions': [
['clang or OS!="win"', {
'conditions': [
['_toolset=="target" and target_arch == "arm"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm/push_registers_asm.cc',
],
}],
['_toolset == "target" and target_arch=="arm64"', {
'sources': [
'<(V8_ROOT)/src/heap/base/asm/arm64/push_registers_asm.cc',
],
}],
]
// other omitted. |
@gengjiawen with the change you propose, does it still work for regular compilation, for example x64? |
Not test it yet, give me a second. |
@targos Looks like still works (Note: in my snippet I only show two cpus). PS: the full build without ccache is really long. |
Let's try it! |
This comment has been minimized.
This comment has been minimized.
It works!!! Thank you @gengjiawen ❤️ . Now I'm going to open a new PR to update directly to 8.6, because it will be stable next week and we need it ASAP for v15. |
You want to land this first or drop it ? |
It's easier for me to drop it. |
PR for 8.6: #35415 |
Stable Release: Tue, Aug 25, 2020