Skip to content
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

Update Chromium Upgrade docs #10215

Merged
merged 3 commits into from Aug 28, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
100 changes: 60 additions & 40 deletions docs/development/upgrading-chrome.md
@@ -1,47 +1,65 @@
# Upgrading Chrome Checklist
# Upgrading Chromium Workflow

This document is meant to serve as an overview of what steps are needed
on each Chrome upgrade in Electron.
on each Chromium upgrade in Electron.

These are things to do in addition to updating the Electron code for any
Chrome/Node API changes.
## Update libchromiumcontent (a.k.a. libcc)

- Clone the repo:
```sh
git clone git@github.com:electron/libchromiumcontent.git
cd libchromiumcontent
```
- Run bootstrap script to init and sync git submodules:
```sh
./script/bootstrap -v
```
- Update `VERSION` file to correspond to Chromium version.
- Run `script/update`, it will probably fail applying patches.
- Fix failing patches. `script/patch.py` might help.
- Don't forget to fix patches in the `patches-mas/` folder.
- Build libcc:
```sh
./script/build
```
- Create dist folders which will be used by electron:
```sh
./script/create-dist --no_zip
cd dist/main
../../tools/generate_filenames_gypi filenames.gypi src shared_library static_library
cd -
```
- Open a pull request to `electron/libchromiumcontent` with the changes.
- Fix compilation on the all supported platforms/arches.

## Update Electron

- Set `vendor/libchromiumcontent` revision to a version with the new Chromium.
- It will be great if GH builds for this libcc version are already green
and its archives are already available. Otherwise everyone would need
to build libcc locally in order to try build a new Electron.
- Set `CLANG_REVISION` in `script/update-clang.sh` to match the version
Chromium is using. You can find it in file `src/tools/clang/scripts/update.py` in updated `electron/libchromiumcontent` repo.
- Run `script/bootstrap.py`.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should mention --libcc_source_path= and other --libcc_... arguments of the bootstrap script?
It might be easier to use them than to create a symlink, especially on Windows.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that will be cool. I couldn't make it work when updating libcc for 61 though, no idea why, that's why i sticked with symlink. Maybe it's worth mentioning both approaches, just in case

- Upgrade Node.js if you are willing to. See the notes below.
- Fix compilation.
- Open a pull request on `electron/electron` with the changes.
- This should include upgrading the submodules in `vendor/` as needed.
- Fix failing tests.

## Upgrade Node.js

- Verify the new Chrome version is available from
https://github.com/zcbenz/chromium-source-tarball/releases
- Update the `VERSION` file at the root of the `electron/libchromiumcontent`
repository
- Update the `CLANG_REVISION` in `script/update-clang.sh` to match the version
Chrome is using in `libchromiumcontent/src/tools/clang/scripts/update.py`
- Upgrade `vendor/node` to the Node release that corresponds to the v8 version
being used in the new Chrome release. See the v8 versions in Node on
https://nodejs.org/en/download/releases for more details
- Upgrade `vendor/crashpad` for any crash reporter changes needed
- Upgrade `vendor/depot_tools` for any build tools changes needed
- Update the `libchromiumcontent` SHA-1 to download in `script/lib/config.py`
- Open a pull request on `electron/libchromiumcontent` with the changes
- Open a pull request on `electron/electron` with the changes
- This should include upgrading the submodules in `vendor/` as needed
- Verify debug builds succeed on:
- macOS
- 32-bit Windows
- 64-bit Window
- 32-bit Linux
- 64-bit Linux
- ARM Linux
- Verify release builds succeed on:
- macOS
- 32-bit Windows
- 64-bit Window
- 32-bit Linux
- 64-bit Linux
- ARM Linux
- Verify tests pass on:
- macOS
- 32-bit Windows
- 64-bit Window
- 32-bit Linux
- 64-bit Linux
- ARM Linux
being used in the new Chromium release. See the v8 versions in Node on
https://nodejs.org/en/download/releases for more details.
- You can find v8 version Chromium is using on [OmahaProxy](http://omahaproxy.appspot.com).
If it's not available check `v8/include/v8-version.h`
in the Chromium checkout.

## Troubleshooting

**TODO**


## Verify ffmpeg Support

Expand Down Expand Up @@ -83,6 +101,8 @@ codecs.
</html>
```

## Links
## Useful Links

- [Chrome Release Schedule](https://www.chromium.org/developers/calendar)
- [OmahaProxy](http://omahaproxy.appspot.com)
- [Chromium Issue Tracker](https://bugs.chromium.org/p/chromium)