-
Notifications
You must be signed in to change notification settings - Fork 29.8k
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
inspector: do not depend on v8's inspector_protocol generator #21975
Conversation
@ak239 can you guys please take a look? |
@aslushnikov Can you update the commit message to follow the guidelines? /cc @nodejs/v8-inspector |
Also, since this brings in multiple new directories in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1, but please address the comments raised by @addaleax
@addaleax I think it's all good now. Please let me know if I'm missing something.
I ran the tool, but it just removed seemingly unrelated licenses from the LICENSE file. I wonder if it works as expected. |
Hello @aslushnikov and thank you for the contribution! Lines 1055 to 1079 in 83474ae
I think you can solve the fail on the V8 buildbot by updating the GN that is used to build node, and make sure all the templates are dependencies (or force a rerun on every build). /CC @nodejs/build-files @nodejs/v8-update |
@nodejs/collaborators I’m not sure who’d be best pinged for this question, so, sorry to bother all of you. |
@refack, |
Let's separate two concerns.
There should be only one instance of the tool in the code base. |
@refack divergent templates will not break the code. Node Inspector calls into V8 inspector through the stable API and does not directly interact with the code generated with those templates. |
@aslushnikov So, currently the license-builder.sh file is slightly broken in that it includes entries for three things that don't ship with our source code and therefore don't need to be included. But you can ignore those errors. I've opened a PR to fix it. (#21979) What needs to happen in this PR is an entry needs to be added for the dependency or dependencies added here, and then the script should be run and the license file updated as part of the PR. Hope that helps! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not land as a dep
it should be in tools
.
@refack I updated the description; hopefully it now does a better job explaining what's going on. |
@refack I believe this PR is trying to address Node build breaking when V8 moves to a newer version of the inspector_protocol generator. There is no reason to require them to use same generator and templates. @aslushnikov I am unable to build it locally even with a clean build: |
@Trott thanks, I see what's going on. Once your PR lands, I'll rebaseline atop; I included your changes here meanwhile.
@refack done.
@eugeneo that's right; I was compiling against v8/node instead of nodejs/node. I updated the PR to include an older version of the generators that is currently used in the node.js. |
Haven't reviewed yet, but I'm generally +1 on this. I've recently been bitten by this when a new inspector_protocol rolled into V8. I scrambled to update V8/node to make sure our CI for Node.js didn't break. Decoupling Node.js from V8 in this regard makes sense. Consider this the same as with ICU. |
The fix works for me, I can now build locally and "make tests' passes! 👍 |
@refack, your concern about |
This PR is blocking us from rolling new inspector_protocol version to V8. |
The other license-builder PR has landed so this one can be rebased. We'll need a CI run once that happens. |
Currently, node.js depends on [inspector_protocol](https://www.google.com/url?q=https://chromium.googlesource.com/deps/inspector_protocol/) indirectly through the dependency on v8. This is a dependency violation that will make it hard to roll V8 into Node if V8 gets a newer inspector protocol version with incompatible API. In fact, this surfaced on one of our bots when we tried to roll new inspector_protocol into V8: [upstream patch](https://chromium-review.googlesource.com/c/v8/v8/+/1149321). This patch adds inspector protocol and its required dependencies to node deps: - jinja2 - markupsafe
d98e288
to
1ece530
Compare
The development process states:
While this doesn't 100% apply as @refack did explain his objection. AFAICT the objection has been addressed. A reasonable amount of time (15 days) has elapsed to allow @refack to acknowledge and/or leave further comments. IMO it would be reasonable to dismiss objection at this point. |
I agree, @refack’s change request seems to have been addressed. (That being said, I was surprised by it, I can’t find an explanation for it in this thread and, quite frankly, I disagree with it – dependencies that influence directly what goes into the |
CI once again, failures on existing one looks unrelated: https://ci.nodejs.org/job/node-test-pull-request/16326/ |
Resume Build: https://ci.nodejs.org/job/node-test-pull-request/16329/ |
It looks like latest CI finished successfully. I will merge this PR later today. |
Based on development process, I can see that requested changes have been made and can dismiss request changes in this case.
Landed in e039524 |
Currently, node.js depends on inspector_protocol indirectly through the dependency on v8. This is a dependency violation that will make it hard to roll V8 into Node if V8 gets a newer inspector protocol version with incompatible API. In fact, this surfaced on one of our bots when we tried to roll new inspector_protocol into V8. This patch adds inspector protocol and its required dependencies to node deps: - jinja2 - markupsafe PR-URL: #21975 Reviewed-By: Eugene Ostroukhov <[email protected]> Reviewed-By: Aleksei Koziatinskii <[email protected]>
Currently, node.js depends on inspector_protocol indirectly through the dependency on v8. This is a dependency violation that will make it hard to roll V8 into Node if V8 gets a newer inspector protocol version with incompatible API. In fact, this surfaced on one of our bots when we tried to roll new inspector_protocol into V8. This patch adds inspector protocol and its required dependencies to node deps: - jinja2 - markupsafe PR-URL: #21975 Reviewed-By: Eugene Ostroukhov <[email protected]> Reviewed-By: Aleksei Koziatinskii <[email protected]>
Currently, node.js depends on inspector_protocol indirectly through the dependency on v8. This is a dependency violation that will make it hard to roll V8 into Node if V8 gets a newer inspector protocol version with incompatible API. In fact, this surfaced on one of our bots when we tried to roll new inspector_protocol into V8. This patch adds inspector protocol and its required dependencies to node deps: - jinja2 - markupsafe PR-URL: nodejs#21975 Reviewed-By: Eugene Ostroukhov <[email protected]> Reviewed-By: Aleksei Koziatinskii <[email protected]>
Dependencies that influence directly what goes into the `node` binary should be in `deps/`. Refs: nodejs#21975 (comment)
inspector_protocol is designed in a way that every instance of the generated code needs to own its copy of the inspector_protocol harness. For example, chromium code has 2 instances, one in v8 and one in chromium itself.
The reason is that otherwise incremental changes to the inspector_protocol need to happen in the interdependent projects simultaneously, which is infeasible due to the roll process.
This patch fixes the issue introduced by the Tracing agent's misuse of the v8's private protocol generator harness and establishes a direct dependency to the harness for the Node's agents.
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes