61 lines
2 KiB
Markdown
61 lines
2 KiB
Markdown
# Goma
|
|
|
|
> Goma is a distributed compiler service for open-source projects such as
|
|
> Chromium and Android.
|
|
|
|
Electron has a deployment of a custom Goma Backend that we make available to
|
|
all Electron Maintainers. See the [Access](#access) section below for details
|
|
on authentication.
|
|
|
|
## Enabling Goma
|
|
|
|
Currently Electron Goma supports both Windows and Linux, we may add macOS
|
|
support at some point in the future. If you are on a supported platform
|
|
you can enable goma by importing the `goma.gn` config file when using `gn`.
|
|
|
|
```bash
|
|
gn gen out/Testing --args="import(\"//electron/build/args/testing.gn\") import(\"//electron/build/args/goma.gn\")"
|
|
```
|
|
|
|
You must ensure that you do not have `cc_wrapper` configured, this means you
|
|
can't use `sccache` or similar technology.
|
|
|
|
Before you can use goma to build Electron you need to authenticate against
|
|
the Goma service. You only need to do this once per-machine.
|
|
|
|
```bash
|
|
cd electron/external_binaries/goma
|
|
goma_auth.py login
|
|
```
|
|
|
|
Once authenticated you need to make sure the goma daemon is running on your
|
|
machine.
|
|
|
|
```bash
|
|
cd electron/external_binaries/goma
|
|
goma_ctl.py ensure_start
|
|
```
|
|
|
|
## Building with Goma
|
|
|
|
When you are using Goma you can run `ninja` with a substantially higher `j`
|
|
value than would normally be supported by your machine. Please do not set
|
|
a value higher than **300**, we monitor the goma system and users found to
|
|
be abusing it with unreasonable concurrency will be de-activated.
|
|
|
|
```bash
|
|
ninja -C out/Testing electron -j 200
|
|
```
|
|
|
|
## Monitoring Goma
|
|
|
|
If you access [http://localhost:8088](http://localhost:8088) on your local
|
|
machine you can monitor compile jobs as they flow through the goma system.
|
|
|
|
## Access
|
|
|
|
For security and cost reasons access to Electron Goma is currently restricted
|
|
to Electron Maintainers. If you want access please head to `#access-requests` in
|
|
Slack and ping `@goma-squad` to ask for access. Please be aware that being a
|
|
maintainer does not *automatically* grant access and access is determined on a
|
|
case by case basis.
|