source: general/genlib/js102.xml@ f56d2e7

11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since f56d2e7 was 8d219de, checked in by Ken Moffat <ken@…>, 19 months ago

Updates:

firefox-102.6.0,
js-102.6.0.

Measured on AMD 3400G using linux-6.0.12, and only 4 cores online
for JS, sizes and timings on other machines differ slightly.

  • Property mode set to 100644
File size: 12.8 KB
RevLine 
[fcce89bc]1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
[b5b1af68]7<!-- for when firefox and js91 use same version
8 <!ENTITY ff91-version "&firefox-version;">
[2c5bbb8]9 and when they are on different versions - keep this for when
[8558044]10 we have moved to next firefox-esr (ff-91) and JS has not moved
[b5b1af68]11 <!ENTITY ff91-version "&JS91-version;"> -->
12
[14bd41d]13 <!ENTITY ff102-version "&firefox-version;">
14 <!ENTITY js102-download-http "&mozilla-http;/firefox/releases/&JS102-version;esr/source/firefox-&JS102-version;esr.source.tar.xz">
15 <!ENTITY js102-download-ftp " ">
[8d219de]16 <!ENTITY js102-md5sum "9fe60d1991b9344ebfd80592aff2bfa9">
[b932ddad]17 <!ENTITY js102-size "457 MB">
[8d219de]18 <!ENTITY js102-buildsize "3.3 GB (38 MB installed after removing 34MB static lib)">
19 <!ENTITY js102-time "2.0 SBU (with parallelism=4)">
[fcce89bc]20]>
21
[14bd41d]22<sect1 id="js102" xreflabel="JS-&JS102-version;">
23 <?dbhtml filename="js102.html"?>
[fcce89bc]24
25
[14bd41d]26 <title>JS-&JS102-version;</title>
[fcce89bc]27
[14bd41d]28 <indexterm zone="js102">
29 <primary sortas="a-js102">js102</primary>
[fcce89bc]30 </indexterm>
31
32 <sect2 role="package">
33 <title>Introduction to JS</title>
34
35 <para>
[6c122387]36 <application>JS</application> (also referred as
37 <application>SpiderMonkey</application>) is Mozilla's JavaScript and
38 WebAssembly Engine, written in C++ and Rust.
39 In BLFS, the source code of JS is taken from Firefox.
[fcce89bc]40 </para>
41
[75d38562]42 <!-- To editors: make sure polkit work with mozjs before
43 tagging mozjs. -->
[aa0b625]44 &lfs112_checked;
[6b063cc3]45
[fcce89bc]46 <bridgehead renderas="sect3">Package Information</bridgehead>
47 <itemizedlist spacing="compact">
48 <listitem>
49 <para>
[14bd41d]50 Download (HTTP): <ulink url="&js102-download-http;"/>
[fcce89bc]51 </para>
52 </listitem>
53 <listitem>
54 <para>
[14bd41d]55 Download (FTP): <ulink url="&js102-download-ftp;"/>
[fcce89bc]56 </para>
57 </listitem>
58 <listitem>
59 <para>
[14bd41d]60 Download MD5 sum: &js102-md5sum;
[fcce89bc]61 </para>
62 </listitem>
63 <listitem>
64 <para>
[14bd41d]65 Download size: &js102-size;
[fcce89bc]66 </para>
67 </listitem>
68 <listitem>
69 <para>
[14bd41d]70 Estimated disk space required: &js102-buildsize;
[fcce89bc]71 </para>
72 </listitem>
73 <listitem>
74 <para>
[14bd41d]75 Estimated build time: &js102-time;
[fcce89bc]76 </para>
77 </listitem>
78 </itemizedlist>
[b5b1af68]79<!--
[fcce89bc]80 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
81 <itemizedlist spacing="compact">
82 <listitem>
83 <para>
84 Required patch:
[b5b1af68]85 <ulink url="&patch-root;/js-&JS91-version;-python_3_10-1.patch"/>
[fcce89bc]86 </para>
87 </listitem>
88 </itemizedlist>
[b5b1af68]89-->
[14bd41d]90 <bridgehead renderas="sect3">JS102 Dependencies</bridgehead>
[fcce89bc]91
92 <bridgehead renderas="sect4">Required</bridgehead>
93 <para role="required">
94 <xref linkend="icu"/>,
95 <xref linkend="rust"/>, and
96 <xref linkend="which"/>
97 </para>
98
[e603046]99 <bridgehead renderas="sect4">Recommended</bridgehead>
100 <para role="recommended">
[716ab1ac]101 <!-- If clang is installed, it will be used instead of gcc.
[0fe09b09]102 gcc does not work for 32-bit system w/o -msse2 -mfpmath=sse:
[716ab1ac]103 https://bugzilla.mozilla.org/show_bug.cgi?id=1729459 -->
104 <xref linkend="llvm"/> (with <application>Clang</application>,
[14bd41d]105 required for 32-bit systems without SSE2 capabilities)
[e603046]106 </para>
107
[fcce89bc]108 <!-- It seems nasm is only used for aarch64-win64. -->
109 <!--bridgehead renderas="sect4">Optional</bridgehead>
110 <para role="optional">
111 <xref linkend="nasm"/>
112 </para-->
113
114 <para condition="html" role="usernotes">
[14bd41d]115 User Notes: <ulink url="&blfs-wiki;/js102"/>
[fcce89bc]116 </para>
117 </sect2>
118
119 <sect2 role="installation">
120 <title>Installation of JS</title>
121
122 <note>
123 <para>
124 Unlike most other packages in BLFS, the instructions below require you
[14bd41d]125 to untar <filename>firefox-&JS102-version;esr.tar.xz</filename> and
126 change into the <filename>firefox-&JS102-version;</filename> folder.
[fcce89bc]127 </para>
128
129 <para>
130 Extracting the tarball
131 will reset the permissions of the current directory to 0755 if you
132 have permission to do that. If you do this in a directory where
133 the sticky bit is set, such
134 as <filename class="directory">/tmp</filename> it will end with error
135 messages:
136 </para>
137
138<literallayout>tar: .: Cannot utime: Operation not permitted
139tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
140tar: Exiting with failure status due to previous errors
141</literallayout>
142
143 <para>
144 This does finish with non-zero status, but it does
145 <emphasis>NOT</emphasis> mean there is a real problem.
146 Do not untar as the <systemitem class="username">root</systemitem> user
147 in a directory where the sticky bit is set - that will unset it.
148 </para>
149
150 </note>
[f572dbb]151<!-- not needed when using clang. Upstream bug at
152 https://bugzilla.mozilla.org/show_bug.cgi?id=1729459
[c5b7d908]153
[fcce89bc]154 <para>
[c5b7d908]155 If building on a 32 bit machine, the following sed works around an issue
156 with an incompatible <quote>double</quote> type in one header file:
[fcce89bc]157 </para>
158
[c5b7d908]159<screen><userinput>case "$(uname -m)" in
160 i?86) sed -e '/typedef[ ]*double/s/double/long double/' \
161 -i modules/fdlibm/src/math_private.h ;;
162esac</userinput></screen>
[f572dbb]163-->
[fcce89bc]164 <para>
165 Install <application>JS</application> by running the following
166 commands:
167 </para>
168
[16218efb]169 <note>
170 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
[fcce89bc]171 href="../../xincludes/mozshm.xml"/>
172
[16218efb]173 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
[fcce89bc]174 href="../../xincludes/mozconfigure.xml"/>
[ca73053a]175
[16218efb]176 <para>
177 Compiling the C++ code respects $MAKEFLAGS and defaults to 'j1',
178 the rust code will use all processors.
179 </para>
180 </note>
[fcce89bc]181
[16218efb]182 <para>
183 First remove an obsolete flag in python code, that has been removed
184 in python-3.11:
185 </para>
186
[d7ba6b4d]187<screen><userinput>grep -rl \"rU\" | xargs sed -i 's/"rU"/"r"/'</userinput></screen>
[16218efb]188
189 <para>
190 Then run:
191 </para>
[fcce89bc]192
193<screen><userinput>mkdir obj &amp;&amp;
194cd obj &amp;&amp;
195
[b5b1af68]196sh ../js/src/configure.in --prefix=/usr \
197 --with-intl-api \
198 --with-system-zlib \
199 --with-system-icu \
200 --disable-jemalloc \
201 --disable-debug-symbols \
202 --enable-readline &amp;&amp;
[fcce89bc]203make</userinput></screen>
204
205 <para>
[0d4a7b68]206 To run the JS test suite, issue:
[6a5717b]207 <command>make -C js/src check-jstests
208 JSTESTS_EXTRA_ARGS="--timeout 300 --wpt=disabled"</command>.
209 It's recommended to redirect the output into a log.
210 <!-- recheck when ICU gets upgraded -->
[14bd41d]211 <!-- Still true with 102 -renodr -->
[b5b1af68]212 Because we are building with system ICU, more than one hundred tests
[8d219de]213 (out of a total of more than 50,000) are known to fail.
[0d4a7b68]214 </para>
215 <para>
[393517d3]216 To run the JIT test suite, issue:
[fcce89bc]217 <command>make -C js/src check-jit-test
[b5b1af68]218 JITTEST_EXTRA_ARGS="--timeout 300"</command>.
[fcce89bc]219 </para>
220
[55a63862]221 <caution>
222 <para>
223 An issue in the installation process causes any running program which
[14bd41d]224 links to JS102 shared library (for example, GNOME Shell) to crash if
225 JS102 is upgraded or reinstalled. To work around this issue, remove
226 the old version of the JS102 shared library before installation:
[55a63862]227 </para>
[4af651f7]228
[14bd41d]229<screen role="root"><userinput>rm -fv /usr/lib/libmozjs-102.so</userinput></screen>
[55a63862]230 </caution>
[4af651f7]231
[fcce89bc]232 <para>
233 Now, as the <systemitem class="username">root</systemitem> user:
234 </para>
235
236<screen role="root"><userinput>make install &amp;&amp;
237rm -v /usr/lib/libjs_static.ajs &amp;&amp;
[14bd41d]238sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js102-config</userinput></screen>
[fcce89bc]239
240 </sect2>
241
242 <sect2 role="commands">
243 <title>Command Explanations</title>
244
245 <para>
[b5b1af68]246 <command>sh ../js/src/configure.in</command>:
247 <filename>configure.in</filename> is actually a shell script, but
248 the executable bit is not set in its permission mode so it's needed
249 to explicitly run it with <command>sh</command>.
250 </para>
251
252 <para>
253 <parameter>--with-intl-api</parameter>: This enables the
254 internationalization functions required by
255 <application>Gjs</application>.
256 </para>
257
258 <para>
259 <parameter>--with-system-*</parameter>: These parameters allow the build system
[fcce89bc]260 to use system versions of the above libraries. These are required for
261 stability.
262 </para>
263
264 <para>
265 <parameter>--enable-readline</parameter>: This switch enables Readline
266 support in the JS shell.
267 </para>
[8558044]268
[fcce89bc]269 <para>
270 <parameter>--disable-jemalloc</parameter>: This switch disables the
[14bd41d]271 internal memory allocator used in JS102. jemalloc is only intended for
272 the Firefox browser environment. For other applications using JS102,
273 the application may crash as items allocated in the jemalloc allocator
274 are freed on the system (glibc) allocator.
[fcce89bc]275 </para>
276
277 <para>
278 <parameter>--disable-debug-symbols</parameter>: Don't generate debug
279 symbols since they are very large and most users won't need it. Remove
[14bd41d]280 it if you want to debug JS102.
[fcce89bc]281 </para>
282
283 <para>
284 <command>rm -v /usr/lib/libjs_static.ajs</command>: Remove a large
285 static library which is not used by any BLFS package.
286 </para>
287
288 <para>
[14bd41d]289 <command>sed -i '/@NSPR_CFLAGS@/d' /usr/bin/js102-config</command>:
290 Prevent <command>js102-config</command> from using buggy CFLAGS.
[fcce89bc]291 </para>
292
[e603046]293 <para>
[f572dbb]294 <option><envar>CC=gcc CXX=g++</envar></option>: BLFS used to
[e603046]295 prefer to use gcc and g++ instead of upstream's defaults of the
296 <application>clang</application> programs. With the release of
297 gcc-12 the build takes longer with gcc and g++, primarily because
[8e637fc]298 of extra warnings, and is bigger. Pass these environment variables
299 to the configure script if you wish to continue to use gcc, g++
300 (by exporting them and unset them after the installation, or simply
301 prepending them before the
[0fe09b09]302 <command>sh ../js/src/configure.in</command> command). If you are
303 building on a 32-bit system, also see below.
[e603046]304 </para>
305
[0fe09b09]306 <para>
307 <option><envar>CXXFLAGS="-msse2 -mfpmath=sse"</envar></option>:
308 Use SSE2 instead of 387 for double-precision floating-point
[f31e7938]309 operations. It's needed by GCC to satisfy the expectations of
[67cd226]310 upstream (Mozilla) developers with floating-point arithmetic.
[0fe09b09]311 Use it if you are building this package on a 32-bit system with
312 GCC (if Clang is not installed or GCC is explicitly specified).
313 Note that this will cause JS to crash on a processor without SSE2
314 capability. If you are running the system on such an old processor,
315 Clang is strictly needed. This setting is not needed on 64-bit
316 systems because all 64-bit x86 processors support SSE2 and the 64-bit
317 compilers (both Clang and GCC) use SSE2 by default.
318 </para>
[fcce89bc]319 </sect2>
320
321 <sect2 role="content">
322 <title>Contents</title>
323
324 <segmentedlist>
325 <segtitle>Installed Programs</segtitle>
326 <segtitle>Installed Libraries</segtitle>
327 <segtitle>Installed Directories</segtitle>
328
329 <seglistitem>
330 <seg>
[14bd41d]331 js102 and js102-config
[fcce89bc]332 </seg>
333 <seg>
[14bd41d]334 libmozjs-102.so
[fcce89bc]335 </seg>
336 <seg>
[14bd41d]337 /usr/include/mozjs-102
[fcce89bc]338 </seg>
339 </seglistitem>
340 </segmentedlist>
341
342 <variablelist>
343 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
344 <?dbfo list-presentation="list"?>
345 <?dbhtml list-presentation="table"?>
346
[14bd41d]347 <varlistentry id="js102-js102">
348 <term><command>js102</command></term>
[fcce89bc]349 <listitem>
350 <para>
351 provides a command line interface to the
[4c24eb0a]352 <application>JavaScript</application> engine
[fcce89bc]353 </para>
[14bd41d]354 <indexterm zone="js102 js102">
355 <primary sortas="b-js102">js102</primary>
[fcce89bc]356 </indexterm>
357 </listitem>
358 </varlistentry>
359
[14bd41d]360 <varlistentry id="js102-config">
361 <term><command>js102-config</command></term>
[fcce89bc]362 <listitem>
363 <para>
[4c24eb0a]364 is used to find the JS compiler and linker flags
[fcce89bc]365 </para>
[14bd41d]366 <indexterm zone="js102 js102-config">
367 <primary sortas="b-js102-config">js102-config</primary>
[fcce89bc]368 </indexterm>
369 </listitem>
370 </varlistentry>
371
[14bd41d]372 <varlistentry id="libmozjs-102">
373 <term><filename class="libraryfile">libmozjs-102.so</filename></term>
[fcce89bc]374 <listitem>
375 <para>
[4c24eb0a]376 contains the Mozilla JavaScript API functions
[fcce89bc]377 </para>
[14bd41d]378 <indexterm zone="js102 libmozjs-102">
379 <primary sortas="c-libmozjs102">libmozjs-102.so</primary>
[fcce89bc]380 </indexterm>
381 </listitem>
382 </varlistentry>
383 </variablelist>
384 </sect2>
[4c24eb0a]385
[fcce89bc]386</sect1>
Note: See TracBrowser for help on using the repository browser.