Chromium-60.0.3112.101

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

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]

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]

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]

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]

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.

Contents

Programmes installés: /usr/lib/chromium/chromium, /usr/lib/chromium/chromedriver, et /usr/lib/chromium/chrome-sandbox
Bibliothèques installées: none
Répertoires installés: /usr/lib/chromium

Descriptions courtes

/usr/lib/chromium/chromium

est l'exécutable chromium principal.

/usr/lib/chromium/chromedriver

est un WebDriver pour chromium.

/usr/lib/chromium/chrome-sandbox

crée un environnement de bac à sable pour lancer du code auquel on ne fait pas confiance (les greffons).

Last updated on 2017-08-22 08:29:00 +0200