source: xsoft/graphweb/seamonkey.xml@ 7be485e

12.1 ken/TL2024 ken/tuningfonts lazarus plabs/newcss python3.11 rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18
Last change on this file since 7be485e was 7be485e, checked in by Xi Ruoyao <xry111@…>, 7 months ago

seamonkey: Add ICU 74 workaround

Note that it's slightly different from Firefox.

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