source: xsoft/other/thunderbird.xml@ 3d516cf

12.2 gimp3 lazarus trunk xry111/for-12.3 xry111/spidermonkey128
Last change on this file since 3d516cf was 3d516cf, checked in by Xi Ruoyao <xry111@…>, 2 months ago

Style consistency and typing fixes

  • Property mode set to 100644
File size: 18.1 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
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 thunderbird-download-http "&mozilla-http;/thunderbird/releases/&thunderbird-version;esr/source/thunderbird-&thunderbird-version;esr.source.tar.xz">
8 <!ENTITY thunderbird-download-ftp " ">
9 <!ENTITY thunderbird-md5sum "f20899eb706a94076ac88dfe97cc7a88">
10 <!ENTITY thunderbird-size "642 MB">
11 <!ENTITY thunderbird-buildsize "7.8 GB (256 MB installed)">
12 <!ENTITY thunderbird-time "16 SBU (on a 8-core machine)">
13 <!-- Removed the -j1 time because python and rust do not obey it, although
14 the C/C++ code appears to obey it.
15
16 Version 102.3.3: I disabled all but 4 cores. SBU was 20 (2019 seconds)
17 -->
18]>
19
20<sect1 id="thunderbird" xreflabel="Thunderbird-&thunderbird-version;esr">
21 <?dbhtml filename="thunderbird.html" ?>
22
23
24 <title>Thunderbird-&thunderbird-version;esr</title>
25
26 <indexterm zone="thunderbird">
27 <primary sortas="a-Thunderbird">Thunderbird</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to Thunderbird</title>
32
33 <para>
34 <application>Thunderbird</application> is a stand-alone mail/news client
35 based on the <application>Mozilla</application> codebase. It uses the
36 Gecko rendering engine to enable it to display and compose HTML emails.
37 </para>
38
39 &lfs121_checked;
40
41 <bridgehead renderas="sect3">Package Information</bridgehead>
42 <itemizedlist spacing="compact">
43 <listitem>
44 <para>
45 Download (HTTP): <ulink url="&thunderbird-download-http;"/>
46 </para>
47 </listitem>
48 <listitem>
49 <para>
50 Download (FTP): <ulink url="&thunderbird-download-ftp;"/>
51 </para>
52 </listitem>
53 <listitem>
54 <para>
55 Download MD5 sum: &thunderbird-md5sum;
56 </para>
57 </listitem>
58 <listitem>
59 <para>
60 Download size: &thunderbird-size;
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Estimated disk space required: &thunderbird-buildsize;
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 Estimated build time: &thunderbird-time;
71 </para>
72 </listitem>
73 </itemizedlist>
74
75
76 <bridgehead renderas="sect3">Thunderbird Dependencies</bridgehead>
77
78 <bridgehead renderas="sect4">Required</bridgehead>
79 <para role="required">
80 <xref linkend="cbindgen"/>,
81 <xref linkend="dbus-glib"/>,
82 <xref linkend="gtk3"/>,
83 <xref linkend="llvm"/> including clang, <!-- used by default if found -->
84 <xref linkend="nodejs"/>,
85 <xref linkend="pulseaudio"/> (or <xref linkend="alsa-lib"/> if you edit
86 the mozconfig; although it is now deprecated by mozilla),
87 <xref linkend="python3"/> (rebuilt with the sqlite module),
88 <xref linkend="startup-notification"/>, and
89 <xref linkend="unzip"/>
90 <!--<xref linkend="yasm"/>-->
91 </para>
92
93 <bridgehead renderas="sect4">Recommended</bridgehead>
94 <para role="recommended">
95 <!-- When using system ICU, a problem occurs where the calendar and mail
96 functions do not render correctly and it causes other strange
97 behavior to occur. See Ticket #18323 for more details, as well as
98 https://lore.kernel.org/distributions/075a20b1-869b-78f3-9ace-e106a4d43ac4@linuxlounge.net/T/#u -->
99 <!--<xref linkend="icu"/>,-->
100 <xref linkend="libevent"/>,
101 <xref linkend="libvpx"/>,
102 <xref linkend="libwebp"/>,
103 <xref linkend="nasm"/>,
104 <xref linkend="nspr"/>, and
105 <xref linkend="nss"/>
106 </para>
107
108 <note>
109 <para>
110 If you don't install recommended dependencies,
111 then internal copies of those packages will
112 be used. They might be tested to work, but
113 they can be out of date or contain security
114 holes.
115 </para>
116 </note>
117
118 <bridgehead renderas="sect4">Optional</bridgehead>
119 <para role="optional">
120 <xref role="runtime" linkend="pciutils"/> (runtime),
121 <xref linkend="wget"/>,
122 <xref linkend="wireless_tools"/>, and
123 <ulink url="https://facebook.github.io/watchman/">watchman</ulink>
124 </para>
125
126 </sect2>
127
128 <sect2 role="installation">
129 <title>Installation of Thunderbird</title>
130
131 <note>
132 <para>
133 The build process for Thunderbird can use 8 GB or more of RAM when
134 linking. Make sure that you have adequate swap or RAM before
135 continuing.
136 </para>
137 </note>
138
139 <!-- Restore after Python 3.12 is usable for this package again
140 <para>
141 The building system ships several internal copies of the Python 3
142 modules <application>setuptools</application> and
143 <filename>six.py</filename>. The shipped copies are too old
144 to work well with Python 3.12 or later. Replace them with the
145 symlinks to the LFS <application>setuptools</application> package and
146 <xref linkend='six'/> already installed on the system, and adapt the
147 building system for these updated Python modules. We also need to
148 rewrite the code based on the <filename>imp</filename> module removed
149 in Python 3.12 and later using the <filename>importlib</filename>
150 module:
151 </para>
152
153<screen><userinput>(for i in $(find -name six.py); do
154 ln -sfv /usr/lib/python&python3-majorver;/site-packages/six.py $i
155 [ $? = 0 ] || exit $?
156 done) &amp;&amp;
157
158sed '/ConfigParser/s/Safe//' \
159 -i testing/mozbase/mozprofile/mozprofile/prefs.py &amp;&amp;
160
161(for i in setuptools distutils-precedence.pth \
162 pkg_resources _distutils_hack; do
163 rm -rf third_party/python/setuptools/$i &amp;&amp;
164 ln -sv /usr/lib/python&python3-majorver;/site-packages/$i \
165 third_party/python/setuptools
166 [ $? = 0 ] || exit $?
167 done) &amp;&amp;
168
169sed 's/distutils/setuptools._&amp;/' \
170 -i python/mozbuild/mozbuild/nodeutil.py &amp;&amp;
171
172sed -e '/^import/s/imp$/importlib.util/' \
173 -e 's/imp.new_module/__import__/' \
174 -e "s/imp.load_source\(.*\)/spec = \
175 importlib.util.spec_from_file_location\1; \
176 mod = importlib.util.module_from_spec(spec); \
177 spec.loader.exec_module(mod)/" -i python/mach/mach/main.py &amp;&amp;
178sed '/import imp/d' -i netwerk/dns/prepare_tlds.py
179</userinput></screen>
180-->
181
182 <para>
183 The configuration of <application>Thunderbird</application> is
184 accomplished by creating a <filename>mozconfig</filename> file containing
185 the desired configuration options. A default
186 <filename>mozconfig</filename> is created below. To see the entire list
187 of available configuration options (and a brief description of each),
188 issue <command>./mach configure -- --help | less</command>. Create the file with
189 the following command:
190 </para>
191
192<screen><userinput>cat &gt; mozconfig &lt;&lt; "EOF"
193<literal># If you have a multicore machine, all cores will be used.
194
195# If you have installed wireless-tools comment out this line:
196ac_add_options --disable-necko-wifi
197
198# Uncomment the following option if you have not installed PulseAudio
199#ac_add_options --enable-audio-backends=alsa
200
201# Comment out following options if you have not installed
202# recommended dependencies:
203ac_add_options --with-system-libevent
204ac_add_options --with-system-libvpx
205ac_add_options --with-system-nspr
206ac_add_options --with-system-nss
207ac_add_options --with-system-webp
208<!-- With Thunderbird ESR 128 we'd replace the following part with
209"- -enable-elf-hack=relr", or remove it if relr becomes the default. -->
210# on some machines. It is supposed to improve startup time and it shrinks
211# libxul.so by a few MB. With recent Binutils releases the linker already
212# supports a much safer and generic way for this.
213ac_add_options --disable-elf-hack
214export LDFLAGS="$LDFLAGS -Wl,-z,pack-relative-relocs"
215
216# The BLFS editors recommend not changing anything below this line:
217ac_add_options --prefix=/usr
218ac_add_options --enable-application=comm/mail
219
220ac_add_options --disable-crashreporter
221ac_add_options --disable-updater
222ac_add_options --disable-debug
223ac_add_options --disable-debug-symbols
224ac_add_options --disable-tests
225
226# The SIMD code relies on the unmaintained packed_simd crate which
227# fails to build with Rustc >= 1.78.0. We may re-enable it once
228# Mozilla port the code to use std::simd and std::simd is stabilized.
229ac_add_options --disable-rust-simd
230
231ac_add_options --enable-strip
232ac_add_options --enable-install-strip
233
234# You cannot distribute the binary if you do this.
235ac_add_options --enable-official-branding
236
237ac_add_options --enable-system-ffi
238ac_add_options --enable-system-pixman
239
240ac_add_options --with-system-jpeg
241ac_add_options --with-system-png
242ac_add_options --with-system-zlib
243
244# Using sandboxed wasm libraries has been moved to all builds instead
245# of only mozilla automation builds. It requires extra llvm packages
246# and was reported to seriously slow the build. Disable it.
247ac_add_options --without-wasm-sandboxed-libraries</literal>
248EOF</userinput></screen>
249
250 <!-- https://github.com/rust-lang/rust-bindgen/pull/2689 -->
251<!--
252 <para>
253 Adapt the shipped <application>rust-bindgen</application> copy for
254 LLVM-18 and later, and tell <command>cargo</command> we've modified
255 the code of <application>rust-bindgen</application> so the checksum
256 verification of this crate should be skipped:
257 </para>
258
259 <screen><userinput>sed -e "/match cursor.kind()/a \
260 CXCursor_LinkageSpec => return Err(ParseError::Recurse)," \
261 -i third_party/rust/bindgen/ir/item.rs &amp;&amp;
262
263cat &gt;&gt; Cargo.toml &lt;&lt; EOF &amp;&amp;
264<literal>[patch.crates-io.bindgen_0_64_0]
265package = "bindgen"
266version = "0.64.0"
267path = "third_party/rust/bindgen"</literal>
268EOF
269
270sed -r '/name = "bindgen"/,+5 s/^source|^checksum/#&amp;/' \
271 -i Cargo.lock</userinput></screen>
272-->
273
274 <!-- https://hg.mozilla.org/mozilla-central/rev/ba6abbd36b49 -->
275<!--
276 <para>
277 Adapt the WebRTC code to use 64-bit timestamp to fix a build
278 failure with Clang-18 and later:
279 </para>
280
281 <screen><userinput>sed 's/uint32_t timestamp/uint64_t timestamp/' \
282 -i dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp \
283 dom/media/gtest/TestGMPRemoveAndDelete.cpp \
284 dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp &amp;&amp;
285
286sed '/mInputImageMap/s/uint32_t/uint64_t/' \
287 -i dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h</userinput></screen>
288
289 <para>
290 Remove several lines of Rust code only useful for ARM and failing to
291 compile with Rustc-1.78.0 or newer:
292 </para>
293
294 <screen><userinput>sed '/cfg_attr/,/)]/d' -i gfx/qcms/src/lib.rs</userinput></screen>
295-->
296
297 <para>
298 Now invoke the Python <command>mach</command> script to compile
299 <application>Thunderbird</application>:
300 </para>
301
302 <note>
303 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
304 href="../../xincludes/mozshm.xml"/>
305 </note>
306
307<screen><userinput>export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none &amp;&amp;
308export MOZBUILD_STATE_PATH=$(pwd)/mozbuild &amp;&amp;
309./mach build</userinput></screen>
310
311 <para>
312 This package does not come with a test suite.
313 </para>
314
315 <para>
316 Install <application>Thunderbird</application> by running the following
317 commands as the <systemitem class="username">root</systemitem> user:
318 </para>
319
320<screen role="root"><userinput>MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none ./mach install</userinput></screen>
321<!-- devs: For DESTDIR install, prepend DESTDIR=<dest> to the above -->
322
323 <para>
324 Empty the environment variables which were set above:
325 </para>
326
327<screen><userinput>unset MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE &amp;&amp;
328unset MOZBUILD_STATE_PATH</userinput></screen>
329
330 </sect2>
331
332 <sect2 role="commands">
333 <title>Command Explanations</title>
334
335 <para>
336 <command>MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none</command>: Use the
337 system python to create a virtual environment for <command>mach</command>
338 without downloading any python wheels nor using the system python modules.
339 This prevent version mismatches between system modules and bundled ones.
340 </para>
341
342<!--
343 <para>
344 <command>./mach configure</command>: This validates the supplied
345 dependencies and the <filename>mozconfig</filename>.
346 </para>
347-->
348
349 <para>
350 <option>./mach build --verbose</option>: Use this alternative if you
351 need details of which files are being compiled, together with any C or
352 C++ flags being used.
353 </para>
354
355 <para>
356 <option>./mach build -jN</option>: The build should, by default, use
357 all the online CPU cores. If using all the cores causes the build to swap
358 because you have insufficient memory, using fewer cores can be faster.
359 </para>
360
361 <para>
362 <option><envar>CC=gcc CXX=g++</envar></option>: BLFS used to
363 prefer to use gcc and g++ instead of upstream's defaults of the
364 <application>clang</application> programs. With the release of
365 gcc-12 the build takes longer with gcc and g++, primarily because
366 of extra warnings, and is bigger. Set these environment variables
367 <emphasis>before you run the configure script</emphasis>
368 if you wish to continue to use gcc, g++. Building
369 with GCC on i?86 is currently broken.
370 </para>
371
372 </sect2>
373
374 <sect2 role="configuration">
375 <title>Configuring Thunderbird</title>
376
377 <sect3><title>Configuration Information</title>
378
379 <para>
380 If your Window Manager or Desktop Environment does not allow you to
381 configure a default browser, you can add a configuration parameter to
382 <application>Thunderbird</application> so that a browser will start when
383 you click on an Internet/intranet/local URL. The procedure to check
384 or modify any of the configuration parameters is quite simple and the
385 instructions here can be used to view or modify any of the parameters.
386 </para>
387
388 <para>
389 First, open the configuration dialog by opening the <quote>Edit</quote>
390 drop-down menu. Choose <quote>Settings</quote> and then scroll down
391 to the bottom of the page. Then, click the <quote>Config Editor</quote>
392 button. Click on the <quote>I accept the risk!</quote> button.
393 This will display a list of the configuration preferences and
394 information related to each one. You can use the <quote>Filter:</quote>
395 bar to enter search criteria and narrow down the listed items. Changing
396 a preference can be done using two methods. One, if the preference has a
397 boolean value (True/False), simply double-click on the preference to
398 toggle the value and two, for other preferences simply right-click on
399 the desired line, choose <quote>Modify</quote> from the menu and change
400 the value. Creating new preference items is accomplished in the same
401 way, except choose <quote>New</quote> from the menu and provide the
402 desired data into the fields when prompted.
403 </para>
404
405 <!-- Doesn't seem to be present anymore in 128.0
406 <para>
407 The configuration preference item you need to check so that
408 <application>Thunderbird</application> uses a specified browser is the
409 <parameter>network.protocol-handler.app.http</parameter> which should be
410 set to the path of the desired browser, e.g.
411 <option>/usr/bin/firefox</option>.
412 </para>
413-->
414<!-- Bad URL
415 <tip>
416 <para>
417 There is a multitude of configuration parameters you can tweak to
418 customize <application>Thunderbird</application>. A very extensive,
419 but not so up-to-date list of these parameters can be found at
420 <ulink url="http://preferential.mozdev.org/preferences.html"/>.
421 </para>
422 </tip>
423-->
424 <para>
425
426 If you use a desktop environment such as <application>GNOME</application>
427 or <application>KDE</application>, a desktop file
428 <filename>thunderbird.desktop</filename> may be created, in order to
429 include a <quote><application>Thunderbird</application></quote> entry in
430 the menu. <!--If you didn't enable
431 <application>startup-notification</application> in your mozconfig, then
432 change the StartupNotify line to false.--> Run the following commands as the
433 <systemitem class="username">root</systemitem> user:
434
435 </para>
436
437<screen role="root"><userinput>mkdir -pv /usr/share/{applications,pixmaps} &amp;&amp;
438
439cat &gt; /usr/share/applications/thunderbird.desktop &lt;&lt; "EOF" &amp;&amp;
440<literal>[Desktop Entry]
441Name=Thunderbird Mail
442Comment=Send and receive mail with Thunderbird
443GenericName=Mail Client
444Exec=thunderbird %u
445Terminal=false
446Type=Application
447Icon=thunderbird
448Categories=Network;Email;
449MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;x-scheme-handler/mailto;
450StartupNotify=true</literal>
451EOF
452
453ln -sfv /usr/lib/thunderbird/chrome/icons/default/default256.png \
454 /usr/share/pixmaps/thunderbird.png</userinput></screen>
455 </sect3>
456 </sect2>
457
458 <sect2 role="content">
459 <title>Contents</title>
460
461 <segmentedlist>
462 <segtitle>Installed Program</segtitle>
463 <segtitle>Installed Libraries</segtitle>
464 <segtitle>Installed Directory</segtitle>
465
466 <seglistitem>
467 <seg>
468 thunderbird
469 </seg>
470 <seg>
471 Numerous libraries and modules in the /usr/lib/thunderbird directory
472 </seg>
473 <seg>
474 /usr/lib/thunderbird
475 </seg>
476 </seglistitem>
477 </segmentedlist>
478
479 <variablelist>
480 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
481 <?dbfo list-presentation="list"?>
482 <?dbhtml list-presentation="table"?>
483
484 <varlistentry id="thunderbird-prog">
485 <term><command>thunderbird</command></term>
486 <listitem>
487 <para>
488 is <application>Mozilla</application>'s email and newsgroup client
489 </para>
490 <indexterm zone="thunderbird thunderbird-prog">
491 <primary sortas="b-thunderbird">thunderbird</primary>
492 </indexterm>
493 </listitem>
494 </varlistentry>
495
496 </variablelist>
497
498 </sect2>
499
500</sect1>
Note: See TracBrowser for help on using the repository browser.