/icecc-chromium

Scripts and config files for building chromium on an icecc-cluster

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Building chromium on an icecc cluster

Prerequisites

  • A chromium checkout on a Linux computer
  • ccache
  • icecc version >= 1.1rc2.
  • A functioning icecc cluster and a running iceccd on the local computer

Setup

  • Add repo root directory to $PATH
  • source ccache-env
  • Add custom hook to .gclient. See documentation in icecc-create-env.py
  • Run gclient runhooks

Inject the settings in icecc.gni into your build config, either explicitly:

gn gen out \
  --args='use_debug_fission=false clang_use_chrome_plugins=false enable_nacl=false linux_use_bundled_binutils=false cc_wrapper="ccache" ffmpeg_use_atomics_fallback=true enable_swiftshader=false'

Or by importing the absolute path to icecc.gni from args.gn:

mkdir -p out
dir=$(dirname $(which icecc-ninja))
echo "import(\"$dir/icecc.gni\")" > out/args.gn
gn gen out

Usage

Build with icecc-ninja instead of ninja. For instance:

icecc-ninja -j64 -C out/Release blink_tests

Issues

Using clang plugins does not work. They are disabled in icecc.gni which means that e.g. some oilpan errors will go unnoticed.

From time to time there are compile errors which only happen when distributed with icecc. I have seen at least the avx512 issue mentioned in [1]. A workaround for that without messing with local patches is to run ninja instead of icecc-ninja for the problematic target(s).

[1] [https://github.com/ds-hwang/wiki/wiki/Set-up-icecc-with-heterogeneous-env] (https://github.com/ds-hwang/wiki/wiki/Set-up-icecc-with-heterogeneous-env)

License

See LICENSE file