JS-78.15.0

Introduction à JS

JS est le moteur JavaScript de Mozilla écrit en C. JS78 provient de Firefox.

This package is known to build and work properly using an LFS-11.1 platform.

Informations sur le paquet

Téléchargements supplémentaires

Dépendances de JS78

Requises

Autoconf-2.13, ICU-70.1, rustc-1.58.1 et Which-2.21

Notes utilisateur : https://wiki.linuxfromscratch.org/blfs/wiki/js78

Installation de JS

[Note]

Note

Contrairement à la plupart des autres paquets dans BLFS, les instructions ci-dessous requièrent que vous décompressiez firefox-78.15.0esr.tar.xz et entriez dans le répertoire firefox-78.15.0.

L'extraction de l'archive remettra les permissions du répertoire actuel à 0755 si vous avez les permissions nécessaires pour cela. Si vous faites cela dans un répertoire avec le bit sticky, comme /tmp, le processus terminera avec des messages d'erreur :

tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
tar: Exiting with failure status due to previous errors

Cela termine avec un statut différent de zéro, mais ne signifie PAS qu'il y a un vrai problème. Ne désarchivez pas en tant qu'utilisateur root das un répertoire où le bit sticky est présent, cela le désactiverait.

Appliquez un correctif qui permet de construire ce paquet avec Python-3.10 et supérieur :

patch -Np1 -i ../js-78.15.0-python_3_10-1.patch

Installez JS en exécutant les commandes suivantes :

[Note]

Note

Si vous compilez ce paquet dans un chroot vous devez faire deux choses. Tout d'abord, en tant qu'utilisateur root, assurez-vous que /dev/shm est monté. Si vous ne le faites pas, le configury en Python échouera avec un trace évocant /usr/lib/pythonN.N/multiprocessing/synchronize.py. Lancez :

mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm

Deuxièmement, vous devez soit exporter en tant qu'utilisateur root la variable d'environnement $SHELL avec export SHELL=/bin/sh, soit rajouter SHELL=/bin/sh devant l'invocation de la commande configure.

La compilation du code C++ respecte $MAKEFLAGS et utilise « j1 » par défaut, le code rust utilisera tous les processeurs.

mkdir obj &&
cd    obj &&

CC=gcc CXX=g++ \
../js/src/configure --prefix=/usr            \
                    --with-intl-api          \
                    --with-system-zlib       \
                    --with-system-icu        \
                    --disable-jemalloc       \
                    --disable-debug-symbols  \
                    --enable-readline        &&
make

Pour lancer la suite de tests de JS, lancez : make -C js/src check-jstests JSTESTS_EXTRA_ARGS="--timeout 300 --wpt=disabled". Il est recommandé de rediriger la sortie vers un fichier journal. Plus d'une centaine de tests échouent après la mise à jour vers icu-70.1 ou supérieur, sur un total de plus de 40 000 tests.

Pour lancer la suite de tests du JIT, lancez : make -C js/src check-jit-test JITTEST_EXTRA_ARGS="--timeout 300". Un test peut échouer.

[Attention]

Attention

Un problème avec le processus d'installation fait que les programmes qui se lient à la bibliothèque partagée JS78 (par exemple, GNOME Shell) crashent si JS78 est mis à jour ou réinstallé. Pour contourner le problème, supprimez l'ancienne version de la bibliothèque partagée JS78 avant l'installation :

rm -fv /usr/lib/libmozjs-78.so

Maintenant, en tant qu'utilisateur root :

make install &&
rm -v /usr/lib/libjs_static.ajs &&
sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config

Explication des commandes

CC=gcc CXX=g++ : les développeurs en amont préfèrent maintenant clang, corrigez cela comme avec les autres paquets de Mozilla dans le livre BLFS.

--with-* : ces paramètres permettent au système de construction d'utiliser les versions du système des bibliothèques ci-dessus. Ils sont requis pour la stabilité.

--enable-readline : ce paramètre active la prise en charge de Readline dans le shell JS.

--disable-jemalloc : ce paramètre désactive l'allocateur de mémoire interne utilisé dans JS78. jemalloc est conçu uniquement pour l'environnement du navigateur Firefox. Si JS78 utilise jemalloc, les autres applications qui l'utilisent peuvent crasher quand des éléments alloués par jemalloc sont libérés avec l'allocateur du système (glibc).

--disable-debug-symbols : ne génère pas les symboles de débogage parce qu'ils sont très gros et que la plupart des utilisateurs n'en ont pas besoin. Supprimez-le si vous voulez déboguer JS78.

rm -v /usr/lib/libjs_static.ajs : supprimez une grosse bibliothèque statique qui n'est utilisée par aucun paquet de BLFS.

sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js78-config : évite que js78-config n'utilise des CFLAGS bogués.

Contents

Programmes installés: js78 et js78-config
Bibliothèques installées: libmozjs-78.so
Répertoires installés: /usr/include/mozjs-78

Descriptions courtes

js78

fournit une interface en ligne de commande au moteur JavaScript

js78-config

est utilisé pour trouver le compilateur JS et les drapeaux de l'éditeur de liens

libmozjs-78.so

contient les fonction de l'API de Mozilla JavaScript

Last updated on