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.