Semi-automatic and reproducible CEF build
September 14, 2022 ยท View on GitHub
Initial container setup
To be done once (hopefully). This container will have the basic build dependencies installed.
podman build -t cef-buildbox:v1 .
toolbox create -c cef-buildbox --image cef-buildbox:v1
Get the code (lots of it)
To get the code or update the checkout. In this example the code will be stored in cef-build. You need around 30GB of free disk space.
toolbox run -c cef-buildbox python3 /cef/automate-git.py --download-dir=$PWD/cef-build --branch=5195 --no-distrib --no-build
Compile the things
This will bake a release build in cef-build/chromium/src/cef/binary_distrib.
GN flags can be tweaked in the compile-cef script and additional
automate-git.py CLI options can be passed through the command-line.
toolbox run -c cef-buildbox ./compile-cef --download-dir=$PWD/cef-build --branch=5195 --no-debug-build
The branch number doesn't need to match with the previous automate-git.py
call. The compile-cef call will also ensure the given branch number has been
fetched. You can refer to the CEF
branches
Wiki page when updating it.
Host the stuff
Write a SHA1 checksum file for each tarball, and host everything through a Web server.
for f in (find cef-build/chromium/src/cef/binary_distrib -name "*.tar.bz2")
echo $f
sha1sum $f | cut -d' ' -f1 > $f.sha1
end
python -m http.server --directory cef-build/chromium/src/cef/binary_distrib/ 8080
Customize the gstcef build
rm -fr build/ third_party/
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCEF_VERSION="103.0.12+g8eb56c7+chromium-103.0.5060.134" -DCEF_BUILDS_HOMEPAGE_URL="http://0.0.0.0:8080/" -B build -S .
ninja -C build
The CEF_VERSION value has to match with the tarball filename produced during
the previous steps.