brave/browser-laptop maintains its own version of electron and therefore also its own version of electron-prebuilt.
Releases of brave/electron get added to the gh-pages branch of brave/browser-electron-releases.
brave/browser-laptop's dependency on brave/electron-prebuilt will download directly from brave/browser-laptop-releases github public page.
To create a new release of brave/electron for use in brave/electron-prebuilt:
- Clone electron with
git clone --recursive git@github.com:brave/electron - Rebase
brave/electron's commits to the upstream tag you'd like to create a release for. e.g.git rebase v0.37.2 - Make sure the submodule dependencies in
vendor/are up to date. - For Linux and macOS builds, run
ELECTRON_RELEASE=1 ATOM_SHELL_GITHUB_TOKEN=<your-github-token> LIBCHROMIUMCONTENT_MIRROR=https://s3.amazonaws.com/brave-laptop-binaries/libchromiumcontent ./script/cibuild. Replace<your-github-token>with a token generated from https://github.com/settings/tokens - For Windows builds, run
ELECTRON_RELEASE=1 ATOM_SHELL_GITHUB_TOKEN=<your-github-token> LIBCHROMIUMCONTENT_MIRROR=https://s3.amazonaws.com/brave-laptop-binaries/libchromiumcontent npm run cibuild-windows. - Manually download the release zip to a subfolder of
brave/browser-laptop-releasesand push it out. - Mark the release draft as completed in the
brave/electronrepository releases page. - Increase the version number of the package.json file so that
npm installinbrowser-laptopwill start using it.
First follow the steps in the previous section.
git clone git@github.com/brave/browser-laptop
rm -Rf ~/.electron
npm install
If you already have the repo checked out, it's recommended to rm -Rf node_modules instead of the clone.
Then do the following per OS:
macOS:
CHANNEL=dev npm run build-package
IDENTIFIER=id-here npm run build-installer
Windows:
CHANNEL=dev npm run build-package
CERT_PASSWORD=‘password-here’ npm run build-installer
Check virus scan: https://www.virustotal.com/en/
Linux:
./node_modules/.bin/webpack
CHANNEL=dev npm run build-package
CHANNEL=dev npm run build-installer
tar -jcvf Brave.tar.bz2 ./Brave-linux-x64
Brave's electron fork maintains its own versions of brightray, libchromiumcontent, and node. The primary purpose of doing this is to be able to update dependencies for security releases faster than Electron does.
- Generate a new tarball from
brave/chromium-source-tarballfor the new version./script/bootstrapfollowed by./script/sync 49.0.2623.75followed byGITHUB_TOKEN=key-here ./script/upload. - Rebase
brave/libchromiumcontentfromatom/libchromiumcontentupstream. - Change
brave/libchromiumcontent/VERSIONto contain the chromium version tag to change to. Example49.0.2623.75. You can see the latest tags here: https://chromium.googlesource.com/chromium/src.git/+refs - You can create patches as needed inside
brave/libchromiumcontent/patches. They will be automatically applied when doing builds. - Some of the patches just mentioned will need rebasing on the new version.
- run
LIBCHROMIUMCONTENT_S3_BUCKET=brave-laptop-binaries LIBCHROMIUMCONTENT_S3_ACCESS_KEY=key-here AWS_ACCESS_KEY_SECRET=key-here AWS_ACCESS_KEY_SECRET=key-here LIBCHROMIUMCONTENT_S3_SECRET_KEY=key-here ./script/cibuild. - Brave's S3 bucket
brave-laptop-binarieswill be updated with the needed binaries. - Update
brave/brightray's/vendor/libchromiumcontentsubmodule to point to the latestbrave/libchromiumcontentchangeset. - From
brave/electron/script/lib/config.pychangeLIBCHROMIUMCONTENT_COMMITto point to the correct changeset frombrave/libchromiumcontent. - Update
brave/electron's/vendor/brighraysubmodule to point to the latestbrave/brightraychangeset. - Update
brave/electron/atom/common/chrome_version.hto include the latest version. I think it is also set automatically on builds though.
- Rebase
brave/nodefrom a tag or changeset inhttps://github.com/nodejs/node. - Update
brave/electron/vendor/nodesubmodule to refer to the latest changeset inbrave/node. - Update each of the building machines to match the version of Node that you're upgrading to. This is needed because
postinstallrebuilds native modules and it should match the exact Node version. - You can tell which Node version we're on by looking at the first
brave/nodecommit which is not fromelectron/node. I.e. the first one fromnodejs/node.