build: use electron-frameworks sccache (#14171)
* build: update-external-binaries fetches sccache * build: add util.add_exec_bit in scripts/ * build: use util.add_exec_bit in create-dist * build: use util.add_exec_bit in update-external-binaries this is needed to work around a bug in python's zipfile module that doesn't preserve the exec bit https://bugs.python.org/issue18262 * fix: linting errors * build: vsts, circleci use patched sccache * build: always look for the x64 sccache as it's the only arch we have it on * fix: windows-specific errors in updaste-external-binaries * fix: tyop * fix: set SCCACHE_BUCKET, SCCACHE_TWO_TIER on circleci * fix: syntax error in circleci yaml * fix: keep churning * chore: add tracer to file downloader * docs: add sccache instructions for GN builds * build: pull down the darwin sccache on mas builds * build: use gn sync verbosely on circleci and vsts * docs: copyediting * build: remove unnecessary cache-dir arg * docs: fix shell quoting in gn build instructions * fix: invoke gclient without -verbose in circleci * refactor: remove debug tracer * fix: invoke gclient without -verbose in appveyor * fix: invoke gclient without -verbose in vsts * fix: pull add_exec_bit from correct source * fix: remove 'SCCACHE_TWO_TIER' from CI scripts * refactor: remove SCCACHE_BUCKET from ci scripts this environment variable will be set via the CI UI instead * refactor: clarify log message * fix: set SCCACHE_PATH correctly for Windows CI
This commit is contained in:
parent
73c43eaea7
commit
e315e4d308
7 changed files with 57 additions and 30 deletions
|
@ -5,7 +5,7 @@ build.
|
|||
|
||||
> **NOTE**: The GN build system is in _experimental_ status.
|
||||
|
||||
## Prerequisites
|
||||
## Platform prerequisites
|
||||
|
||||
Check the build prerequisites for your platform before proceeding
|
||||
|
||||
|
@ -13,7 +13,7 @@ Check the build prerequisites for your platform before proceeding
|
|||
* [Linux](build-instructions-linux.md#prerequisites)
|
||||
* [Windows](build-instructions-windows.md#prerequisites)
|
||||
|
||||
## Install `depot_tools`
|
||||
## GN prerequisites
|
||||
|
||||
You'll need to install [`depot_tools`][depot-tools], the toolset
|
||||
used for fetching Chromium and its dependencies.
|
||||
|
@ -27,20 +27,33 @@ try to download a Google-internal version that only Googlers have access to).
|
|||
|
||||
[depot-tools]: http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
|
||||
|
||||
## Getting the Code
|
||||
## Cached builds (optional step)
|
||||
|
||||
### Using a Git cache (optional step)
|
||||
### GIT_CACHE_PATH
|
||||
|
||||
`gclient` fetches about 16G worth of repository data. If you plan on building
|
||||
more than once, consider using its cache feature to make future calls faster:
|
||||
If you plan on building Electron more than once, adding a git cache will
|
||||
speed up subsequent calls to `gclient`. To do this, set a `GIT_CACHE_PATH`
|
||||
environment variable:
|
||||
|
||||
```sh
|
||||
$ export GIT_CACHE_PATH="$HOME/.git_cache"
|
||||
$ mkdir -p "$GIT_CACHE_PATH"
|
||||
# This will take about 16G.
|
||||
$ export GIT_CACHE_PATH="${HOME}/.git_cache"
|
||||
$ mkdir -p "${GIT_CACHE_PATH}"
|
||||
# This will use about 16G.
|
||||
```
|
||||
|
||||
### Getting the code with gclient
|
||||
### sccache
|
||||
|
||||
Thousands of files must be compiled to build Chromium and Electron.
|
||||
You can avoid much of the wait by reusing Electron CI's build output via
|
||||
[sccache](https://github.com/mozilla/sccache). This requires some
|
||||
optional steps (listed below) and these two environment variables:
|
||||
|
||||
```sh
|
||||
export SCCACHE_BUCKET="electronjs-sccache"
|
||||
export SCCACHE_TWO_TIER=true
|
||||
```
|
||||
|
||||
## Getting the code
|
||||
|
||||
```sh
|
||||
$ mkdir electron-gn && cd electron-gn
|
||||
|
@ -57,7 +70,9 @@ $ gclient sync --with_branch_heads --with_tags
|
|||
```sh
|
||||
$ cd src
|
||||
$ export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools
|
||||
$ gn gen out/Default --args='import("//electron/build/args/debug.gn")'
|
||||
# this next line is needed only if building with sccache
|
||||
$ export GN_EXTRA_ARGS="${GN_EXTRA_ARGS} cc_wrapper=\"${PWD}/electron/external_binaries/sccache\""
|
||||
$ gn gen out/Default --args="import(\"//electron/build/args/debug.gn\") $GN_EXTRA_ARGS"
|
||||
```
|
||||
|
||||
This will generate a build directory `out/Default` under `src/` with
|
||||
|
@ -73,14 +88,14 @@ out/Default --list`.
|
|||
Electron:**
|
||||
|
||||
```sh
|
||||
$ gn gen out/Default --args='import("//electron/build/args/debug.gn")'
|
||||
$ gn gen out/Default --args='import("//electron/build/args/debug.gn") $GN_EXTRA_ARGS'
|
||||
```
|
||||
|
||||
**For generating Release (aka "non-component" or "static") build config of
|
||||
Electron:**
|
||||
|
||||
```sh
|
||||
$ gn gen out/Default --args='import("//electron/build/args/release.gn")'
|
||||
$ gn gen out/Default --args="import(\"//electron/build/args/release.gn\") $GN_EXTRA_ARGS"
|
||||
```
|
||||
|
||||
**To build, run `ninja` with the `electron:electron_app` target:**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue