/bromite-builder

Utility script for building Bromite releases

Primary LanguageShellGNU General Public License v3.0GPL-3.0

Bromite Builder

Utility script for building Bromite releases

Requirements

  • A 64-bit Intel machine running Linux with at least 8GB of RAM. More than 16GB is highly recommended.
  • At least 100GB of free disk space.
  • Git and Python for checking out and building Chromium

Setup

Ubuntu users' systems will be bootstrapped via Chromium's build/install-build-deps-android.sh if the --ubuntu-install-build-deps flag is set. It requires root permissions and may install unwanted software.

All other distro users should follow Chromium's Notes For Other Distros

Checking out the repo:

git clone https://github.com/nikolowry/bromite-builder.git; \
cd bromite-builder

Usage

Usage instructions are always available by running ./bromite-builder -h or ./bromite-builder --help

Usage: ./bromite-builder [command...] [options...]

Where optional [command] is one of:
  build, clean, fetch-sync, prepare, set-revision

If no [command] is set, the default command sequence will be executed:
  - set-revision
  - fetch-sync
  - prepare
  - build

Options:
  -a, --arch=<arch>
    Where <arch> is: arm, arm64, x86, x64.
    Defaults to arm

  -b, --bromite-git-url=<url>
    Where <url> is a Bromite Git repository.
    Defaults to https://github.com/bromite/bromite.git

  -g, --gn-args=<args>
    Where <args> is a string of GN build arguments

  -n, --name=<package-name>
    Where <package-name> is a valid Android package name

  -o, --output-dir=<dir>
    Where <dir> is a path to save the APK.
    Defaults to ./out

  -p, --patches-dir=<dir>
    Where <dir> is a path to a directory containing custom patches

  -t, --target=<target>
    Where Ninja <target> is: chrome_public_apk, system_webview_apk.
    Defaults to chrome_public_apk

  -r, --revision=<revision>
    Where <revision> is a Bromite release tag.
    Defaults to latest release

  -u, --upstream=<commit-hash>
    Where <commit-hash> is a long-format git commit.
    Defaults to master's HEAD.
    When set, any Chromium tag can be assigned to <revision>

  --no-bromite-package-name
    Use "org.chromium.chrome" for package name.
    Overridden if <package-name> is set

  --no-bromite-patches
    Only apply patches from Bromite's chromium_patches_list.txt

  --no-skip-patches
    Exit on failed patch attempts

  --dark-navbar
    Prefer a dark navigation bar over a white one

  --ubuntu-install-build-deps
    Run Chromium's build/install-build-deps-android.sh during fetch-sync

  -h, --help
    Print help menu

Notes

Builds produced with bromite-builder differ from official Bromite releases with the following:

  • Retains Chromium branding and namespace with option --no-bromite-package-name
  • Build flag to revert the white Navigation Bar in the Material Design Refresh (MD2) to black with option --dark-navbar
  • GN args to default to disabled symbols for faster build times: blink_symbol_level=0 symbol_level=0 enable_resource_allowlist_generation=false treat_warnings_as_errors=false.

If Bromite's Automated-domain-substitution.patch fails to apply, Ungoogled Chromium's domain substitution utility will be used as a fallback instead. To disable this fallback, add the --no-skip-patches flag to your bromite-builder command.

Resources