Introduction à QtWebEngine
QtWebEngine intègre les
composantes web de chromium dans
Qt. Il contient sa propre copie de ninja qu'il utilise lors de la
construction s'il ne peut pas trouver une copie sur le système, et
diverses copies de bibliothèques de ffmpeg, icu, libvpx et zlib
(dont libminizip) qui ont été forkées par les développeurs de
chromium.
Ce paquet est connu pour se construire correctement sur une
plateforme LFS-9.1.
Note
Par défaut, ninja utilisera tous les CPU actifs + 2 (si au moins
4 existent), même s'ils ne sont pas disponibles pour la tâche
actuelle parce que le terminal a été restreint avec
« taskset ». Pour éviter cela, voir les explications
des commandes ci-dessous.
De manière inhabituelle, le système de construction GN intégré
(utilisé pour créer les fichiers Ninja) a besoin d'une version
statique de libstdc++.a
bien que
les bibliothèque installées utilisent bien la version partagée.
Si cette bibliothèque statique n'est pas présente, la
construction échouera rapidement. Remarquez que si vous essayez
de construire webengine en tant que partie de Qt et que la bibliothèque statique n'est pas
disponible, cette construction terminera sans installer webengine
ou échouera pendant l'installation (les deux comportements ont
été observés en 5.12.0).
Informations sur le paquet
Dépendances de qtwebengine
Requises
NSS-3.50, Python-2.7.17
et Qt-5.14.1
Recommandées
Note
Si ces paquets ne sont pas installés, le processus de
construction compilera et installera ses propres (sans doute plus
vieilles) versions, avec pour effet d'augmenter l'espace disque
utilisé et le temps pris par la construction et l'installation.
soit alsa-lib-1.2.1.2 soit PulseAudio-13.0 (ou les deux), FFmpeg-4.2.2, Jinja2-2.11.1 (module Python 2), ICU-65.1,
libwebp-1.1.0, libxslt-1.1.34
et Opus-1.3.1
Facultatives
libevent-2.1.11, Poppler-0.85.0, jsoncpp,
libsrtp, snappy
Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/qtwebengine
Installation de qtwebengine
Tout d'abord assurez-vous que les en-têtes locaux sont disponibles
lorsque vous ne construisez pas ce paquet en tant que partie de
Qt-5.14.1 :
find -type f -name "*.pr[io]" |
xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |'
Ensuite, permettez à la bibliothèques pulseaudio de se lier à la
construction, plutôt qu'à l'exécution. Cela évite un problème avec
les nouvelles versions de pulseaudio :
sed -e '/link_pulseaudio/s/false/true/' \
-i src/3rdparty/chromium/media/media_options.gni
Enfin, corrigez un changement dans le système de construction qui
permet à ses développeurs de passer par exemple -j20 à make (pour
des tests rapides de certains composants) mais casse la
construction quand LFS utilise la variable d'environnement
NINJAJOBS :
sed -i 's/NINJAJOBS/NINJA_JOBS/' src/core/gn_run.pro
Si une version plus ancienne de la bibliothèque principale de ce
paquet est installée et si vous construisez ce paquet séparément,
il se liera à celle-ci plutôt que sa propre version non encore
installée, et échouera à cause de symboles manquants. Évitez cela,
en tant qu'utilisateur root
, en
déplaçant le lien symbolique :
if [ -e ${QT5DIR}/lib/libQt5WebEngineCore.so ]; then
mv -v ${QT5DIR}/lib/libQt5WebEngineCore.so{,.old}
fi
Installez qtwebengine en lançant
les commandes suivantes :
mkdir build &&
cd build &&
qmake .. -- -system-ffmpeg -webengine-icu &&
make
Ce paquet n'est pas fourni avec une suite de tests.
Maintenant, en tant qu'utilisateur root
:
make install
Supprimez les références au répertoire de construction dans les
bibliothèques de dépendances (prl) installées en lançant les
commandes suivantes en tant qu'utilisateur root
:
find $QT5DIR/ -name \*.prl \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
Explication des commandes
qmake : Ceci
construira la copie embarquée de ninja si elle n'est pas déjà installée et
l'utilisera pour configurer la construction.
-- -system-ffmpeg
-webengine-icu : Si des options sont passées à
qmake elles doivent apparaître après « -- » qui doit
suivre les « .. » qui pointent vers le répertoire
principal. Les options lui font utiliser les paquets ffmpeg et icu
du système. Si vous le construisez en tant que partie de Qt5, le
paquet icu du système est automatiquement utilisé (seulement) par
Qt5Core s'il est disponible, mais à moins que vous utilisiez cette
option webengine utilisera toujours la copie incluse de icu, ce qui
demande plus de temps et d'espace pour la construction.
NINJAJOBS=4 make
: Si vous avez
corrigé le ninja du système dans LFS pour qu'il reconnaisse la
variable d'environnement NINJAJOBS, cette commande lancer le ninja
du système avec le nombre de travaux spécifiées (c.-à-d. 4). Il y a
plusieurs raisons pour lesquelles vous pourriez vouloir faire
cela :
-
Construire sur un sous-ensemble des CPU permet de mesurer le
temps de construction pour ce nombre de processeurs et de
lancer d'autres tâches gourmandes en CPU sur les autres
cœurs.
-
Pour améliorer la vitesse de construction sur les machines
moins bien dotées à 4 cœurs. Sur une machine avec un CPU
puissant et beaucoup de RAM, N+2 travaux (par défaut avec
ninja quand la machine a au moins 4 cœurs) pour le très grand
nombre de fichiers C++ compilés dans ce paquet n'est
typiquement que légèrement plus rapide que de lancer N
travaux en même temps. Mais pour une machine avec moins de
mémoire, cela peut être beaucoup plus lent.
-
Réduire le nombre de cœurs utilisé pour des paquets gourmands
en CPU pendant un long moment peut atténuer des problèmes de
température.