diff --git a/docs/development/upgrading-chrome.md b/docs/development/upgrading-chrome.md index 1004e6d36454d..5878a9a177a5c 100644 --- a/docs/development/upgrading-chrome.md +++ b/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`. +- 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 @@ -83,6 +101,8 @@ codecs. ``` -## 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)