source: xsoft/graphweb/seamonkey.xml@ f5053149

12.1 ken/TL2024 lazarus plabs/newcss python3.11 rahul/power-profiles-daemon trunk xry111/llvm18
Last change on this file since f5053149 was 493ec31, checked in by Pierre Labastie <pierre.labastie@…>, 7 months ago

Reinstate disable-goncf in seamonkey mozconfig

  • Property mode set to 100644
File size: 19.4 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 seamonkey-download-http "&mozilla-http;/seamonkey/releases/&seamonkey-version;/source/seamonkey-&seamonkey-version;.source.tar.xz">
8 <!ENTITY seamonkey-download-ftp " ">
9 <!ENTITY seamonkey-md5sum "15c73a5e725b7f002b2789706ae643d9">
10 <!ENTITY seamonkey-size "254 MB">
11 <!ENTITY seamonkey-buildsize "4.3 GB (159 MB installed)">
12 <!ENTITY seamonkey-time "11 SBU (with parallelism=4)">
13]>
14
15<sect1 id="seamonkey" xreflabel="seamonkey-&seamonkey-version;">
16 <?dbhtml filename="seamonkey.html" ?>
17
18
19 <title>Seamonkey-&seamonkey-version;</title>
20
21 <indexterm zone="seamonkey">
22 <primary sortas="a-seamonkey">seamonkey</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to Seamonkey</title>
27
28 <para>
29 <application>Seamonkey</application> is a browser suite, a descendant
30 of <application>Netscape</application>. It includes the browser,
31 composer, mail and news clients, and an IRC client.
32 </para>
33
34 <para>
35 It is the community-driven follow-on to the Mozilla Application Suite,
36 created after Mozilla decided to focus on separate applications for
37 browsing and e-mail. Those applications are
38 <xref linkend="firefox"/> and <xref linkend="thunderbird"/>.
39 </para>
40
41 &lfs120_checked;
42
43 <bridgehead renderas="sect3">Package Information</bridgehead>
44 <itemizedlist spacing="compact">
45 <listitem>
46 <para>
47 Download (HTTP): <ulink url="&seamonkey-download-http;"/>
48 </para>
49 </listitem>
50 <listitem>
51 <para>
52 Download (FTP): <ulink url="&seamonkey-download-ftp;"/>
53 </para>
54 </listitem>
55 <listitem>
56 <para>
57 Download MD5 sum: &seamonkey-md5sum;
58 </para>
59 </listitem>
60 <listitem>
61 <para>
62 Download size: &seamonkey-size;
63 </para>
64 </listitem>
65 <listitem>
66 <para>
67 Estimated disk space required: &seamonkey-buildsize;
68 </para>
69 </listitem>
70 <listitem>
71 <para>
72 Estimated build time: &seamonkey-time;
73 </para>
74 </listitem>
75 </itemizedlist>
76
77 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
78 <itemizedlist spacing="compact">
79 <listitem>
80 <para>
81 Required patch:
82 <ulink url="&patch-root;/seamonkey-&seamonkey-version;-consolidated_fixes-1.patch"/>
83 </para>
84 </listitem>
85 <listitem>
86 <para>
87 Required Python module:
88 <ulink url="&pymodules-dl;/s/setuptools/setuptools-&setuptools-version;.tar.gz"/>
89 </para>
90 <para>
91 This module has already been installed in LFS, but now we need
92 to rebuild its wheel package for SeaMonkey building system.
93 </para>
94 </listitem>
95 </itemizedlist>
96
97 <note>
98 <para>
99 The tarball
100 <emphasis>seamonkey-&seamonkey-version;.source.tar.xz</emphasis> will
101 untar to <emphasis>seamonkey-&seamonkey-version;</emphasis> directory.
102 </para>
103 </note>
104
105 <bridgehead renderas="sect3">Seamonkey Dependencies</bridgehead>
106
107 <bridgehead renderas="sect4">Required</bridgehead>
108 <para role="required">
109 <!--xref linkend="autoconf213"/-->
110 <xref linkend="cbindgen"/>,
111 <xref linkend="gtk3"/>,
112 <xref linkend="nodejs"/>,
113 <xref linkend="six"/>,
114 <xref linkend="unzip"/>,
115 <xref linkend="yasm"/>, and
116 <xref linkend="zip"/>
117 </para>
118
119 <bridgehead renderas="sect4">Recommended</bridgehead>
120 <para role="recommended">
121 <xref linkend="icu"/>,
122 <xref linkend="libevent"/>,
123 <!--<xref linkend="libvpx"/>, Causes build failures similar to Firefox -->
124 <xref linkend="libwebp"/>,
125 <xref linkend="llvm"/> (with clang),
126 <xref linkend="nasm"/>,
127 <xref linkend="nspr"/>,
128 <xref linkend="nss"/>, and
129 <xref linkend="pulseaudio"/>
130 <!-- <xref linkend="sqlite"/> system version no longer supported -->
131 </para>
132<!--
133 <bridgehead renderas="sect4">Optional</bridgehead>
134 <para role="optional">
135 <xref linkend="sqlite"/> (not recommended due to potential
136 security concerns)
137 </para>
138-->
139 <note>
140 <para>
141 If you don't install recommended dependencies, then internal copies of
142 those packages will be used. They might be tested to work, but they can
143 be out of date or contain security holes.
144 </para>
145 </note>
146
147 <bridgehead renderas="sect4">Optional</bridgehead>
148 <para role="optional">
149 <xref linkend="alsa-lib"/>,
150 <xref linkend="dbus-glib"/>,
151 <xref linkend="startup-notification"/>,
152 <xref linkend="valgrind"/>,
153 <xref linkend="wget"/>,
154 <xref linkend="wireless_tools"/>,
155 <ulink url="https://hunspell.sourceforge.net/">Hunspell</ulink>,
156 <ulink url="https://gitlab.gnome.org/Archive/gconf">Gconf</ulink>, and
157 <ulink url="https://facebook.github.io/watchman/">Watchman</ulink>
158 </para>
159
160 <para condition="html" role="usernotes">
161 Editor Notes: <ulink url="&blfs-wiki;/seamonkey"/>
162 </para>
163
164 </sect2>
165
166 <sect2 role="installation">
167 <title>Installation of Seamonkey</title>
168
169 <para>
170 The configuration of <application>Seamonkey</application> is accomplished
171 by creating a <filename>mozconfig</filename> file containing the desired
172 configuration options. A default <filename>mozconfig</filename> file is
173 created below. To see the entire list of available configuration options
174 (and an abbreviated description of each one), issue
175 <command>./configure --help</command>. You may also wish to review the
176 entire file and uncomment any other desired options. Create the file by
177 issuing the following command:
178 </para>
179
180<screen><?dbfo keep-together="auto"?><userinput>cat &gt; mozconfig &lt;&lt; "EOF"
181<literal># If you have a multicore machine, all cores will be used
182
183# If you have installed DBus-Glib comment out this line:
184ac_add_options --disable-dbus
185
186# If you have installed dbus-glib, and you have installed (or will install)
187# wireless-tools, and you wish to use geolocation web services, comment out
188# this line
189ac_add_options --disable-necko-wifi
190
191# Uncomment these lines if you have installed optional dependencies:
192#ac_add_options --enable-system-hunspell
193#ac_add_options --enable-startup-notification
194
195# Uncomment the following option if you have not installed PulseAudio
196#ac_add_options --disable-pulseaudio
197# and uncomment this if you installed alsa-lib instead of PulseAudio
198#ac_add_options --enable-alsa
199
200# Comment out the following option if you have gconf installed
201ac_add_options --disable-gconf
202
203# Comment out following options if you have not installed
204# recommended dependencies:
205ac_add_options --with-system-icu
206ac_add_options --with-system-libevent
207ac_add_options --with-system-nspr
208ac_add_options --with-system-nss
209ac_add_options --with-system-webp
210
211# Disabling debug symbols makes the build much smaller and a little
212# faster. Comment this if you need to run a debugger. Note: This is
213# required for compilation on i686.
214ac_add_options --disable-debug-symbols
215<!-- With Firefox ESR 128 we'd replace the following part with
216"- -enable-elf-hack=relr", or remove it if relr becomes the default.
217But I've no idea if SeaMonkey will have this change backported. -->
218# The elf-hack is reported to cause failed installs (after successful builds)
219# on some machines. It is supposed to improve startup time and it shrinks
220# libxul.so by a few MB. With recent Binutils releases the linker already
221# supports a much safer and generic way for this.
222ac_add_options --disable-elf-hack
223ac_add_options --enable-linker=bfd
224export LDFLAGS="$LDFLAGS -Wl,-z,pack-relative-relocs"
225
226# Seamonkey has some additional features that are not turned on by default,
227# such as an IRC client, calendar, and DOM Inspector. The DOM Inspector
228# aids with designing web pages. Comment these options if you do not
229# desire these features.
230ac_add_options --enable-calendar
231ac_add_options --enable-dominspector
232ac_add_options --enable-irc
233
234# The BLFS editors recommend not changing anything below this line:
235ac_add_options --prefix=/usr
236ac_add_options --enable-application=comm/suite
237
238ac_add_options --disable-crashreporter
239ac_add_options --disable-updater
240ac_add_options --disable-tests
241
242# The Rust code for SIMD optimization is much more outdated than
243# Firefox and Thunderbird, so it does not build with recent Rustc.
244ac_add_options --disable-rust-simd
245
246ac_add_options --enable-strip
247ac_add_options --enable-install-strip
248
249# You cannot distribute the binary if you do this.
250ac_add_options --enable-official-branding
251
252# The option to use system cairo was removed in 2.53.9.
253ac_add_options --enable-system-ffi
254ac_add_options --enable-system-pixman
255
256ac_add_options --with-system-bz2
257ac_add_options --with-system-jpeg
258ac_add_options --with-system-png
259ac_add_options --with-system-zlib
260
261export CC=clang CXX=clang++</literal>
262EOF</userinput></screen>
263
264 <note>
265 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
266 href="../../xincludes/mozshm.xml"/>
267 </note>
268
269 <para>
270 First, apply a security patch that fixes some problems with
271 Seamonkey's bundled version of libvpx:
272 </para>
273
274<screen><userinput>patch -Np1 -i ../seamonkey-&seamonkey-version;-consolidated_fixes-1.patch</userinput></screen>
275
276 <para>
277 The building system ships several internal copies of the Python 3
278 module <filename>six.py</filename> and wheel packages for
279 <filename>pip</filename> and <filename>setuptools</filename> modules.
280 Theses shipped modules are too old to work well with Python 3.12 or
281 later. Replace the shipped <filename>six.py</filename> copies with
282 the symlinks to <xref linkend='six'/> already installed on the system,
283 link the updated <filename>pip</filename> wheel package shipped
284 as a part of Python 3 in LFS into the building system, and build an
285 updated <filename>setuptools</filename> wheel package. Then adapt
286 the building system for the updated modules. We also need to rewrite
287 the code based on the <filename>imp</filename> module removed in
288 Python 3.12 and later using the <filename>importlib</filename> module:
289 </para>
290
291 <screen><userinput>(for i in $(find -name six.py); do
292 ln -sfv /usr/lib/python3.12/site-packages/six.py $i
293 [ $? = 0 ] || exit $?
294 done) &amp;&amp;
295
296ln -sv /usr/lib/python&python3-majorver;/ensurepip/_bundled/pip-*.whl \
297 third_party/python/virtualenv/virtualenv_support &amp;&amp;
298
299tar xf ../setuptools-&setuptools-version;.tar.gz &amp;&amp;
300pip3 wheel --no-build-isolation --no-deps --no-cache-dir \
301 $PWD/setuptools-&setuptools-version; \
302 -w third_party/python/virtualenv/virtualenv_support &amp;&amp;
303
304sed '/ConfigParser/s/Safe//' \
305 -i testing/mozbase/mozprofile/mozprofile/prefs.py &amp;&amp;
306
307sed 's/distutils/setuptools._&amp;/' \
308 -i python/mozbuild/mozbuild/nodeutil.py &amp;&amp;
309
310sed 's/readfp/read_file/' -i ipc/ipdl/ipdl.py &amp;&amp;
311
312sed -e '/^import/s/imp$/importlib.util/' \
313 -e 's/imp.new_module/__import__/' \
314 -e "s/imp.load_source\(.*\)/spec = \
315 importlib.util.spec_from_file_location\1; \
316 mod = importlib.util.module_from_spec(spec); \
317 spec.loader.exec_module(mod)/" -i python/mach/mach/main.py &amp;&amp;
318
319sed -e '/^import/s/imp$/importlib.util/' \
320 -e '/imp.PY_SOURCE/d' \
321 -e "s/\([a-z_]*\) = imp.load_module([^,]*,[^,]*,\(.*\)/spec = \
322 importlib.util.spec_from_file_location('script', \2); \
323 \1 = importlib.util.module_from_spec(spec); \
324 spec.loader.exec_module(\1)/" \
325 -i netwerk/dns/prepare_tlds.py \
326 python/mozbuild/mozbuild/action/file_generate.py</userinput></screen>
327
328 <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1859752
329 https://hg.mozilla.org/try/rev/d5f3b0c4f08a -->
330 <para>
331 If building with system ICU, adapt the line break mapping for ICU
332 74 or later:
333 </para>
334
335<screen><userinput>(for i in {43..47}; do
336 sed '/ZWJ/s/$/,CLASS_CHARACTER/' -i intl/lwbrk/LineBreaker.cpp || exit $?
337 done)</userinput></screen>
338
339 <para>
340 Fix a problem with the bundled 'distro' python module:
341 </para>
342
343<screen><userinput>sed -e '1012 s/stderr=devnull/stderr=subprocess.DEVNULL/' \
344 -e '1013 s/OSError/(OSError, subprocess.CalledProcessError)/' \
345 -i third_party/python/distro/distro.py</userinput></screen>
346
347 <para>
348 Compile <application>Seamonkey</application> by running the following
349 commands:
350 </para>
351
352<screen><userinput>AUTOCONF=true ./mach configure &amp;&amp;
353./mach build</userinput></screen>
354
355
356 <!-- comment this since llvm must have been installed for rust
357 <note>
358 <para>
359 The CC and CXX variables above are only needed if
360 <xref linkend="llvm"/> is installed and you do not want to use clang.
361 </para>
362 </note>-->
363
364 <para>
365 This package does not come with a test suite.
366 </para>
367
368 <para>
369 Install <application>Seamonkey</application> by issuing the following
370 commands as the <systemitem class="username">root</systemitem> user:
371 </para>
372
373
374<screen role="root"><userinput>./mach install &amp;&amp;
375chown -R 0:0 /usr/lib/seamonkey &amp;&amp;
376
377cp -v $(find -name seamonkey.1 | head -n1) /usr/share/man/man1</userinput></screen>
378
379 </sect2>
380
381 <sect2 role="commands">
382 <title>Command Explanations</title>
383
384 <para>
385 <command>export CC=clang CXX=clang++</command>:
386 With the introduction of <application>gcc-12</application>, many
387 more warnings are generated when compiling mozilla applications
388 and that results in a much slower, and larger, build. Furthermore,
389 building with GCC on i?86 is currently broken.
390 Although upstream mozilla code defaults to using
391 <application>llvm</application> unless overridden, the older configure
392 code in <application>Seamonkey</application> defaults to gcc.
393 </para>
394
395 <para>
396 <command>AUTOCONF=true ./mach configure</command>: This validates
397 the supplied dependencies and the <filename>mozconfig</filename>.
398 The building system always checks for an old version (2.13) of
399 autoconf, but it's not really needed because the necessary
400 <command>configure</command> scripts are already shipped in the
401 tarball and we've not modified the <filename>configure.in</filename>
402 files. So we pass <envar>AUTOCONF=true</envar> so the building system
403 will skip the checking for autoconf-2.13 and allow building this
404 package without autoconf-2.13 installed.
405 </para>
406
407 <para>
408 <option>./mach build --verbose</option>: Use this alternative if you
409 need details of which files are being compiled, together with any C or
410 C++ flags being used. But do not add '--verbose' to the install command,
411 it is not accepted there.
412 </para>
413
414 <para>
415 <option>./mach build -jN</option>: The build should, by default, use
416 all the online CPU cores. If using all the cores causes the build to swap
417 because you have insufficient memory, using fewer cores can be faster.
418 </para>
419
420 </sect2>
421
422 <sect2 role="configuration">
423 <title>Configuring Seamonkey</title>
424
425 <para>
426 For installing various <application>Seamonkey</application> add-ons, refer
427 to <ulink url="https://addons.thunderbird.net/en-US/seamonkey/">Add-ons
428 for Seamonkey</ulink>.
429 </para>
430
431 <para>
432 Along with using the <quote>Preferences</quote> menu to configure
433 <application>Seamonkey</application>'s options and preferences to suit
434 individual tastes, finer grain control of many options is only available
435 using a tool not available from the general menu system. To access this
436 tool, you'll need to open a browser window and enter
437 <systemitem role="url">about:config</systemitem> in the address bar. This
438 will display a list of the configuration preferences and information
439 related to each one. You can use the <quote>Search:</quote> bar to enter
440 search criteria and narrow down the listed items. Changing a preference
441 can be done using two methods. One, if the preference has a boolean value
442 (True/False), simply double-click on the preference to toggle the value
443 and two, for other preferences simply right-click on the desired line,
444 choose <quote>Modify</quote> from the menu and change the value. Creating
445 new preference items is accomplished in the same way, except choose
446 <quote>New</quote> from the menu and provide the desired data into the
447 fields when prompted.
448 </para>
449
450<!-- The URL no longer exists.
451 <tip>
452 <para>
453 There is a multitude of configuration parameters you can tweak to
454 customize <application>SeaMonkey</application>. A very extensive list of
455 these parameters can be found at
456 <ulink url="http://preferential.mozdev.org/preferences.html"/>.
457 </para>
458 </tip>
459-->
460 <para>
461 If you use a desktop environment like <application>Gnome</application> or
462 <application>KDE</application> you may wish to create a
463 <filename>seamonkey.desktop</filename> file so that
464 <application>Seamonkey</application> appears in the panel's menus. If you
465 didn't enable <application>Startup-Notification</application> in your
466 mozconfig change the StartupNotify line to false. As the
467 <systemitem class="username">root</systemitem> user:
468 </para>
469
470<screen role="root"><userinput>mkdir -pv /usr/share/{applications,pixmaps} &amp;&amp;
471
472cat &gt; /usr/share/applications/seamonkey.desktop &lt;&lt; "EOF"
473<literal>[Desktop Entry]
474Encoding=UTF-8
475Type=Application
476Name=Seamonkey
477Comment=The Mozilla Suite
478Icon=seamonkey
479Exec=seamonkey
480Categories=Network;GTK;Application;Email;Browser;WebBrowser;News;
481StartupNotify=true
482Terminal=false</literal>
483EOF
484
485ln -sfv /usr/lib/seamonkey/chrome/icons/default/default128.png \
486 /usr/share/pixmaps/seamonkey.png</userinput></screen>
487 </sect2>
488
489 <sect2 role="content">
490 <title>Contents</title>
491
492 <segmentedlist>
493 <segtitle>Installed Programs</segtitle>
494 <segtitle>Installed Libraries</segtitle>
495 <segtitle>Installed Directory</segtitle>
496
497 <seglistitem>
498 <seg>seamonkey</seg>
499 <seg>
500 Numerous libraries, browser, and email/newsgroup components, plugins,
501 extensions, and helper modules installed in
502 <filename class="directory">/usr/lib/seamonkey</filename>
503 </seg>
504 <seg>
505 /usr/lib/seamonkey
506 </seg>
507 </seglistitem>
508 </segmentedlist>
509
510 <variablelist>
511 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
512 <?dbfo list-presentation="list"?>
513 <?dbhtml list-presentation="table"?>
514
515 <varlistentry id="seamonkey-prog">
516 <term><command>seamonkey</command></term>
517 <listitem>
518 <para>
519 is the Mozilla browser/email/newsgroup/chat client suite
520 </para>
521 <indexterm zone="seamonkey seamonkey-prog">
522 <primary sortas="b-seamonkey">seamonkey</primary>
523 </indexterm>
524 </listitem>
525 </varlistentry>
526 </variablelist>
527 </sect2>
528
529</sect1>
Note: See TracBrowser for help on using the repository browser.