• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# How to Branch and Roll Chromium's ANGLE Dependency
2
3ANGLE provides an implementation of OpenGL ES on Windows, which Chromium relies
4upon for hardware accelerated rendering and WebGL support. Chromium specifies
5its dependency on a specific version of ANGLE in the repository; this document
6describes how to update that dependency, and, if necessary, create an ANGLE
7branch to correspond to a branched release of Chrome.
8
9ANGLE's commit queue also runs browser-level tests which are hosted in
10the Chromium repository. To reduce the chance of a Chromium-side
11change breaking ANGLE's CQ, the version of Chromium against which
12ANGLE changes is also snapshotted, and rolled forward into ANGLE with
13appropriate testing.
14
15## Autorollers
16
17At present, autorollers manage both the ANGLE roll into Chromium, and
18the Chromium roll into ANGLE. All of the ANGLE-related autorollers are
19documented in the [ANGLE Wrangling
20documentation](../infra/ANGLEWrangling.md#the-auto-rollers).
21
22## Manually rolling DEPS
23
24Chromium's dependency on third-party projects is tracked in [the Chromium
25repository's src/DEPS file](http://src.chromium.org/viewvc/chrome/trunk/src/DEPS). To update the ANGLE
26dependency:
27
28 * Find the line in this file that defines "src/third\_party/angle"
29for deps (**not** deps\_os)
30 * Change the [git SHA-1 revision
31number](http://git-scm.com/book/ch6-1.html) to be that of the commit
32on which Chromium should depend. Please use the full SHA-1, not a
33shortened version.
34 * You can find the SHA-1 for a particular commit with `git log` on the
35appropriate branch of the repository, or via [the public repository
36viewer](https://chromium.googlesource.com/angle/angle).
37 * If using the public repository viewer, you will need to select the
38branch whose log you wish to view from the list on the left-hand side,
39and then click on the "tree" link at the top of the resulting
40page. Alternatively, you can navigate to
41`https://chromium.googlesource.com/angle/angle/+/<branch name>/` --
42including the terminating forward slash. (e.g.
43`https://chromium.googlesource.com/angle/angle/+/main/`)
44
45## Branching ANGLE
46
47Sometimes, individual changes to ANGLE are needed for a release of Chrome which
48has already been branched. If this is the case, a branch of ANGLE should be
49created to correspond to the Chrome release version, so that Chrome may
50incorporate only these changes, and not everything that has been committed since
51the version on which Chrome depended at branch time. **Please note: Only ANGLE
52admins can create a new branch.** To create a branch of ANGLE for a branched
53Chrome release:
54
55 * Determine what the ANGLE dependency is for the Chrome release
56by checking the DEPS file for that branch.
57 * Check out this commit as a new branch in your local repository.
58   * e.g., for [the Chrome 34 release at
59chrome/branches/1847](http://src.chromium.org/viewvc/chrome/branches/1847/src/DEPS),
60the ANGLE version is 4df02c1ed5e97dd54576b06964b1da67ea30238e. To
61check this commit out locally and create a new branch named 'mybranch'
62from this commit, use: ```git checkout -b mybranch
634df02c1ed5e97dd54576b06964b1da67ea30238e```
64 * To create this new branch in the public repository, you'll need to push the
65branch to the special Gerrit reference location, 'refs/heads/<branch name>'. You
66must be an ANGLE administrator to be able to push this new branch.
67    * e.g., to use your local 'mybranch' to create a branch in the public repository called
68'chrome\_m34', use: ```git push origin mybranch:refs/heads/chrome_m34```
69    * The naming convention that ANGLE uses for its release-dedicated branches is 'chrome\_m##'.
70