SpiderMonkey fra firefox-115.14.0

Introduksjon til SpiderMonkey

SpiderMonkey er Mozillas JavaScript og WebAssembly Engine, skrevet i C++ og Rust. I BLFS er kildekoden til SpiderMonkey hentet fra Firefox.

Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.2 plattform.

Pakkeinformasjon

SpiderMonkey Avhengigheter

Påkrevd

ICU-75.1, rustc-1.80.1, og Which-2.21

Anbefalt

[Important]

Important

Hvis du bygger denne pakken på et 32-bits system, og Clang ikke er installert eller du overstyrer standard kompilatorvalg med miljøvariabelen CXX, vennligst les Parameterforklaringer først.

Installasjon av SpiderMonkey

[Note]

Note

I motsetning til de fleste andre pakker i BLFS, krever instruksjonene nedenfor deg å untare firefox-115.14.0esr.tar.xz og gå inn i firefox-115.14.0 mappen.

Pakke ut tarballen vil tilbakestille tillatelsene til gjeldende mappe til 0755 hvis du har tillatelse til å gjøre det. Hvis du gjør dette i en mappe hvor den klebrige biten er satt, slik som /tmp vil det ende med feilmeldinger:

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

Dette avsluttes med ikke-null status, men det betyr IKKE at det er et reelt problem. Ikke untar som root bruker i en mappe der klebrig biten er satt - det vil deaktivere den.

Installer SpiderMonkey ved å kjøre følgende kommandoer:

[Note]

Note

Hvis du kompilerer denne pakken i chroot, må du Først som root bruker, sørge for at /dev/shm er montert. Hvis du ikke gjør dette, Python konfigurasjonen vil mislykkes med en tilbakesporingsrapport som viser til /usr/lib/pythonN.N/multiprocessing/synchronize.py. Som root bruker, kjør:

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

Å kompilere C++ koden respekterer $MAKEFLAGS og er standard til 'j1', rust koden vil bruke alle prosessorer.

mkdir obj &&
cd    obj &&

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

For å kjøre SpiderMonkey testpakken, utsted: make -C js/src check-jstests JSTESTS_EXTRA_ARGS="--timeout 300 --wpt=disabled". Det anbefales å omdirigere utdataene til en logg. Fordi vi bygger med systemets ICU, 39 tester (av totalt mer enn 50 000) er kjent for å mislykkes. Testpakken kjøres med alle CPU kjerner tilgjengelig: selv i en cgroup med færre kjerner tildelt, prøver den fortsatt å skape like mange testjobber som alle kjerner i systemet; Heldigvis vil kjernen fortsatt ikke kjøre disse jobbene på kjerner som ikke er tildelt cgroup, så CPU bruken er fortsatt kontrollert.

For å kjøre JIT testpakken, utsted: make -C js/src check-jit-test JITTEST_EXTRA_ARGS="--timeout 300". I likhet med SpiderMonkey testpakken er antallet testjobber det samme som antall CPU kjerner i systemet selv om en cgroup brukes. For å gjøre ting verre, det er seks tester som vil bruke 3 GB hver av systemminne, slik at maksimal minnebruk kan være opptil 18 GB hvis antall kjerner er seks eller flere. Å kjører JIT testpakken uten nok minne kan påkalle kjernens OOM-killer og forårsake stabilitets problemer. Hvis du ikke har nok systemminne tilgjengelig, legg til -jN etter --timeout 300 med N erstattet av antall parallelle testjobber du ønsker å starte. For eksempel, hvis du har 16 GB systemminne tilgjengelig og 8 CPU kjerner, utsted make -C js/src check-jit-test JITTEST_EXTRA_ARGS="--timeout=300 -j5" for å kjøre testen med 5 parallelle jobber slik at minnebruken ikke overskrider 15 GB.

[Caution]

Caution

Et problem i installasjonsprosessen forårsaker at ethvert program som kjører og lenker til SpiderMonkey delte bibliotek (for eksempel GNOME Shell) til å krasje hvis SpiderMonkey installeres på nytt, eller oppgraderes eller nedgraderes uten endring av hovedversjonsnummeret (115 in 115.14.0). For å omgå dette problemet, fjern den gamle versjonen av SpiderMonkey delte bibliotek før installasjonen:

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

Nå, som root bruker:

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

Parameterforklaringer

--disable-debug-symbols: Ikke generer feilsøking symboler siden de er veldig store og de fleste brukere ikke trenger det. Fjern det hvis du vil feilsøke SpiderMonkey.

--disable-jemalloc: Denne bryteren deaktiverer intern minneallokator brukt i SpiderMonkey. jemalloc er bare beregnet for nettlesermiljøet Firefox. For andre applikasjoner som bruker SpiderMonkey, kan applikasjonen krasje siden elementer tildelt i jemalloc allokatoren er frigjort på systemets (glibc) allokatoren.

--enable-readline: Denne bryteren aktiverer Readline støtte i SpiderMonkey kommandolinjegrensesnittet.

--with-intl-api: Dette aktiverer internasjonaliseringsfunksjoner som kreves av Gjs.

--with-system-*: Disse parameterne tillater byggesystemet å bruke systemversjoner av bibliotekene ovenfor. Disse kreves for stabilitet.

rm -v /usr/lib/libjs_static.ajs: Fjern et stort statisk bibliotek som ikke brukes av noen BLFS pakke.

sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js115-config: Forhindrer js115-config fra å bruke buggy CFLAGS.

CC=gcc CXX=g++: BLFS pleide å foretrekke å bruke gcc og g++ i stedet for oppstrøms standardinnstillinger for clang programmer. Med utgivelsen av gcc-12 bygget tar lengre tid med gcc og g++, først og fremst fordi ekstra advarsler, og er større. Send disse miljøvariablene til konfigureringsskriptet hvis du ønsker å fortsette å bruke gcc, g++ (ved å eksportere dem og deaktivere dem etter installasjonen, eller ganske enkelt forberede dem før ../js/src/configure kommandoen). Hvis du bygger på et 32-bits system, se også nedenfor.

CXXFLAGS="-msse2 -mfpmath=sse": Bruk SSE2 i stedet for 387 for flytende komma med dobbel presisjon operasjoner. Det er nødvendig for GCC for å tilfredsstille forventningene til oppstrøms (Mozilla) utviklere med flytende komma aritmetikk. Bruk den hvis du bygger denne pakken på et 32-bits system med GCC (hvis Clang ikke er installert eller GCC er eksplisitt spesifisert). Merk at dette vil føre til at SpiderMonkey krasjer på en prosessor uten SSE2 evne. Hvis du kjører systemet på en så gammel prosessor, er Clang strengt tatt nødvendig. Denne innstillingen er ikke nødvendig på 64-bits systemer fordi alle 64-bits x86-prosessorer støtter SSE2 og 64-bits kompilatorer (både Clang og GCC) bruker SSE2 som standard.

Innhold

Installerte Programmer: js115 og js115-config
Installerte Biblioteker: libmozjs-115.so
Installerte Mapper: /usr/include/mozjs-115

Korte Beskrivelser

js115

gir et kommandolinjegrensesnitt til JavaScript motoren

js115-config

brukes til å finne SpiderMonkey kompilatoren og linkerflaggene

libmozjs-115.so

inneholder Mozilla JavaScript API funksjoner