source: general/genlib/js68.xml@ 65106bd

10.0 10.1 11.0 ken/refactor-virt lazarus qt5new trunk xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since 65106bd was 65106bd, checked in by Thomas Trepl <thomas@…>, 16 months ago

Fix wrong entity referred in a note

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