Introduction to Chromium
        
        
          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.0
          platform.
        
        
          Package Information
        
        
        
          Additional Downloads
        
        
          
          
            Note
          
          
            Download this file via wget as:
          
          
wget https://github.com/foutrelis/chromium-launcher/archive/v3.tar.gz \
     -O chromium-launcher-3.tar.gz
         
        
        
          Chromium Dependencies
        
        
          Required
        
        
          alsa-lib-1.1.3, Cups-2.2.2, desktop-file-utils-0.23, dbus-1.10.14, File::BaseDir-0.07, GTK+-2.24.31, hicolor-icon-theme-0.15, MIT Kerberos V5-1.15, Mesa-13.0.4,
          Ninja-1.7.2, NSS-3.29, Python-2.7.13, usbutils-008,
          and X Window
          System
        
        
          Recommended
        
        
          FLAC-1.3.2, git-2.11.1, libevent-2.1.8, libexif-0.6.21, libsecret-0.18.5, libwebp-0.6.0,
          pciutils-3.5.2, PulseAudio-10.0, xdg-utils-1.1.1, and
          yasm-1.3.0
        
        
          Optional
        
        
          FFmpeg-3.2.4, GConf-3.2.6,
          gnome-keyring-3.20.0, ICU-58.2, libjpeg-turbo-1.5.1, libpng-1.6.28, libxml2-2.9.4,
          libvpx-1.6.1, speech-dispatcher (for
          the screen reader), and snappy
        
        
          User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/chromium
        
       
      
        
          Installation of Chromium
        
        
          Fix a build issue on Linux-4.5+:
        
        
sed 's/#include <sys\/mman\.h>/&\n\n#if defined(MADV_FREE)\n#undef MADV_FREE\n#endif\n/' \
    -i third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp
        
          Fix a build issue with GCC-6:
        
        
sed "s/^config(\"compiler\") {/&\ncflags_cc = [ \"-fno-delete-null-pointer-checks\" ]/" \
    -i build/config/linux/BUILD.gn
        
          If you'd like to enable the use of the WideVine plugin, needed for Netflix
          support (see the WideVine section below), you'll need to 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
        
          Remove third-party build files that interfere with system versions:
        
        
          
          
            Note
          
          
            Chromium uses many external projects, the selections below are
            not set in stone, however they have been tested thoroughly. With
            Chromium 56.0.2924.87, system versions of icu, libjpeg, libpng,
            libxml2, libvpx, and zlib are known to break the build at this
            time.
          
         
        
for LIB in flac harfbuzz-ng libwebp libxslt yasm; do
    find -type f -path "*third_party/$LIB/*" \
        \! -path "*third_party/$LIB/chromium/*" \
        \! -path "*third_party/$LIB/google/*" \
        \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
        -delete
done &&
python build/linux/unbundle/replace_gn_files.py \
    --system-libraries flac harfbuzz-ng libwebp libxslt yasm
        
          Chromium uses an internal tool,
          gn,
          to generate the Ninja build files.
          Complete configuration of the build using the following commands:
        
        
          
          
            Note
          
          
            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_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=false'
'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[*]}"
        
          Build Chromium using the following
          command:
        
        
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
          pacakage:
        
        
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 -vm755 out/Release/libwidevinecdmadapter.so \
               /usr/lib/chromium/                             &&
install -vDm644 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
        
          Chromium Launcher
        
        
          Chromium Launcher is a wrapper for
          chromium that allows use of the
          Pepper Flash plugin. If you intend to use the Pepper Flash plugin, build Chromium Launcher by running the following
          commands:
        
        
tar -xf ../chromium-launcher-3.tar.gz &&
cd chromium-launcher-3                &&
make PREFIX=/usr
        
          Install Chromium Launcher with the following commands (as the
          root user):
        
        
rm -f /usr/bin/chromium        &&
make PREFIX=/usr install-strip &&
cd ..
        
          Extracting the WideVine plugin from Chrome
        
        
          Extract the downloaded deb file with the following commands:
        
        
mkdir temp                                         &&
cd temp                                            &&
ar -x ../../google-chrome-stable_56.0.2924.87*.deb &&
tar -xf data.tar.xz
        
          As the root user, install the
          WideVine plugin with the following command:
        
        
install -vm755 opt/google/chrome/libwidevinecdm.so \
    /usr/lib/chromium/
        
          Installing the Pepper Flash plugin:
        
        
          Extract the Flash Player plugin
          with the following command:
        
        
tar -xf ../../flash_player_ppapi_linux.*.tar.gz
        
          As the root user, install the
          Pepper Flash plugin with the following command:
        
        
install -vdm755 /usr/lib/PepperFlash                     &&
install -vm755 libpepflashplayer.so /usr/lib/PepperFlash &&
install -vm644 manifest.json /usr/lib/PepperFlash