source: general/genlib/js68.xml@ 3bf88d0

10.0 10.1 11.0 11.1 11.2 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 upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 3bf88d0 was 3bf88d0, checked in by Ken Moffat <ken@…>, 4 years ago

Separate JS68 from firefox.

In preparation for firefox-78.0esr.
No intended changes to the rendered book.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@23326 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 10.1 KB
Line 
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
7 <!ENTITY js68-download-http "&mozilla-http;/firefox/releases/&firefox-version;esr/source/firefox-&firefox-version;esr.source.tar.xz">
8 <!ENTITY js68-download-ftp " ">
9 <!ENTITY js68-md5sum "a1156aed941b28a06115a9450a46563d">
10 <!ENTITY js68-size "303 MB">
11 <!ENTITY js68-buildsize "2.8 GB (31 MB installed after removing 31MB static lib)">
12 <!ENTITY js68-time "2.4 SBU (with parallelism = 4)">
13]>
14
15<!--<sect1 id="js68" xreflabel="js68-&JS68-version;">-->
16<sect1 id="js68" xreflabel="js68-&JS68-version;">
17 <?dbhtml filename="js68.html"?>
18
19 <sect1info>
20 <othername>$LastChangedBy$</othername>
21 <date>$Date$</date>
22 </sect1info>
23
24 <title>JS-&JS68-version;</title>
25
26 <indexterm zone="js68">
27 <primary sortas="a-js68">js68</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to JS</title>
32
33 <para>
34 <application>JS</application> is Mozilla's JavaScript engine
35 written in C. JS68 is taken from Firefox.
36 </para>
37
38 <bridgehead renderas="sect3">Package Information</bridgehead>
39 <itemizedlist spacing="compact">
40 <listitem>
41 <para>
42 Download (HTTP): <ulink url="&js68-download-http;"/>
43 </para>
44 </listitem>
45 <listitem>
46 <para>
47 Download (FTP): <ulink url="&js68-download-ftp;"/>
48 </para>
49 </listitem>
50 <listitem>
51 <para>
52 Download MD5 sum: &js68-md5sum;
53 </para>
54 </listitem>
55 <listitem>
56 <para>
57 Download size: &js68-size;
58 </para>
59 </listitem>
60 <listitem>
61 <para>
62 Estimated disk space required: &js68-buildsize;
63 </para>
64 </listitem>
65 <listitem>
66 <para>
67 Estimated build time: &js68-time;
68 </para>
69 </listitem>
70 </itemizedlist>
71
72 <!--
73 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
74 <itemizedlist spacing="compact">
75 <listitem>
76 <para>
77 Required patch:
78 <ulink url="&patch-root;/js68-&JS68-version;-python_3-1.patch"/>
79 </para>
80 </listitem>
81 </itemizedlist>
82 -->
83
84 <bridgehead renderas="sect3">JS68 Dependencies</bridgehead>
85
86 <bridgehead renderas="sect4">Required</bridgehead>
87 <para role="required">
88 <xref linkend="autoconf213"/>,
89 <xref linkend="icu"/>,
90 <xref linkend="python2"/>, and
91 <xref linkend="which"/>
92 </para>
93
94 <bridgehead renderas="sect4">Optional</bridgehead>
95 <para role="optional">
96 <xref linkend="llvm"/> (with <application>Clang</application>) and
97 <xref linkend="doxygen"/>
98 </para>
99
100 <para condition="html" role="usernotes">
101 User Notes: <ulink url="&blfs-wiki;/js68"/>
102 </para>
103 </sect2>
104
105 <sect2 role="installation">
106 <title>Installation of JS</title>
107
108 <caution>
109 <para>
110 If you are upgrading JS68 from a previously installed old version,
111 save all work and exit your GNOME Session if you have one running.
112 Replacing the JS68 binary will cause the GNOME Shell to crash and
113 return you to your display manager or TTY. After installing the new
114 version, if GNOME Shell still doesn't work, reinstall
115 <xref linkend="gjs"/>.
116 </para>
117 </caution>
118
119 <note>
120 <para>
121 Unlike most other packages in BLFS, the instructions below require you
122 to untar <filename>firefox-&firefox-version;esr.tar.xz</filename> and
123 change into the <filename>firefox-&firefox-version;</filename> folder.
124 </para>
125
126 <para>
127 Extracting the tarball
128 will reset the permissions of the current directory to 0755 if you
129 have permission to do that. If you do this in a directory where
130 the sticky bit is set, such
131 as <filename class="directory">/tmp</filename> it will end with error
132 messages:
133 </para>
134
135<literallayout>tar: .: Cannot utime: Operation not permitted
136tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
137tar: Exiting with failure status due to previous errors
138</literallayout>
139
140 <para>
141 This does finish with non-zero status, but it does
142 <emphasis>NOT</emphasis> mean there is a real problem.
143 Do not untar as the <systemitem class="username">root</systemitem> user
144 in a directory where the sticky bit is set - that will unset it.
145 </para>
146
147 </note>
148
149 <!--
150 <para>
151 First, apply a patch so we can run the shipped build scripts with
152 Python 3, instead of the EOL'ed Python 2:
153 </para>
154
155<screen><userinput remap="pre">patch -Np1 -i ../js68-&JS68-version;-python_3-1.patch</userinput></screen>
156 -->
157 <para>
158 Install <application>JS</application> by running the following
159 commands:
160 </para>
161
162<!-- &shell-env;-->
163
164 <note>
165 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
166 href="../../xincludes/mozshm.xml"/>
167
168 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
169 href="../../xincludes/mozconfigure.xml"/>
170 </note>
171
172
173<screen><userinput>sed '21,+4d' -i js/moz.configure &amp;&amp;
174
175mkdir obj &amp;&amp;
176cd obj &amp;&amp;
177
178CC=gcc CXX=g++ LLVM_OBJDUMP=/bin/false \
179../js/src/configure --prefix=/usr \
180 --with-intl-api \
181 --with-system-zlib \
182 --with-system-icu \
183 --disable-jemalloc \
184 --disable-debug-symbols \
185 --enable-readline \
186 --enable-unaligned-private-values &amp;&amp;
187make</userinput></screen>
188
189 <para>
190 This package does not come with a working test suite.
191 </para>
192
193 <para>
194 Now, as the <systemitem class="username">root</systemitem> user:
195 </para>
196
197<screen role="root"><userinput>make install &amp;&amp;
198rm -v /usr/lib/libjs_static.ajs</userinput></screen>
199
200 </sect2>
201
202 <sect2 role="commands">
203 <title>Command Explanations</title>
204
205 <para>
206 <command>sed '21,+4d' js/moz.configure</command>: Firefox building
207 system searches for <command>rustc</command> and
208 <command>cargo</command>.
209 Since we are building the standalone JS engine instead of the entire
210 browser, they are not actually used.
211 Remove the reference to them so we can
212 build JS68 without <xref role="nodep" linkend="rust"/> installed.
213 </para>
214
215 <para>
216 <envar>CC=gcc CXX=g++</envar>: Upstream now prefers
217 <application>clang</application>, override it like other Mozilla
218 packages in BLFS book.
219 </para>
220
221 <para>
222 <envar>LLVM_OBJDUMP=/bin/false</envar>: Firefox building system
223 searches for <command>llvm-objdump</command>.
224 Since we are building the standalone JS engine instead of the entire
225 browser, they are not actually used.
226 Override it so we can build JS68 without
227 <xref role="nodep" linkend="llvm"/> installed.
228 </para>
229
230 <para>
231 <parameter>--with-*</parameter>: These parameters allow the build system
232 to use system versions of the above libriares. These are required for
233 stability.
234 </para>
235
236 <para>
237 <parameter>--enable-readline</parameter>: This switch enables Readline
238 support in the JS shell.
239 </para>
240
241 <para>
242 <parameter>--disable-jemalloc</parameter>: This switch disables the
243 internal memory allocator used in JS68. jemalloc causes a conflict with glibc.
244 </para>
245
246 <para>
247 <parameter>--disable-debug-symbols</parameter>: Don't generate debug
248 symbols since they are very large and most users won't need it. Remove
249 it if you want to debug JS68.
250 </para>
251
252 <para>
253 <parameter>--enable-unaligned-private-values</parameter>: This switch
254 allows the code using JS68 not to align all pointers in the same way
255 JS68 does. <xref linkend="gjs"/> requires JS68 to be built with this
256 switch.
257 </para>
258
259 <para>
260 <command>rm -v /usr/lib/libjs_static.ajs</command>: Remove a large
261 static library which is not used by any BLFS package.
262 </para>
263
264 </sect2>
265
266 <sect2 role="content">
267 <title>Contents</title>
268
269 <segmentedlist>
270 <segtitle>Installed Programs</segtitle>
271 <segtitle>Installed Libraries</segtitle>
272 <segtitle>Installed Directories</segtitle>
273
274 <seglistitem>
275 <seg>
276 js68 and js68-config
277 </seg>
278 <seg>
279 libmozjs-68.so and libjs_static.ajs <!-- The AJS file doesn't
280 conflict with the one from js52 like originally thought -->
281 </seg>
282 <seg>
283 /usr/include/mozjs-68
284 </seg>
285 </seglistitem>
286 </segmentedlist>
287
288 <variablelist>
289 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
290 <?dbfo list-presentation="list"?>
291 <?dbhtml list-presentation="table"?>
292
293 <varlistentry id="js6-js68">
294 <term><command>js68</command></term>
295 <listitem>
296 <para>
297 provides a command line interface to the
298 <application>JavaScript</application> engine.
299 </para>
300 <indexterm zone="js68 js68">
301 <primary sortas="b-js68">js68</primary>
302 </indexterm>
303 </listitem>
304 </varlistentry>
305
306 <varlistentry id="js68-config">
307 <term><command>js68-config</command></term>
308 <listitem>
309 <para>
310 is used to find the JS compiler and linker flags.
311 </para>
312 <indexterm zone="js68 js68-config">
313 <primary sortas="b-js68-config">js68-config</primary>
314 </indexterm>
315 </listitem>
316 </varlistentry>
317
318 <varlistentry id="libmozjs-68">
319 <term><filename class="libraryfile">libmozjs-68.so</filename></term>
320 <listitem>
321 <para>
322 contains the Mozilla JavaScript API functions.
323 </para>
324 <indexterm zone="js68 libmozjs-68">
325 <primary sortas="c-libmozjs68">libmozjs-68.so</primary>
326 </indexterm>
327 </listitem>
328 </varlistentry>
329 </variablelist>
330 </sect2>
331</sect1>
Note: See TracBrowser for help on using the repository browser.