Introduction à Chromium
        
        
          Chormium est un projet de
          navigateur libre qui a pour but de construire une expérience
          utilisateur plus sure, plus rapide et plus stable sur le web.
        
        
          Ce paquet est connu pour se construire correctement sur une
          plateforme LFS-8.1.
        
        
          Informations sur le paquet
        
        
        
          Téléchargements supplémentaires
        
        
          Correctif requis pour corriger des problèmes de construction avec
          gcc-7.1.0 :
        
        
        
          Correctif requis pour corriger des problèmes de construction avec
          GlibC-2.26 :
        
        
        
          Binaires de Chrome facultatifs pour extraire le support du greffon
          (Netflix) WideVine :
        
        
        
        
          Dépendances de Chromium
        
        
          Requises
        
        
          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 et Système X
          Window
        
        
          Recommandées
        
        
          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 et
          yasm-1.3.0
        
        
          Facultatives
        
        
          GConf-3.2.6, ICU-59.1 (actuellement
          cassé) gnome-keyring-3.20.1, libevent-2.1.8 (actuellement cassé), libvpx-1.6.1 (actuellement cassé), libxml2-2.9.4 (actuellement cassé), speech-dispatcher (pour
          le lecteur d'écran) et snappy
        
        
          Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/chromium
        
       
      
        
          Installation de Chromium
        
        
          Appliquez un correctif corrigeant des erreurs de construction avec
          gcc-7.1.0 :
        
        patch -Np1 -i ../chromium-60.0.3112.101-gcc7-1.patch
        
          Appliquez un correctif pour corriger un problème lors de la
          construction avec GlibC-2.26 :
        
        patch -Np1 -i ../chromium-60.0.3112.101-glibc-2.26-1.patch
        
          Activez l'utilisation du greffon WideVine, requis pour le support de
          Netflix (voyez la section WideVine ci-dessous). Définissez un nom
          de produit disponible ("Pinkie Pie" dans ce cas) avec la commande
          suivante :
        
        sed 's/WIDEVINE_CDM_AVAILABLE/&\n\n#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"/' \
    -i third_party/widevine/cdm/stub/widevine_cdm_version.h
        
          Corrigez un problème de construction dans gn :
        
        sed "/delayed_task_manager.cc/a\      'base/task_scheduler/environment_config.cc'," \
    -i tools/gn/bootstrap/bootstrap.py
        
          Supprimez les fichiers de construction tiers qui interfèrent avec
          les versions du système :
        
        
          
          
            Note
          
          
            Chromium utilise plusieurs projets externes, les sélections
            ci-dessous ne sont pas gravées dans le marbre, cependant elles
            ont été testées soigneusement. Avec Chromium 60.0.3112.101, les
            versions systèmes de icu, libevent, libvpx, libxml2 et zlib sont
            connues pour casser actuellement la construction.
          
         
        
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 utilise un outil interne,
          gn,
          pour générer les fichiers de construction Ninja. La configuration complète de la
          construction se fait avec les commandes suivantes :
        
        
          
          
            Note
          
          
            Les clefs API de Google et les jetons OAuth ci-dessous sont
            spécifiques à LFS. Si vous utilisez ces instructions pour une
            autre distribution, ou si vous souhaitez distribuer des copies
            binaires de ce logiciel en utilisant ces instructions, merci
            d'obtenir vos propres clefs en suivant les instructions
            disponibles sur 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')
        
          Construisez gn et utilisez-le pour
          préparer les fichiers de construction Ninja :
        
        python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &&
out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"
        
          
          
            Avertissement
          
          
            Ninja, par défaut, initialise le nombre de travaux au nombre de
            threads disponibles. Si la mémoire de votre machine est réduite,
            comparée au nombre de threads, vous devriez réduire le nombre de
            travaux en passant le paramètre -j# à la commande ninja ci-dessous. Prévoyez
            environ 1.25 Go par thread pendant l'édition des liens de
            WebKit pour éviter les erreurs
            de mémoire.
          
         
        
          Construisez Chromium en utilisant
          les commandes suivantes :
        
        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
        
          Ce paquet a déjà été testé pendant la construction.
        
        
          Maintenant en tant qu'utilisateur root, installez le paquet :
        
        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
        
          Toujours en root, installez les
          icônes et le fichier .desktop :
        
        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
        
          
          
            Note
          
          
            Si vous mettez à jour depuis une construction précédente de
            chromium qui utilisait gtk+-2.x, vous pourriez devoir supprimer
            le répertoire ~/.config/chromium.
          
         
        
          Extraction du greffon WideVine de Chrome
        
        
          Extrayez le fichier deb téléchargé avec les commandes
          suivantes :
        
        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
        
          En tant qu'utilisateur root,
          installez le greffon WideVine avec les commandes suivantes :
        
        
tar -xf data.tar.xz                                                        &&
install -vm755 ../out/Release/libwidevinecdmadapter.so /usr/lib/chromium/  &&
install -vm755 opt/google/chrome/libwidevinecdm.so  /usr/lib/chromium/
       
      
        
          Explication des commandes
        
        
          GN_CONFIG=(...) : ce tableau
          contient toutes les définitions utilisées dans la construction.
        
        
          python
          tools/gn/bootstrap/bootstrap.py --gn-gen-args
          "${GN_CONFIG[*]}" : cette commande remplace
          les définitions dans les fichiers gn avec les valeurs contenues
          dans ${GN_CONFIG[@]}.
        
        
          out/Release/gn gen out/Release
          --args="${GN_CONFIG[*]}" : cette commande
          lance un script de configuration fournit par Google, gn, dans l'arborescence des sources pour
          produire une configuration Ninja
          appropriée pour la machine qui construit.
        
        
          mkdir...ln -s /usr/bin/node
          third_party/node/linux/node-linux-x64/bin/ :
          Ces commandes remplacent le Node.js local (qui n'est plus disponible) avec
          le Node.js installé sur le
          système.
        
        
          ar -x
          ../../google-chrome-stable*.deb : l'utilitaire
          ar est utilisé pour
          extraire les archives Debian.