JS-102.13.0

Introduksjon til JS

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.

Pakkeinformasjon

JS102 Avhengigheter

Påkrevd

ICU-73.2, rustc-1.71.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 JS

[Note]

Note

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:

[Note]

Note

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".

[Caution]

Caution

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

Parameterforklaringer

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.

CC=gcc CXX=g++: 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.

CXXFLAGS="-msse2 -mfpmath=sse": 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.

Innhold

Installerte Programmer: js102 og js102-config
Installerte Biblioteker: libmozjs-102.so
Installerte Mapper: /usr/include/mozjs-102

Korte Beskrivelser

js102

gir et kommandolinjegrensesnitt til JavaScript motoren

js102-config

brukes til å finne JS kompilatoren og linkerflaggene

libmozjs-102.so

inneholder Mozilla JavaScript API funksjonene