-
Notifications
You must be signed in to change notification settings - Fork 166
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
Make regular canary builds with V8 lkgr #626
Comments
Seems like a reasonable idea to me. |
Thanks for writing this up / working on this. It would be great to have a canary build of Node.js available so that we can flow node canary feedback to the V8 team before the V8 dev branches solidify into the beta/stable branches. A question about the work-flow you proposed: how would the cherry-picking from |
I like this idea a lot! Looking forward to Node Canary. |
Looking forward to this! Does it make sense to check in part of update-v8 into V8 itself? For the file list of dependencies it might make sense? |
I wonder whether it makes sense to port the update-v8 script to python. Requiring Node.js to be able to update Node.js feels weird. Especially if we are looking into checking it into V8 to be able to keep it in sync with V8's version: V8 would have a circular dependency on Node.js. |
I don't speak python. That's why I wrote it in JS in the first place :).
It doesn't feel so weird to me. We already need Node.js to be able to lint Node.js with ESLint.
I think it would make a lot of sense to have the list of dependencies in V8 (ideally as a JSON). It is currently here: https://github.com/targos/update-v8/blob/master/src/constants.js#L14-L49 |
All the commits after the last V8 update. Something like:
|
We should try to get this up and running in the Collab Summit. with @piccoloaiutante @targos @fhinkel EDIT: Will update with progress. Subtasks:
|
The nightly test job works fine and allowed to find and fix quickly some issues. @gibfahn would you like to help me setup the nightly build? |
So this would be adding a trigger to the release CI job to upload builds every night? I can definitely help with that, but I'll add this to the Build WG agenda tonight to make sure there are no objections. |
Yes. I'm thinking about a new https://nodejs.org/download/v8-nightly/ similar to https://nodejs.org/download/chakracore-nightly/ |
fyi I have this on my plate, still working on it, it's not a trivial task unfortunately because it also involves the |
I prefer |
v8-canary is fine for me |
+1 on |
+1 for |
OK folks, here it is https://nodejs.org/download/v8-canary/ I did some pretty heavy refactoring of the Jenkins iojs+release job on ci-release to make this work nicely but in the process I cleaned up a bunch of old cruft and made it easier to trigger. I haven't automated this yet, I'll need to do some small tweaks to nightly-builder to handle this nicely, that shouldn't take much effort though. I wanted to get y'all thinking about how the messaging for this might go—using these builds is going to be a huge mess if you're using addons. They may compile but you're not going to get ABI stability, even across v8-canary versions, and it could potentially break every 6 weeks. So perhaps we could think about a blog post that describes what this is, why you might tinker with them and what kind of breakage you should expect and how to deal with that. |
|
To add to what I said above about messaging—you may not want to promote this too much, I can see people getting much more tangled in this than they would in our slower and more controlled |
https://twitter.com/mathias/status/873204105161961473 So much for taking it gently |
My apologies, @rvagg — I was unaware of your request to “not promote this too much” when I posted that. I’d assume those opting in to canary builds know what to expect, analogous to Chrome Canary: you’re giving up stability for a more bleeding-edge feature set. I agree that a blog post would help clarify the difference between nightly and canary builds. 👍 |
Yeah, no biggie, I'll try and find time soon to draft up a post for you all to review |
PRs to support this in the dist tooling we use:
They're active on the server now and we have working index.tab and index.json files and there's a cron job in to trigger a job for this every day _if_there's a new commit on nodejs/node-v8/canary. One's running now as I'm writing this and will show up eventually soonish. |
@gibfahn I have a problem with the |
@targos odd, it looks like something got messed up in the workspace. I cleaned it out and reran, and now I'm getting: https://ci.nodejs.org/view/All/job/node-update-v8-canary/80/console > git fetch --tags --progress [email protected]:nodejs/node.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/canary^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/canary^{commit} # timeout=10
> git rev-parse origin/canary^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job. Shouldn't it be looking for |
Indeed. I changed the config. Trying a new run: https://ci.nodejs.org/view/All/job/node-update-v8-canary/82/console Edit: back to normal. Thank you! |
Looks like that went better. LMK if it happens again, I had a look on the machine and none of the directories seemed to have a cherry-pick in progress. If you have the ability to see the |
The daily update/test and nightly build work well. I think this can be closed. Thanks everyone for the help! |
Ah! We still haven't posted anything on the blog about this. @rvagg would you still like to do this draft? |
Would it be possible to publish the headers for the canary build? Currently trying to install a module with C/C++ code gives an error like below.
|
Headers are produced by our macos builders but they aren't able to compile current v8-canary builds, I guess this is because of the new Xcode/clang limitations for the newer versions of V8. Once that gets sorted out they should start showing up again but I couldn't give an ETA on that. |
@rvagg I am running on Linux fwiw. |
Which is why you have a build, but you'll notice the macos ones are missing. Since the headers tarball comes off our macos machines and those machines aren't able to get through a successful compile we're not getting headers. |
I can't test this right now, but I think you should be able to work around this by pointing node-gyp at your Node.js installation which should in theory already include the relevant headers. e.g. |
I usually use |
@mmarchini It worked for me - thanks! |
There are more and more people who would like to try and use Node.js with the most recent V8 version available. ([1], [2])
I propose that we maintain a
canary
branch, regularly updated, based on master and upgraded to the latest version of V8. I have already created the branch and applied patches on top of it (most of them cherry-picked from V8's fork, thank you @ofrobots et al!).CI is running here and looks very promising.
From this branch, we should be able to build canary binaries and publish them to https://nodejs.org/download/.
I also created another branch,
canary-base
, that is currently exactly the same. The idea is that an automated tool would manage the canary branch, while we use canary-base to manually push fixes.Here is the general workflow that this tool would follow:
git remote update
git reset --hard nodejs/master
update-v8
to upgrade to the latest V8 versioncanary-base
git push --force nodejs canary
I think it would be valuable for everyone to setup all of this:
/cc @nodejs/build @nodejs/v8 @ljharb
[1] [2]
The text was updated successfully, but these errors were encountered: