source: xsoft/graphweb/firefox.xml@ 54814bd

10.0 10.1 11.0 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind ken/refactor-virt lazarus perl-modules qt5new trunk xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since 54814bd was 54814bd, checked in by Ken Moffat <ken@…>, 4 years ago

Remove another lingering /usr/lib/firefox-59.0.1

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

  • Property mode set to 100644
File size: 20.3 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<!--
8 <!ENTITY firefox-download-http "&mozilla-http;/firefox/releases/&firefox-version;/source/firefox-&firefox-version;.source.tar.xz">
9-->
10 <!ENTITY firefox-hgversion "3db9e3d52b17563efca181ccbb50deb8660c59ae">
11 <!-- use tinyurl to get a much shorter link for the wget example -->
12 <!ENTITY firefox-tiny "https://tinyurl.com/firefox-59-0-1-tar-bz2">
13 <!ENTITY firefox-download-http "&mozilla-hg;&firefox-hgversion;.tar.bz2">
14 <!ENTITY firefox-download-ftp " ">
15 <!ENTITY firefox-md5sum "5aff0df363d778ebe0e572d6c9f13dbe">
16 <!ENTITY firefox-size "291 MB">
17 <!-- NB with stylo, much of the build uses rust, and therefore cargo files.
18 But when building 58.0 on rustc-1.22.1 the extra files, if any, seem to be minimal -->
19 <!ENTITY firefox-buildsize "7.5 GB (157 MB installed) without tests">
20 <!ENTITY firefox-time "21 SBU (with parallelism=4) without tests">
21]>
22
23<sect1 id="firefox" xreflabel="Firefox-&firefox-version;">
24 <?dbhtml filename="firefox.html" ?>
25
26 <sect1info>
27 <othername>$LastChangedBy$</othername>
28 <date>$Date$</date>
29 </sect1info>
30
31 <title>Firefox-&firefox-version;</title>
32
33 <indexterm zone="firefox">
34 <primary sortas="a-Firefox">Firefox</primary>
35 </indexterm>
36
37 <sect2 role="package">
38 <title>Introduction to Firefox</title>
39
40 <para>
41 <application>Firefox</application> is a stand-alone browser based on the
42 <application>Mozilla</application> codebase.
43 </para>
44
45 &lfs82_checked;
46
47 <bridgehead renderas="sect3">Package Information</bridgehead>
48 <itemizedlist spacing="compact">
49 <listitem>
50 <para>
51 Download (HTTP): <ulink url="&firefox-download-http;"/>
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download (FTP): <ulink url="&firefox-download-ftp;"/>
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download MD5 sum: &firefox-md5sum;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Download size: &firefox-size;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Estimated disk space required: &firefox-buildsize;
72 </para>
73 </listitem>
74 <listitem>
75 <para>
76 Estimated build time: &firefox-time;
77 </para>
78 </listitem>
79 </itemizedlist>
80
81 <note>
82 <para>
83 Upstream now only provide tarballs named with 40-character mercurial
84 commit hashes.
85 <!--
86 This will untar to <emphasis>mozilla-release-&firefox-hgversion;/</emphasis>,
87 but it will build firefox-&firefox-version; - you may prefer to rename the
88 -->
89 You may prefer to rename the
90 downloaded tarball, either to firefox-&firefox-version;.tar.bz2 or to
91 mozilla-release-&firefox-hgversion;.tar.bz2, or to use wget, e.g.
92<screen><userinput>wget -c &firefox-tiny; \
93 -O mozilla-release-&firefox-hgversion;.tar.bz2</userinput></screen>
94 </para>
95 </note>
96
97 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
98 <itemizedlist spacing="compact">
99 <listitem>
100 <para>
101 Optional patch to allow system versions of <xref linkend="graphite2"/>
102 and <xref linkend="harfbuzz"/>:
103 <ulink url="&patch-root;/firefox-&firefox-version;-system_graphite2_harfbuzz-1.patch"/>
104 </para>
105 </listitem>
106 </itemizedlist>
107
108 <note>
109 <para>
110 Extracting the tarball
111 will reset the permissions of the current directory to 0755 if you
112 have permission to do that. If you do this in a directory where
113 the sticky bit is set, such
114 as <filename class="directory">/tmp</filename> it will end with error
115 messages:
116 </para>
117
118<literallayout>tar: .: Cannot utime: Operation not permitted
119tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
120tar: Exiting with failure status due to previous errors
121</literallayout>
122
123 <para>
124 This does finish with non-zero status, but it does
125 <emphasis>NOT</emphasis> mean there is a real problem.
126 Do not untar as the <systemitem class="username">root</systemitem> user
127 in a directory where the sticky bit is set - that will unset it.
128 </para>
129
130 <para>
131 The build times for this version of firefox (using stylo, the new CSS
132 rendering code) seem to vary widely between different machines. On one
133 old Intel i3 with only 4GB of RAM the build took
134 <emphasis>considerably</emphasis> longer. The reason for this is
135 not understood. A build with stylo disabled is typically 1 or 2 SBU
136 quicker and needs 0.8GB less disk space.
137 </para>
138
139 <para>
140 Although upstream prefer to use <application>PulseAudio</application>,
141 for the moment <application>Alsa</application> can still be used. Both
142 may need runtime configuration to get sound working.
143 </para>
144 </note>
145
146 <bridgehead renderas="sect3">Firefox Dependencies</bridgehead>
147
148 <bridgehead renderas="sect4">Required</bridgehead>
149 <para role="required">
150 <xref linkend="autoconf213"/>,
151 both <xref linkend="gtk3"/> and
152 <xref linkend="gtk2"/>,
153 <xref linkend="libnotify"/>,
154 <xref linkend="nss"/>,
155 <xref linkend="pulseaudio"/>
156 (or
157 <xref linkend="alsa-lib"/> if you edit the mozconfig;
158 now deprecated by mozilla), in either case please read the
159 Configuration Information,
160 <xref linkend="rust"/>,
161 <xref linkend="unzip"/>,
162 <xref linkend="yasm"/>, and
163 <xref linkend="zip"/>
164 </para>
165
166 <bridgehead renderas="sect4">Recommended</bridgehead>
167 <para role="recommended">
168 <xref linkend="icu"/>,
169 <xref linkend="libevent"/>,
170 <xref linkend="libvpx"/>,
171 <package>clang</package> from <xref linkend="llvm"/> (for stylo), and
172 <xref linkend="sqlite"/>
173 </para>
174
175 <note>
176 <para>
177 If you don't install recommended dependencies, then internal copies of
178 those packages will be used. They might be tested to work, but they can
179 be out of date or contain security holes.
180 </para>
181 </note>
182
183 <bridgehead renderas="sect4">Optional</bridgehead>
184 <para role="optional">
185 <xref linkend="curl"/>,
186 <xref linkend="dbus-glib"/>,
187 <xref linkend="doxygen"/>,
188 <xref linkend="GConf"/>,
189 <xref role="runtime" linkend="ffmpeg"/> (runtime, to play mov, mp3 or mp4 files),
190 <xref linkend="libwebp"/>,
191 <xref linkend="openjdk"/>,
192 <xref linkend="startup-notification"/>,
193 <xref linkend="valgrind"/>,
194 <xref linkend="wget"/>,
195 <xref linkend="wireless_tools"/>,
196 <ulink url="https://hunspell.github.io/">Hunspell</ulink>,
197 <phrase revision="sysv"><ulink url="http://sourceforge.net/projects/liboauth/files/">liboauth</ulink></phrase>
198 <phrase revision="systemd"><xref linkend="liboauth"/></phrase>,
199 <ulink url="https://github.com/libproxy/libproxy">libproxy</ulink>,
200 and (with the patch)
201 <xref linkend="graphite2"/> and
202 <xref linkend="harfbuzz"/>
203 </para>
204
205 <para condition="html" role="usernotes">
206 User Notes: <ulink url="&blfs-wiki;/firefox"/>
207 </para>
208 </sect2>
209
210 <sect2 role="installation">
211 <title>Installation of Firefox</title>
212
213 <para>
214 The configuration of <application>Firefox</application> is accomplished
215 by creating a <filename>mozconfig</filename> file containing the desired
216 configuration options. A default <filename>mozconfig</filename> is
217 created below. To see the entire list of available configuration options
218 (and an abbreviated description of some of them), issue <command>./mach
219 configure &amp;&amp; ./configure --help | less</command>. You may also
220 wish to review the entire file and uncomment any other desired options.
221 Create the file by issuing the following command:
222 </para>
223
224<screen><userinput>cat &gt; mozconfig &lt;&lt; "EOF"
225<literal># If you have a multicore machine, all cores will be used by default.
226# You can change the number of non-rust jobs by setting a valid number
227# of cores in this option, but when rust crates are being compiled
228# jobs will be scheduled for all the available CPU cores.
229#mk_add_options MOZ_MAKE_FLAGS="-j1"
230
231# If you have installed dbus-glib, comment out this line:
232ac_add_options --disable-dbus
233
234# If you have installed dbus-glib, and you have installed (or will install)
235# wireless-tools, and you wish to use geolocation web services, comment out
236# this line
237ac_add_options --disable-necko-wifi
238
239# API Keys for geolocation APIs - necko-wifi (above) is required for MLS
240# Uncomment the following line if you wish to use Mozilla Location Service
241#ac_add_options --with-mozilla-api-keyfile=$PWD/mozilla-key
242
243# Uncomment the following line if you wish to use Google's geolocaton API
244# (needed for use with saved maps with Google Maps)
245#ac_add_options --with-google-api-keyfile=$PWD/google-key
246
247# Uncomment these lines if you have installed optional dependencies:
248#ac_add_options --enable-system-hunspell
249#ac_add_options --enable-startup-notification
250
251# Uncomment the following option if you have not installed PulseAudio
252#ac_add_options --disable-pulseaudio
253# and uncomment this if you installed alsa-lib instead of PulseAudio
254#ac_add_options --enable-alsa
255
256# If you have installed GConf, comment out this line
257ac_add_options --disable-gconf
258
259# Stylo is the new CSS code, including the rust 'style'
260# package. It is enabled by default but requires clang.
261# Uncomment this if you do not wish to use stylo.
262#ac_add_options --disable-stylo
263
264# Comment out following options if you have not installed
265# recommended dependencies:
266ac_add_options --enable-system-sqlite
267ac_add_options --with-system-libevent
268ac_add_options --with-system-libvpx
269ac_add_options --with-system-nspr
270ac_add_options --with-system-nss
271ac_add_options --with-system-icu
272
273# If you are going to apply the patch for system graphite
274# and system harfbuzz, uncomment these lines:
275#ac_add_options --with-system-graphite2
276#ac_add_options --with-system-harfbuzz
277
278# Stripping is now enabled by default.
279# Uncomment these lines if you need to run a debugger:
280#ac_add_options --disable-strip
281#ac_add_options --disable-install-strip
282
283# The BLFS editors recommend not changing anything below this line:
284ac_add_options --prefix=/usr
285ac_add_options --enable-application=browser
286
287ac_add_options --disable-crashreporter
288ac_add_options --disable-updater
289# enabling the tests will use a lot more space and significantly
290# increase the build time, for no obvious benefit.
291ac_add_options --disable-tests
292
293# Optimization for size is broken with gcc7
294ac_add_options --enable-optimize="-O2"
295
296ac_add_options --enable-official-branding
297
298# In firefox-59.0 system cairo breaks the build, so comment it.
299#ac_add_options --enable-system-cairo
300ac_add_options --enable-system-ffi
301ac_add_options --enable-system-pixman
302
303ac_add_options --with-pthreads
304
305ac_add_options --with-system-bz2
306ac_add_options --with-system-jpeg
307ac_add_options --with-system-png
308ac_add_options --with-system-zlib
309
310mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir</literal>
311EOF</userinput></screen>
312
313 <para>
314 Compile <application>Firefox</application> by issuing the following
315 commands:
316 </para>
317
318 <para>
319 If you have installed system versions of graphite2 and harfbuzz and wish
320 firefox to use those instead of its shipped versions, apply the patch and
321 uncomment the appropriate entries in the <filename>mozconfig</filename>
322 file.
323 </para>
324
325<screen><userinput>patch -Np1 -i ../firefox-&firefox-version;-system_graphite2_harfbuzz-1.patch</userinput></screen>
326
327 <para>
328 If the geolocation APIs are needed:
329 </para>
330
331 <note>
332 <para>
333 <!-- Taken from Arch Linux - an immensely helpful link - Thanks -->
334 The Google and Mozilla API Keys below are specific to LFS. If using
335 these instructions for another distro, or if you intend to distribute
336 binary copies of the software using these instructions, please obtain
337 your own keys following the instructions located at
338 <ulink url="http://www.chromium.org/developers/how-tos/api-keys"/> and
339 <ulink url="https://location.services.mozilla.com/api"/> respectively.
340 <!-- BLFS Devs, register an account at Google with your
341 @linuxfromscratch.org email address, and I'll make you an administrator
342 for the 'Google APIs for LFS' project (where the API and OAuth keys
343 were created for use in the book).-->
344 </para>
345 </note>
346
347<screen><userinput>echo "AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ" > google-key
348echo "d2284a20-0505-4927-a809-7ffaf4d91e55" > mozilla-key</userinput></screen>
349
350 <note><para>
351 If you are compiling <application>Firefox</application> in chroot, make
352 sure you have <envar>$SHELL</envar> environment variable set or prepend
353 <envar>SHELL=/bin/sh</envar>.
354 </para></note>
355
356<!-- the BINDGEN_CFLAGS are to work around
357 https://bugzilla.mozilla.org/show_bug.cgi?id=1341234
358 which is reported to be fixed in ff58 -->
359<screen><userinput>
360./mach build
361</userinput></screen>
362
363 <para>
364 The <filename>mozconfig</filename> above disables the tests because
365 they use a lot more time and disk space for no obvious benefit. If
366 you have nevertheless enabled them, you can run the tests by executing
367 <command>./mach gtest</command>. This will require a network connection,
368 and to be run from within an Xorg session - there is a popup dialog
369 when it fails to connect to ALSA (that does not create a failed test).
370 One or two tests will fail. To see the details of the failure(s) you
371 will need to log the output from that command so that you can review it.
372 </para>
373
374 <para>
375 Now, as the <systemitem class="username">root</systemitem> user:
376 </para>
377
378<screen role="root"><userinput>./mach install &amp;&amp;
379
380mkdir -pv /usr/lib/mozilla/plugins &amp;&amp;
381ln -sfv ../../mozilla/plugins /usr/lib/firefox/browser/</userinput></screen>
382<!--
383 <para>
384 Set environment variables back to their values:
385 </para>
386
387<screen><userinput>export CFLAGS=$CFLAGS_HOLD &amp;&amp;
388export CXXFLAGS=$CXXFLAGS_HOLD &amp;&amp;
389unset CFLAGS_HOLD CXXFLAGS_HOLD</userinput></screen>
390-->
391
392 </sect2>
393
394 <sect2 role="commands">
395 <title>Command Explanations</title>
396
397 <para>
398 <command>./mach build</command>: <application>Firefox</application>
399 now uses this <application>python2</application> script to run the
400 build and install.
401 </para>
402
403 <para>
404 <option>./mach build --verbose</option>: Use this alternative if you
405 need details of which files are being compiled, together with any C or
406 C++ flags being used.
407 </para>
408
409 <para>
410 <command>mkdir -pv /usr/lib/mozilla/plugins</command>: This ensures
411 that <filename class="directory">/usr/lib/mozilla/plugins/</filename>
412 exists.
413 </para>
414
415 <para>
416 <command>ln -sv ... /usr/lib/firefox/browser</command>:
417 This command creates a symbolic link to <filename
418 class="directory">/usr/lib/mozilla/plugins</filename>. It's not really
419 needed, as <application>Firefox</application> checks <filename
420 class="directory">/usr/lib/mozilla/plugins</filename> by default, but the
421 symbolic link is made to keep all the plugins installed in one folder.
422 </para>
423
424 </sect2>
425
426 <sect2 role="configuration">
427 <title>Configuring Firefox</title>
428
429 <para>
430 If you use a desktop environment like <application>Gnome</application> or
431 <application>KDE</application> you may like to create a
432 <filename>firefox.desktop</filename> file so that
433 <application>Firefox</application> appears in the panel's menus. If you
434 didn't enable startup-notification in your mozconfig change the
435 StartupNotify line to false. As the
436 <systemitem class="username">root</systemitem> user:
437 </para>
438
439<screen role="root"><userinput>mkdir -pv /usr/share/applications &amp;&amp;
440mkdir -pv /usr/share/pixmaps &amp;&amp;
441
442cat &gt; /usr/share/applications/firefox.desktop &lt;&lt; "EOF" &amp;&amp;
443<literal>[Desktop Entry]
444Encoding=UTF-8
445Name=Firefox Web Browser
446Comment=Browse the World Wide Web
447GenericName=Web Browser
448Exec=firefox %u
449Terminal=false
450Type=Application
451Icon=firefox
452Categories=GNOME;GTK;Network;WebBrowser;
453MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
454StartupNotify=true</literal>
455EOF
456
457ln -sfv /usr/lib/firefox/browser/chrome/icons/default/default128.png \
458 /usr/share/pixmaps/firefox.png</userinput></screen>
459
460 <sect3><title>Configuration Information</title>
461
462 <para>
463 The application settings for firefox are accessible by keying
464 <command>about:config</command> in the address bar.
465 </para>
466
467 <para>
468 With this version of <application>firefox</application>, getting
469 working sound can be a problem. Although upstream prefers pulseaudio,
470 on balance using <application>Alsa</application> may be easier.
471 </para>
472
473 <para>
474 If you enabled <application>Alsa</application> for sound, you may need
475 to alter one variable to get working sound. If you run
476 <command>firefox</command> from a term and try to play something with
477 sound you might encounter error messages like:
478 </para>
479
480 <para>
481 <literal>Sandbox: seccomp sandbox violation: pid 3941, tid 4030,
482 syscall 16, args 48 2147767296 139909894784796 0 0 0.</literal>
483 </para>
484
485 <para>
486 That was on x86_64, on i686 the syscall number is 54. To allow this
487 syscall, in <command>about:config</command> change
488 <command>security.sandbox.content.syscall_whitelist</command> to 16
489 (or 54 if using i686).
490 </para>
491
492 <para>
493 If you use <command>pulseaudio</command> in a Desktop Environment, it
494 might already be started by that DE. But if it is not, although
495 firefox-57 managed to start it, firefox-58 does not. If you run
496 <command>firefox</command> from a term, trying to play sound will
497 encounter error messages warning <literal>Can't get cubeb
498 context!</literal>
499 </para>
500
501 <para>
502 The fix for this is to close firefox, start pulseaudio to check it
503 does start (if not, read the information on Configuring in <xref
504 linkend="pulseaudio"/>) and restart firefox to check it is working.
505 If it now works, add the following to your <filename>~/.xinitrc</filename>:
506<phrase revision="sysv">
507<literal>pulseaudio --verbose --log-target=syslog&amp;</literal></phrase>
508<phrase revision="systemd">
509<literal>pulseaudio --verbose --log-target=journald&amp;</literal></phrase>
510 (unfortunately, on some systems this does not work).
511 </para>
512
513 <para>
514 You may wish to use multiple profiles within firefox. To do that, invoke
515 firefox as <command>firefox --ProfileManager</command>. You can also
516 check which profile is currently in use from
517 <command>about:profiles</command>.
518 </para>
519
520 </sect3>
521 </sect2>
522
523 <sect2 role="content">
524 <title>Contents</title>
525
526 <segmentedlist>
527 <segtitle>Installed Programs</segtitle>
528 <segtitle>Installed Libraries</segtitle>
529 <segtitle>Installed Directory</segtitle>
530
531 <seglistitem>
532 <seg>
533 firefox
534 </seg>
535 <seg>
536 Numerous libraries, browser components, plugins, extensions, and
537 helper modules installed in /usr/lib/firefox
538 </seg>
539 <seg>
540 /usr/lib/firefox and /usr/lib/mozilla
541 </seg>
542 </seglistitem>
543 </segmentedlist>
544
545 <variablelist>
546 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
547 <?dbfo list-presentation="list"?>
548 <?dbhtml list-presentation="table"?>
549
550 <varlistentry id="firefox-prog">
551 <term><command>firefox</command></term>
552 <listitem>
553 <para>
554 is a <application>GTK+-3</application> internet browser that uses
555 the Mozilla Gecko rendering engine.
556 </para>
557 <indexterm zone="firefox firefox-prog">
558 <primary sortas="b-firefox">firefox</primary>
559 </indexterm>
560 </listitem>
561 </varlistentry>
562
563 </variablelist>
564
565 </sect2>
566
567</sect1>
Note: See TracBrowser for help on using the repository browser.