JS (også referert til som SpiderMonkey) er Mozillas JavaScript og WebAssembly Motor, skrevet i C++ og Rust. I BLFS er kildekoden til JS hentet fra Firefox.
Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.0 plattform.
Nedlasting (HTTP): https://archive.mozilla.org/pub/firefox/releases/102.13.0esr/source/firefox-102.13.0esr.source.tar.xz
Nedlasting MD5 sum: 42b9a73626ed8281b86222f6f0a96c73
Nedlastingsstørrelse: 464 MB
Estimert diskplass som kreves: 3.3 GB (38 MB installert etter fjerning av 34 MB statiske biblioteker)
Estimert byggetid: 1.7 SBU (med parallellitet=4)
ICU-73.2, rustc-1.71.1, og Which-2.21
LLVM-16.0.5 (med Clang, påkrevd 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 å untar firefox-102.13.0esr.tar.xz
og endre til
firefox-102.13.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 JS ved å kjøre følgende kommandoer:
Hvis du kompilerer denne pakken i chroot, må du gjøre to ting.
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
.
Kjør:
mountpoint -q /dev/shm || mount -t tmpfs devshm /dev/shm
For det andre, enten som root
bruker eksporter $SHELL
miljøvariabel
ved bruk av export
SHELL=/bin/sh ellers sett SHELL=/bin/sh
foran når du kjører configure kommandoen.
Å kompilere C++ koden respekterer $MAKEFLAGS og er standard til 'j1', rustkoden vil bruke alle prosessorer.
mkdir obj && cd obj && sh ../js/src/configure.in --prefix=/usr \ --with-intl-api \ --with-system-zlib \ --with-system-icu \ --disable-jemalloc \ --disable-debug-symbols \ --enable-readline && make
For å kjøre JS 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 system ICU, mer enn hundre tester (av totalt mer enn 50 000) er kjent for å mislykkes.
For å kjøre JIT testpakken, utsted: make -C js/src check-jit-test JITTEST_EXTRA_ARGS="--timeout 300".
Et problem i installasjonsprosessen forårsaker at ethvert kjørende program som lenker til JS102 delt bibliotek (for eksempel GNOME Skall) til å krasje hvis JS102 oppgraderes eller installeres på nytt. For å omgå dette problemet, fjern den gamle versjonen av JS102 delte bibliotek før installasjon:
rm -fv /usr/lib/libmozjs-102.so
Nå, som root
bruker:
make install && rm -v /usr/lib/libjs_static.ajs && sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js102-config
sh
../js/src/configure.in: configure.in
er egentlig et skallskript, men den
kjørbare biten er ikke satt i tillatelsesmodus, så det er nødvendig
å eksplisitt kjøre den med sh.
--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.
--enable-readline
: Denne
bryteren aktiverer Readline støtte i JS skallet.
--disable-jemalloc
: Denne
bryteren deaktiverer intern minneallokator brukt i JS102. jemalloc
er kun beregnet på Firefox nettlesermiljøet. For andre
applikasjoner som bruker JS102, applikasjonen kan krasje siden
elementer tildelt i jemalloc allokatoren er frigjort på system
(glibc) allokator.
--disable-debug-symbols
:
Ikke generer feilsøkingssymboler siden de er veldig store og de
fleste brukere ikke trenger det. Fjern det hvis du vil feilsøke
JS102.
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/js102-config: Forhindrer js102-config fra å bruke buggy CFLAGS.
: BLFS pleide å foretrekke å bruke gcc og g++
i stedet for oppstrøms standardinnstilling 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 sh
../js/src/configure.in kommando). 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
av 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 JS krasjer på en prosessor uten SSE2 evne. Hvis du
kjører systemet på en så gammel prosessor, er Clang strengt
nødvendig. Denne innstillingen er ikke nødvendig på 64-bit systemer
fordi alle 64-bit x86-prosessorer støtter SSE2 og 64-bit
kompilatorer (både Clang og GCC) bruker SSE2 som standard.
CXXFLAGS="-msse2
-mfpmath=sse"