Improve development workflow with built libchromiumcontent
- Add `--debug_libchromiumcontent` to build libchromiumcontent for debugging (shared library build). - By default, only invoke `gclient sync` the first time to checkout chromium source tree. Add `--force_update_libchromiumcontent` switch to force updating. - Document new options. The goal is to allow faster edit/compile cycles when debugging/making changes to libchromiumcontent.
This commit is contained in:
parent
b81aab9eae
commit
d6fbf5f1bb
7 changed files with 144 additions and 25 deletions
|
@ -12,3 +12,64 @@
|
|||
- [Discussion Groups](http://www.chromium.org/developers/discussion-groups)
|
||||
|
||||
See also [V8 Development](v8-development.md)
|
||||
|
||||
# Chromium development with Electron
|
||||
|
||||
It is possible to debug Chromium with Electron by passing
|
||||
`--build_debug_libcc` to the bootstrap script:
|
||||
|
||||
$ ./script/bootstrap.py -d --build_debug_libcc
|
||||
|
||||
This will download and build libchromiumcontent locally, similarly to the
|
||||
`--build_release_libcc`, but it will create a shared library build of
|
||||
libchromiumcontent and won't strip any symbols, making it ideal for debugging.
|
||||
|
||||
When built like this, you can make changes to files in
|
||||
`vendor/libchromiumcontent/src` and rebuild quickly with:
|
||||
|
||||
$ ./script/build.py -c D --libcc
|
||||
|
||||
When developing on linux with gdb, it is recommended to add a gdb index to speed
|
||||
up loading symbols. This doesn't need to be executed on every build, but it is
|
||||
recommended to do it at least once to index most shared libraries:
|
||||
|
||||
$ ./vendor/libchromiumcontent/src/build/gdb-add-index ./out/D/electron
|
||||
|
||||
Building libchromiumcontent requires a powerful machine and takes a long time
|
||||
(though incremental rebuilding the shared library component is fast). With an
|
||||
8-core/16-thread Ryzen 1700 CPU clocked at 3ghz, fast SSD and 32GB of RAM, it
|
||||
should take about 40 minutes. It is not recommended to build with less than 16GB
|
||||
of RAM.
|
||||
|
||||
## Chromium git cache
|
||||
|
||||
`depot_tools` has an undocumented option that allows the developer to set a
|
||||
global cache for all git objects of Chromium + dependencies. This option uses
|
||||
`git clone --shared` to save bandwidth/space on multiple clones of the same
|
||||
repositories.
|
||||
|
||||
On electron/libchromiumcontent, this option is exposed through the
|
||||
`LIBCHROMIUMCONTENT_GIT_CACHE` environment variable. If you intend to have
|
||||
several libchromiumcontent build trees on the same machine(to work on different
|
||||
branches for example), it is recommended to set the variable to speed up the
|
||||
download of Chromium source. For example:
|
||||
|
||||
$ mkdir ~/.chromium-git-cache
|
||||
$ LIBCHROMIUMCONTENT_GIT_CACHE=~/.chromium-git-cache ./script/bootstrap.py -d --build_debug_libcc
|
||||
|
||||
If the bootstrap script is interrupted while using the git cache, it will leave
|
||||
the cache locked. To remove the lock, delete the files ending in `.lock`:
|
||||
|
||||
$ find ~/.chromium-git-cache/ -type f -name '*.lock' -delete
|
||||
|
||||
It is possible to share this directory with other machines by exporting it as
|
||||
SMB share on linux, but only one process/machine can be using the cache at a
|
||||
time. The locks created by git-cache script will try to prevent this, but it may
|
||||
not work perfectly in a network.
|
||||
|
||||
On Windows, SMBv2 has a directory cache that will cause problems with the git
|
||||
cache script, so it is necessary to disable it by setting the registry key
|
||||
|
||||
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters\DirectoryCacheLifetime
|
||||
|
||||
to 0. More information: https://stackoverflow.com/a/9935126
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue