- Use more code search (http://crsrc.org) links instead of pointing to github or gitiles files directly - Update benchmarks.md and remove reference to csuite.py - Update torque and C++ example code Bug: 500280354 Change-Id: Ib7027b284179aa1740a491afc4b4b5a6654e0570 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7715583 Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#106411}
163 lines
5.2 KiB
Markdown
163 lines
5.2 KiB
Markdown
---
|
||
title: 'Checking out the V8 source code'
|
||
description: 'This document explains how to check out the V8 source code locally.'
|
||
---
|
||
This document explains how to check out the V8 source code locally. If you just want to browse the source online, use these links:
|
||
|
||
- [browse](https://chromium.googlesource.com/v8/v8/)
|
||
- [browse bleeding edge](https://chromium.googlesource.com/v8/v8/+/main)
|
||
- [changes](https://chromium.googlesource.com/v8/v8/+log/main)
|
||
|
||
## Using Git
|
||
|
||
V8’s Git repository is located at <https://chromium.googlesource.com/v8/v8.git>, with an official mirror on GitHub: <https://github.com/v8/v8>.
|
||
|
||
Don’t just `git clone` either of these URLs! if you want to build V8 from your checkout, instead follow the instructions below to get everything set up correctly.
|
||
|
||
## Instructions
|
||
|
||
1. On Linux or macOS, first install Git and then [`depot_tools`](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up).
|
||
|
||
On Windows, follow the Chromium instructions ([for Googlers](https://goto.google.com/building-chrome-win), [for non-Googlers](https://chromium.googlesource.com/chromium/src/+/main/docs/windows_build_instructions.md#Setting-up-Windows)) to install Git, Visual Studio, Debugging tools for Windows, and `depot_tools`.
|
||
|
||
1. Update `depot_tools` by executing the following into your terminal/shell. On Windows, this has to be done in the Command Prompt (`cmd.exe`), as opposed to PowerShell or others.
|
||
|
||
```
|
||
gclient
|
||
```
|
||
|
||
1. For **push access**, you need to set up a `.netrc` file with your Git password:
|
||
|
||
1. Go to <https://chromium.googlesource.com/new-password> and log in with your committer account (usually an `@chromium.org` account). Note: creating a new password doesn’t automatically revoke any previously created passwords. Please make sure you use the same email as the one set for `git config user.email`.
|
||
1. Have a look at the big, grey box containing shell commands. Paste those lines into your shell.
|
||
|
||
1. Now, get the V8 source code, including all branches and dependencies:
|
||
|
||
```bash
|
||
mkdir ~/v8
|
||
cd ~/v8
|
||
fetch v8
|
||
cd v8
|
||
```
|
||
|
||
After that you’re intentionally in a detached head state.
|
||
|
||
Optionally you can specify how new branches should be tracked:
|
||
|
||
```bash
|
||
git config branch.autosetupmerge always
|
||
git config branch.autosetuprebase always
|
||
```
|
||
|
||
Alternatively, you can create new local branches like this (recommended):
|
||
|
||
```bash
|
||
git new-branch fix-bug-1234
|
||
```
|
||
|
||
## Staying up-to-date
|
||
|
||
Update your current branch with `git pull`. Note that if you’re not on a branch, `git pull` won’t work, and you’ll need to use `git fetch` instead.
|
||
|
||
```bash
|
||
git pull
|
||
```
|
||
|
||
Sometimes dependencies of V8 are updated. You can synchronize those by running:
|
||
|
||
```bash
|
||
gclient sync
|
||
```
|
||
|
||
## Sending code for reviewing
|
||
|
||
```bash
|
||
git cl upload
|
||
```
|
||
|
||
## Committing
|
||
|
||
You can use the CQ checkbox on codereview for committing (preferred). See also the [chromium instructions](https://chromium.googlesource.com/chromium/src/+/main/docs/infra/cq.md) for CQ flags and troubleshooting.
|
||
|
||
If you need more trybots than the default, add the following to your commit message on Gerrit (e.g. for adding a nosnap bot):
|
||
|
||
```
|
||
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel
|
||
```
|
||
|
||
To land manually, update your branch:
|
||
|
||
```bash
|
||
git pull --rebase origin
|
||
```
|
||
|
||
Then commit using
|
||
|
||
```bash
|
||
git cl land
|
||
```
|
||
|
||
## Try jobs
|
||
|
||
This section is only useful for V8 project members.
|
||
|
||
### Creating a try job from codereview
|
||
|
||
1. Upload a CL to Gerrit.
|
||
|
||
```bash
|
||
git cl upload
|
||
```
|
||
|
||
1. Try the CL by sending a try job to the try bots like this:
|
||
|
||
```bash
|
||
git cl try
|
||
```
|
||
|
||
1. Wait for the try bots to build and you get an email with the result. You can also check the try state at your patch on Gerrit.
|
||
|
||
1. If applying the patch fails you either need to rebase your patch or specify the V8 revision to sync to:
|
||
|
||
```bash
|
||
git cl try --revision=1234
|
||
```
|
||
|
||
### Creating a try job from a local branch
|
||
|
||
1. Commit some changes to a git branch in the local repo.
|
||
|
||
1. Try the change by sending a try job to the try bots like this:
|
||
|
||
```bash
|
||
git cl try
|
||
```
|
||
|
||
1. Wait for the try bots to build and you get an email with the result. Note: There are issues with some of the replicas at the moment. Sending try jobs from codereview is recommended.
|
||
|
||
### Useful arguments
|
||
|
||
The revision argument tells the try bot what revision of the code base is used for applying your local changes to. Without the revision, [V8’s LKGR revision](https://v8-status.appspot.com/lkgr) is used as the base.
|
||
|
||
```bash
|
||
git cl try --revision=1234
|
||
```
|
||
|
||
To avoid running your try job on all bots, use the `--bot` flag with a comma-separated list of builder names. Example:
|
||
|
||
```bash
|
||
git cl try --bot=v8_mac_rel
|
||
```
|
||
|
||
### Viewing the try server
|
||
|
||
```bash
|
||
git cl try-results
|
||
```
|
||
|
||
## Source code branches
|
||
|
||
There are several different branches of V8; if you're unsure of which version to get, you most likely want the up-to-date stable version. Have a look at our [Release Process](/docs/release-process) for more information about the different branches used.
|
||
|
||
You may want to follow the V8 version that Chrome is shipping on its stable (or beta) channels, see <https://chromiumdash.appspot.com/releases>.
|