QtWebEngine-5.14.1

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]

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]

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.

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.

Configuration de QtWebEngine

Informations sur la configuration

Si vous mettez à jour depuis une version mineur plus ancienne de cette application, vous devrez nettoyer le cache du navigateur pour que certaines pages fonctionnent, p. ex. pour falkon ce sera dans ~/.cache/falkon/. vous devrez le faire si le navigateur commence à rendre la page puis se change en un onglet vide avec un message disant que quelque chose s'est mal passé, et un bouton pour réessayer. Même après avoir supprimé l'ancien cache, vous pourriez avoir besoin de réessayer plusieurs fois pour chaque onglet affecté.

Contents

Programmes installés: qtwebengine_convert_dict et QtWebEngineProcess (dans $QT5DIR/libexec)
Bibliothèques installées: libQt5WebEngineCore.so, libQt5WebEngine.so et libQt5WebEngineWidgets.so
Répertoires installés: $QT5DIR/include/QtWebEngine, $QT5DIR/include/QtWebEngineCore, $QT5DIR/include/QtWebEngineWidgets, $QT5DIR/qml/QtWebEngine et $QT5DIR/translations/qtwebengine_locales

Descriptions courtes

qtwebengine_convert_dict

converti les dictionnaires hunspell (.dic) au format chromium (.bdic)

QtWebEngineProcess

est un programme libexec qui lance un processus zygote (qui écoute les requêtes de spawn d'un processus maître et se fork en réponse).

libQtWebEngine.so

fournit des types QML pour présenter du contenu web dans une application QML.

libQtWebEngineCore.so

fournit l'API publique partagée par QtWebEngine et QtWebEngineWidgets.

libQtWebEngineWidgets.so

fournit un moteur de navigateur web ainsi que des classes C++ pour présenter et interagir avec du contenu web.

Last updated on 2020-02-18 22:55:17 +0100