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.1 plattform.
Nedlasting (HTTP): https://archive.mozilla.org/pub/firefox/releases/115.7.0esr/source/firefox-115.7.0esr.source.tar.xz
Nedlasting MD5 sum: 9105bdf076d457ce5e0aa5628d5acc84
Nedlastingsstørrelse: 492 MB
Estimert diskplass som kreves: 3.6 GB (40 MB installert etter fjerning av 36 MB statisk lib; legg til 34 MB for hovedtestene og 37 MB for jit testene)
Estimert byggetid: 1.9 SBU (med parallellitet=4; legg til 1,1 SBU for hovedtestene og 3,7 SBU for jit testene)
ICU-74.2, rustc-1.76.0, six-1.16.0, og Which-2.21
LLVM-17.0.6 (med Clang, kreves for 32-bits systemer uten SSE2 funksjoner)
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.
I motsetning til de fleste andre pakker i BLFS, krever
instruksjonene nedenfor deg å untare firefox-115.7.0esr.tar.xz
og gå inn i
firefox-115.7.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.
Byggesystemet sender flere interne kopier av Python 3 modulen
six.py
. De sendte kopiene er for
gamle til å fungere godt med Python 3.12 eller nyere. Bytt dem ut
med symbolkoblinger til six-1.16.0
allerede installert på systemet:
for i in $(find -name six.py); do ln -sfv /usr/lib/python3.12/site-packages/six.py $i; done
Installer SpiderMonkey ved å kjøre følgende kommandoer:
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 \ --enable-rust-simd \ --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, 42 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 hver av dem vil bruke 3 GB
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.
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.7.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
--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.
--enable-rust-simd
: Denne
bryteren aktiverer SIMD optimalisering i den leverte encoding_rs
crate.
--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.
: 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.
CC=gcc
CXX=g++
: 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.
CXXFLAGS="-msse2
-mfpmath=sse"