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.2.
Informations sur le paquet
Téléchargements supplémentaires
Correctif requis :
Binaires de Chrome facultatifs pour extraire le support du greffon
(Netflix) WideVine :
Dépendances de Chromium
Requises
alsa-lib-1.1.5, Cups-2.2.6, desktop-file-utils-0.23, dbus-1.12.4, File::BaseDir-0.07, GTK+-3.22.28, hicolor-icon-theme-0.17, MIT Kerberos V5-1.16, Mesa-17.3.4,
nodejs-9.5.0, NSS-3.35, Python-2.7.14, usbutils-009 et
Système X
Window
Recommandées
make-ca-0.7 (exécution), FLAC-1.3.2,
git-2.16.2, Liberation fonts libexif-0.6.21, libjpeg-turbo-1.5.3, libsecret-0.18.5, libwebp-0.6.1,
pciutils-3.5.6, PulseAudio-11.1, xdg-utils-1.1.2 et
yasm-1.3.0
Facultatives
FFmpeg-3.4.2 (actuellement cassé), GConf-3.2.6, ICU-60.2 (actuellement
cassé), gnome-keyring-3.20.1, libevent-2.1.8, libpng-1.6.34
(actuellement cassé), libvpx-1.7.0
(actuellement cassé), libxml2-2.9.7
(actuellement cassé), UPower-0.99.7 (exécution), speech-dispatcher (pour
le lecteur d'écran) et snappy
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/chromium
Installation de Chromium
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 :
line='#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"'
sed "/WIDEVINE_CDM_AVAILABLE/a$line" \
-i third_party/widevine/cdm/stub/widevine_cdm_version.h
Éventuellement ignorez plusieurs (2000+) avertissements
invalides :
sed '/static_assert/s:^://:' \
-i third_party/WebKit/Source/platform/wtf/text/TextCodec.h
Corrigez un problème de construction avec la version actuelle de
GCC :
patch -Np1 -i ../chromium-64.0.3282.186-constexpr-1.patch
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 64.0.3282.186, les
versions systèmes de libvpx, libxml2 et zlib sont connues pour
casser actuellement la construction.
for LIB in flac freetype harfbuzz-ng libjpeg \
libjpeg_turbo 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 './third_party/yasm/run_yasm.py' \
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
\! -path './third_party/freetype/src/src/psnames/pstables.h' \
-delete
done &&
python build/linux/unbundle/replace_gn_files.py \
--system-libraries flac libjpeg libxml libevent \
libwebp libxslt opus 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'
'use_system_freetype=true'
'use_system_harfbuzz=true')
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 -vDm644 out/Release/gen/content/content_resources.pak \
/usr/lib/chromium/ &&
install -vDm644 out/Release/icudtl.dat \
/usr/lib/chromium/icudtl.dat &&
install -vDm644 out/Release/{*.pak,*.bin} \
/usr/lib/chromium/ &&
sed -i \
-e "s/@@MENUNAME@@/Chromium/g" \
-e "s/@@PACKAGE@@/chromium/g" \
-e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
chrome/installer/linux/common/desktop.template \
chrome/app/resources/manpage.1.in &&
install -vDm644 chrome/installer/linux/common/desktop.template \
/usr/share/applications/chromium.desktop &&
install -vDm644 chrome/app/resources/manpage.1.in \
/usr/share/man/man1/chromium.1 &&
cp -av out/Release/locales /usr/lib/chromium/ &&
chown -Rv root:root /usr/lib/chromium/locales &&
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
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_64.0.3282.186-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.