Contents
Short Descriptions
is the main chromium executable. |
|
is a WebDriver for Chromium. |
|
creates a sandboxed environment for running untrusted code (plugins). |
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
This package is known to build and work properly using an LFS-8.1 platform.
Download (HTTP): https://commondatastorage.googleapis.com/chromium-browser-official/chromium-60.0.3112.101.tar.xz
Download MD5 sum: 9fe9af85faeaf617cb61997c431a02e2
Download size: 513 MB
Estimated disk space required: 5.9 GB
Estimated build time: 94 SBU (with 4 threads)
Download (HTTP):
Download MD5 sum: 70f90d19dcf51a87b7f6df788b5fddc7
Download size: 60 MB
Download (HTTP):
Download MD5 sum: 895e877b9bfe5da05a061369c2078626
Download size: 45 MB
alsa-lib-1.1.4.1, Cups-2.2.4, desktop-file-utils-0.23, dbus-1.10.22, File::BaseDir-0.07, GTK+-3.22.18, hicolor-icon-theme-0.15, MIT Kerberos V5-1.15.1, Mesa-17.1.6, Ninja-1.7.2, nodejs-8.4.0, NSS-3.32, Python-2.7.13, usbutils-008, and X Window System
FFmpeg-3.3.3, FLAC-1.3.2, git-2.14.1, libexif-0.6.21, libjpeg-turbo-1.5.2, libpng-1.6.31, libsecret-0.18.5, libwebp-0.6.0, pciutils-3.5.5, PulseAudio-10.0, xdg-utils-1.1.2, and yasm-1.3.0
GConf-3.2.6, ICU-59.1 (currently broken), gnome-keyring-3.20.1, libevent-2.1.8 (currently broken), libvpx-1.6.1 (currently broken), libxml2-2.9.4 (currently broken), speech-dispatcher (for the screen reader), and snappy
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/chromium
Apply a patch to fix errors with building with GCC-7.1.0:
patch -Np1 -i ../chromium-60.0.3112.101-gcc7-1.patch
Apply a patch to fix an issue when building against GlibC-2.26:
patch -Np1 -i ../chromium-60.0.3112.101-glibc-2.26-1.patch
Enable the use of the WideVine plugin, needed for Netflix support (see the WideVine section below). Define an available product name ("Pinkie Pie" in this case) with the following command:
sed 's/WIDEVINE_CDM_AVAILABLE/&\n\n#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"/' \ -i third_party/widevine/cdm/stub/widevine_cdm_version.h
Fix a build error in gn:
sed "/delayed_task_manager.cc/a\ 'base/task_scheduler/environment_config.cc'," \ -i tools/gn/bootstrap/bootstrap.py
Remove third-party build files that interfere with system versions:
Chromium uses many external projects, the selections below are not set in stone, however they have been tested thoroughly. With Chromium 60.0.3112.101, system versions of icu, libevent, libvpx, libxml2, and zlib are known to break the build at this time.
for LIB in ffmpeg flac harfbuzz-ng libjpeg \ libjpeg_turbo libpng libwebp libxslt yasm; do find -type f -path "*third_party/$LIB/*" \ \! -path "*third_party/$LIB/chromium/*" \ \! -path "*third_party/$LIB/google/*" \ \! -path "*base/third_party/icu/*" \ \! -path "*base/third_party/libevent/*" \ \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ -delete done && python build/linux/unbundle/replace_gn_files.py \ --system-libraries ffmpeg flac harfbuzz-ng libjpeg \ libpng libwebp libxslt yasm && python third_party/libaddressinput/chromium/tools/update-strings.py
Chromium uses an internal tool, gn, to generate the Ninja build files. Complete configuration of the build using the following commands:
The Google API Key and OAuth tokens below are specific to LFS. If using these instructions for another distro, or if you intend to distribute binary copies of the software using these instructions, please obtain your own keys following the instructions located at http://www.chromium.org/developers/how-tos/api-keys.
GN_CONFIG=('google_api_key="AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ"' 'google_default_client_id="595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com"' 'google_default_client_secret="5ntt6GbbkjnTVXx-MSxbmx5e"' 'clang_use_chrome_plugins=false' 'enable_hangout_services_extension=true' 'enable_nacl=false' 'enable_nacl_nonsfi=false' 'enable_swiftshader=false' 'enable_widevine=true' 'fatal_linker_warnings=false' 'ffmpeg_branding="Chrome"' 'fieldtrial_testing_like_official_build=true' 'is_debug=false' 'is_clang=false' 'link_pulseaudio=true' 'linux_use_bundled_binutils=false' 'proprietary_codecs=true' 'remove_webcore_debug_symbols=true' 'symbol_level=0' 'treat_warnings_as_errors=false' 'use_allocator="none"' 'use_cups=true' 'use_gconf=false' 'use_gnome_keyring=false' 'use_gold=false' 'use_gtk3=true' 'use_kerberos=true' 'use_pulseaudio=true' 'use_sysroot=false')
Build gn and use it to prepare the Ninja build files:
python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" && out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"
Ninja, by default, sets the number of jobs to the number of
availalble threads. If your machine is memory constrained, with
regard to number of threads, you should reduce the number of jobs
by passing the -j#
switch
to the ninja
command below. Plan for roughly 1.25GB per thread while linking
WebKit to avoid out of memery
errors.
Build Chromium using the following commands:
mkdir -p third_party/node/linux/node-linux-x64/bin && ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ && ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter
This package was already tested as part of the build.
Now, as the root
user, install the
package:
install -vDm755 out/Release/chrome \ /usr/lib/chromium/chromium && install -vDm4755 out/Release/chrome_sandbox \ /usr/lib/chromium/chrome-sandbox && install -vDm755 out/Release/chromedriver \ /usr/lib/chromium/chromedriver && ln -svf /usr/lib/chromium/chromium /usr/bin && ln -svf /usr/lib/chromium/chromedriver /usr/bin/ && install -vm644 out/Release/icudtl.dat /usr/lib/chromium/ && install -vDm644 out/Release/gen/content/content_resources.pak \ /usr/lib/chromium/ && install -vm644 out/Release/{*.pak,*.bin} \ /usr/lib/chromium/ && cp -av out/Release/locales /usr/lib/chromium/ && chown -Rv root:root /usr/lib/chromium/locales && install -vDm644 out/Release/chrome.1 \ /usr/share/man/man1/chromium.1
While still the root
user, install
icons and the .desktop file:
for size in 16 32; do install -vDm644 \ "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" done && for size in 22 24 48 64 128 256; do install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \ "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png" done && cat > /usr/share/applications/chromium.desktop << "EOF" [Desktop Entry] Encoding=UTF-8 Name=Chromium Web Browser Comment=Access the Internet GenericName=Web Browser Exec=chromium %u Terminal=false Type=Application Icon=chromium Categories=GTK;Network;WebBrowser; MimeType=application/xhtml+xml;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; EOF
If upgrading from a previous build of chromium using gtk+-2.x,
you may need to remove the ~/.config/chromium
directory.
Extract the downloaded deb file with the following commands:
mkdir temp && cd temp && case $(uname -m) in x86_64) ar -x ../../google-chrome-stable_60.0.3112.101-1_amd64.deb ;; i?86) ar -x ../../google-chrome-stable_48.0.2564.116-1_i386.deb ;; esac
As the root
user, enable the
WideVine plugin with the following commands:
tar -xf data.tar.xz && install -vm755 ../out/Release/libwidevinecdmadapter.so /usr/lib/chromium/ && install -vm755 opt/google/chrome/libwidevinecdm.so /usr/lib/chromium/
GN_CONFIG=(...): this array contains all of the defines used in the build.
python
tools/gn/bootstrap/bootstrap.py --gn-gen-args
"${GN_CONFIG[*]}": this command replaces defines in
the gn files with the values contained in ${GN_CONFIG[@]}
.
out/Release/gn gen out/Release --args="${GN_CONFIG[*]}": this command runs a Google provided configuration script gn on the source tree to produce a Ninja configuration suitable for the build machine.
mkdir...ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/: these commands replaced the local Node.js (no longer available) with the system installed Node.js.
ar -x ../../google-chrome-stable*.deb: the ar utility is used to extract Debian archives.
is the main chromium executable. |
|
is a WebDriver for Chromium. |
|
creates a sandboxed environment for running untrusted code (plugins). |
Last updated on 2017-08-21 23:29:00 -0700