source: xsoft/graphweb/chromium.xml@ 3b2c28b

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 3b2c28b was 3b2c28b, checked in by Bruce Dubbs <bdubbs@…>, 7 years ago

Minor typos

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

  • Property mode set to 100644
File size: 18.0 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 chromium-download-http "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-&chromium-version;.tar.xz">
8 <!ENTITY chromium-download-ftp " ">
9 <!ENTITY chromium-md5sum "9fe9af85faeaf617cb61997c431a02e2">
10 <!ENTITY chromium-size "513 MB">
11 <!ENTITY chromium-buildsize "5.9 GB">
12 <!ENTITY chromium-time "94 SBU (with 4 threads)">
13 <!-- Ninja defaults to parallel build unless supplying -j1, SBU measured on
14 dual core, hyperthreaded CPU (4 threads). -->
15]>
16
17<sect1 id="chromium" xreflabel="Chromium-&chromium-version;">
18 <?dbhtml filename="chromium.html"?>
19
20 <sect1info>
21 <othername>$LastChangedBy$</othername>
22 <date>$Date$</date>
23 </sect1info>
24
25 <title>Chromium-&chromium-version;</title>
26
27 <indexterm zone="chromium">
28 <primary sortas="a-Chromium">Chromium</primary>
29 </indexterm>
30
31 <sect2 role="package">
32 <title>Introduction to Chromium</title>
33
34 <para><application>Chromium</application> is an open-source browser project
35 that aims to build a safer, faster, and more stable way for all users to
36 experience the web.</para>
37
38 &lfs81_checked;
39
40 <bridgehead renderas="sect3">Package Information</bridgehead>
41 <itemizedlist spacing="compact">
42 <listitem>
43 <para>Download (HTTP): <ulink url="&chromium-download-http;"/></para>
44 </listitem>
45 <listitem>
46 <para>Download (FTP): <ulink url="&chromium-download-ftp;"/></para>
47 </listitem>
48 <listitem>
49 <para>Download MD5 sum: &chromium-md5sum;</para>
50 </listitem>
51 <listitem>
52 <para>Download size: &chromium-size;</para>
53 </listitem>
54 <listitem>
55 <para>Estimated disk space required: &chromium-buildsize;</para>
56 </listitem>
57 <listitem>
58 <para>Estimated build time: &chromium-time;</para>
59 </listitem>
60 </itemizedlist>
61
62 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
63
64 <bridgehead renderas="sect4">Required patch to fix build issues with
65 <application>gcc-7.1.0</application>:</bridgehead>
66 <itemizedlist spacing="compact">
67 <listitem>
68 <para>
69 <ulink url="&patch-root;/chromium-&chromium-version;-gcc7-1.patch"/>
70 </para>
71 </listitem>
72 </itemizedlist>
73
74 <bridgehead renderas="sect4">Required patch to fix build issues with
75 <application>GlibC-2.26</application>:</bridgehead>
76 <itemizedlist spacing="compact">
77 <listitem>
78 <para>
79 <ulink url="&patch-root;/chromium-&chromium-version;-glibc-2.26-1.patch"/>
80 </para>
81 </listitem>
82 </itemizedlist>
83
84 <bridgehead renderas="sect4">Optional Chrome binaries to extract the
85 <application>WideVine</application> plug-in (Netflix) support:</bridgehead>
86 <itemizedlist spacing="compact">
87 <listitem>
88 <para>Download (HTTP):
89 <ulink url="http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_&chromium-version;-1_amd64.deb"/>
90 </para>
91 </listitem>
92 <listitem>
93 <para>Download MD5 sum: 70f90d19dcf51a87b7f6df788b5fddc7</para>
94 </listitem>
95 <listitem>
96 <para>Download size: 60 MB</para>
97 </listitem>
98 </itemizedlist>
99 <itemizedlist spacing="compact">
100 <listitem>
101 <para>Download (HTTP):
102 <ulink url="http://mirror.retrosnub.co.uk/apt/google/pool/main/g/google-chrome-stable/google-chrome-stable_48.0.2564.116-1_i386.deb"/>
103 </para>
104 </listitem>
105 <listitem>
106 <para>Download MD5 sum: 895e877b9bfe5da05a061369c2078626</para>
107 </listitem>
108 <listitem>
109 <para>Download size: 45 MB</para>
110 </listitem>
111 </itemizedlist>
112
113 <bridgehead renderas="sect3">Chromium Dependencies</bridgehead>
114
115 <bridgehead renderas="sect4">Required</bridgehead>
116 <para role="required">
117 <xref linkend="alsa-lib"/>,
118 <xref linkend="cups"/>,
119 <xref linkend="desktop-file-utils"/>,
120 <xref linkend="dbus"/>,
121 <xref linkend="perl-file-basedir"/>,
122 <xref linkend="gtk3"/>,
123 <xref linkend="hicolor-icon-theme"/>,
124 <xref linkend="mitkrb"/>,
125 <xref linkend="mesa"/>,
126 <xref linkend="ninja"/>,
127 <xref linkend="nodejs"/>,
128 <xref linkend="nss"/>,
129 <xref linkend="python2"/>,
130 <xref linkend="usbutils"/>, and
131 <xref linkend="x-window-system"/>
132 </para>
133
134 <bridgehead renderas="sect4">Recommended</bridgehead>
135 <para role="recommended">
136 <xref linkend="ffmpeg"/>,
137 <xref linkend="flac"/>,
138 <xref linkend="git"/>,
139<!-- <xref linkend="icu"/>, -->
140<!-- <xref linkend="libevent"/>, -->
141 <xref linkend="libexif"/>,
142 <xref linkend="libjpeg"/>,
143 <xref linkend="libpng"/>,
144 <xref linkend="libsecret"/>,
145<!-- <xref linkend="libvpx"/>, -->
146 <xref linkend="libwebp"/>,
147 <xref linkend="pciutils"/>,
148 <xref linkend="pulseaudio"/>,
149 <xref linkend="xdg-utils"/>, and
150 <xref linkend="yasm"/>
151 </para>
152
153 <bridgehead renderas="sect4">Optional</bridgehead>
154 <para role="optional">
155 <xref linkend="GConf"/>,
156 <xref linkend="icu"/> (currently broken),
157 <xref linkend="gnome-keyring"/>,
158 <xref linkend="libevent"/> (currently broken),
159 <xref linkend="libvpx"/> (currently broken),
160 <xref linkend="libxml2"/> (currently broken),
161 <ulink url="https://devel.freebsoft.org/speechd">speech-dispatcher</ulink>
162 (for the screen reader), and
163 <ulink url="https://google.github.io/snappy">snappy</ulink>
164 </para>
165
166 <para condition="html" role="usernotes">User Notes:
167 <ulink url="&blfs-wiki;/chromium"/></para>
168
169 </sect2>
170
171 <sect2 role="installation">
172 <title>Installation of Chromium</title>
173
174 <para>Apply a patch to fix errors with building with
175 <application>GCC-7.1.0</application>:</para>
176
177<screen><userinput>patch -Np1 -i ../chromium-&chromium-version;-gcc7-1.patch</userinput></screen>
178
179 <para>Apply a patch to fix an issue when building against GlibC-2.26:</para>
180
181<screen><userinput>patch -Np1 -i ../chromium-&chromium-version;-glibc-2.26-1.patch</userinput></screen>
182
183 <para>Enable the use of the
184 <ulink url="http://www.widevine.com/">WideVine</ulink> plugin, needed for
185 Netflix support (see the WideVine section below). Define an
186 available product name ("Pinkie Pie" in this case) with the following
187 command:</para>
188
189<screen><userinput>sed 's/WIDEVINE_CDM_AVAILABLE/&amp;\n\n#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"/' \
190 -i third_party/widevine/cdm/stub/widevine_cdm_version.h</userinput></screen>
191
192 <para>Fix a build error in gn:</para>
193
194<screen><userinput>sed "/delayed_task_manager.cc/a\ 'base/task_scheduler/environment_config.cc'," \
195 -i tools/gn/bootstrap/bootstrap.py</userinput></screen>
196
197 <para>Remove third-party build files that interfere with system versions:</para>
198
199 <note>
200 <para>
201 Chromium uses many external projects, the selections below are not set
202 in stone, however they have been tested thoroughly. With Chromium
203 &chromium-version;, system versions of icu, libevent, libvpx, libxml2,
204 and zlib are known to break the build at this time.
205 <!-- icu: Not at 59 internally -->
206 <!-- libevent: needs internal headers -->
207 <!-- libvpx: breaks build in gfx -->
208 <!-- libxml2: breaks build with ui -->
209 <!-- zlib requires libminizip -->
210 </para>
211 </note>
212
213<!-- Again, thanks to Arch, this is much better than listing all the needed
214shipped libs required to use the remove_bundled_files.py script -->
215<screen><userinput>for LIB in ffmpeg flac harfbuzz-ng<!-- icu libevent--> libjpeg \
216 libjpeg_turbo libpng libwebp<!-- libxml libvpx--> libxslt yasm; do
217 find -type f -path "*third_party/$LIB/*" \
218 \! -path "*third_party/$LIB/chromium/*" \
219 \! -path "*third_party/$LIB/google/*" \
220 \! -path "*base/third_party/icu/*" \
221 \! -path "*base/third_party/libevent/*" \
222 \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
223 -delete
224done &amp;&amp;
225
226python build/linux/unbundle/replace_gn_files.py \
227 --system-libraries ffmpeg flac harfbuzz-ng<!-- icu libevent--> libjpeg \
228 libpng libwebp<!-- libxml libvpx--> libxslt yasm &amp;&amp;
229python third_party/libaddressinput/chromium/tools/update-strings.py</userinput></screen>
230
231 <para><application>Chromium</application> uses an internal tool, <ulink
232 url="https://chromium.googlesource.com/chromium/src/tools/gn">gn</ulink>,
233 to generate the <application>Ninja</application> build files. Complete
234 configuration of the build using the following commands:</para>
235
236 <note>
237 <para>
238 <!-- Taken from Arch Linux - an immensely helpful link - Thanks -->
239 The Google API Key and OAuth tokens below are specific to LFS. If using
240 these instructions for another distro, or if you intend to distribute
241 binary copies of the software using these instructions, please obtain
242 your own keys following the instructions located at
243 <ulink url="http://www.chromium.org/developers/how-tos/api-keys"/>.
244 <!-- BLFS Devs, register an account at Google with your
245 @linuxfromscratch.org email address, and I'll make you an administrator
246 for the 'Chromium for LFS' project (where the API and OAuth keys were
247 created for use in the book).-->
248 </para>
249 </note>
250
251<screen><userinput>GN_CONFIG=('google_api_key="AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ"'
252'google_default_client_id="595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com"'
253'google_default_client_secret="5ntt6GbbkjnTVXx-MSxbmx5e"'
254'clang_use_chrome_plugins=false'
255'enable_hangout_services_extension=true'
256'enable_nacl=false'
257'enable_nacl_nonsfi=false'
258'enable_swiftshader=false'
259'enable_widevine=true'
260'fatal_linker_warnings=false'
261'ffmpeg_branding="Chrome"'
262'fieldtrial_testing_like_official_build=true'
263'is_debug=false'
264'is_clang=false'
265'link_pulseaudio=true'
266'linux_use_bundled_binutils=false'
267'proprietary_codecs=true'
268'remove_webcore_debug_symbols=true'
269'symbol_level=0'
270'treat_warnings_as_errors=false'
271'use_allocator="none"'
272'use_cups=true'
273'use_gconf=false'
274'use_gnome_keyring=false'
275'use_gold=false'
276'use_gtk3=true'
277'use_kerberos=true'
278'use_pulseaudio=true'
279'use_sysroot=false')</userinput></screen>
280
281 <para>Build <application>gn</application> and use it to prepare the
282 <application>Ninja</application> build files:</para>
283
284<screen><userinput>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &amp;&amp;
285out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</userinput></screen>
286
287 <warning>
288 <para>Ninja, by default, sets the number of jobs to the number of
289 available threads. If your machine is memory constrained, with regard to
290 number of threads, you should reduce the number of jobs by passing the
291 <parameter>-j#</parameter> switch to the <command>ninja</command> command
292 below. Plan for roughly 1.25GB per thread while linking
293 <application>WebKit</application> to avoid out of memory errors.</para>
294 </warning>
295
296 <para>Build <application>Chromium</application> using the following
297 commands:</para>
298
299<screen><userinput>mkdir -p third_party/node/linux/node-linux-x64/bin &amp;&amp;
300ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ &amp;&amp;
301ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter</userinput></screen>
302
303 <para>This package was already tested as part of the build.</para>
304
305 <para>Now, as the <systemitem class="username">root</systemitem> user,
306 install the package:</para>
307
308<screen role="root"><userinput>install -vDm755 out/Release/chrome \
309 /usr/lib/chromium/chromium &amp;&amp;
310install -vDm4755 out/Release/chrome_sandbox \
311 /usr/lib/chromium/chrome-sandbox &amp;&amp;
312install -vDm755 out/Release/chromedriver \
313 /usr/lib/chromium/chromedriver &amp;&amp;
314ln -svf /usr/lib/chromium/chromium /usr/bin &amp;&amp;
315ln -svf /usr/lib/chromium/chromedriver /usr/bin/ &amp;&amp;
316
317install -vm644 out/Release/icudtl.dat /usr/lib/chromium/ &amp;&amp;
318install -vDm644 out/Release/gen/content/content_resources.pak \
319 /usr/lib/chromium/ &amp;&amp;
320install -vm644 out/Release/{*.pak,*.bin} \
321 /usr/lib/chromium/ &amp;&amp;
322
323cp -av out/Release/locales /usr/lib/chromium/ &amp;&amp;
324chown -Rv root:root /usr/lib/chromium/locales &amp;&amp;
325
326install -vDm644 out/Release/chrome.1 \
327 /usr/share/man/man1/chromium.1</userinput></screen>
328
329 <para>While still the <systemitem class="username">root</systemitem> user,
330 install icons and the .desktop file:</para>
331
332<screen role="root"><userinput>for size in 16 32; do
333 install -vDm644 \
334 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
335 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
336done &amp;&amp;
337
338for size in 22 24 48 64 128 256; do
339 install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \
340 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
341done &amp;&amp;
342
343cat &gt; /usr/share/applications/chromium.desktop &lt;&lt; "EOF"
344[Desktop Entry]
345Encoding=UTF-8
346Name=Chromium Web Browser
347Comment=Access the Internet
348GenericName=Web Browser
349Exec=chromium %u
350Terminal=false
351Type=Application
352Icon=chromium
353Categories=GTK;Network;WebBrowser;
354MimeType=application/xhtml+xml;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
355EOF</userinput></screen>
356
357 <note>
358 <para>If upgrading from a previous build of chromium using gtk+-2.x, you
359 may need to remove the <filename
360 class="directory">~/.config/chromium</filename> directory.</para>
361 </note>
362
363 <bridgehead renderas="sect3">Extracting the WideVine plugin from Chrome</bridgehead>
364
365 <para>Extract the downloaded deb file with the following commands:</para>
366
367<screen><userinput>mkdir temp &amp;&amp;
368cd temp &amp;&amp;
369case $(uname -m) in
370 x86_64) ar -x ../../google-chrome-stable_&chromium-version;-1_amd64.deb
371 ;;
372 i?86) ar -x ../../google-chrome-stable_48.0.2564.116-1_i386.deb
373 ;;
374esac</userinput></screen>
375
376 <para>As the <systemitem class="username">root</systemitem> user, enable
377 the WideVine plugin with the following commands:</para>
378
379<!-- Note that libwidevinecdmadapter.so is not in the tarball. It is
380created only if enable_widevine=true i sset in GN_CONFIG -->
381
382<screen role="root"><userinput>tar -xf data.tar.xz &amp;&amp;
383install -vm755 ../out/Release/libwidevinecdmadapter.so /usr/lib/chromium/ &amp;&amp;
384install -vm755 opt/google/chrome/libwidevinecdm.so /usr/lib/chromium/</userinput></screen>
385
386 </sect2>
387
388 <sect2 role="commands">
389 <title>Command Explanations</title>
390
391 <para><command>GN_CONFIG=(...)</command>: this array contains
392 all of the defines used in the build.</para>
393
394 <para><command>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}"</command>:
395 this command replaces defines in the gn files with the values contained in
396 <envar>${GN_CONFIG[@]}</envar>.</para>
397
398 <para><command>out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</command>:
399 this command runs a Google provided configuration script
400 <application>gn</application> on the source tree to produce
401 a <application>Ninja</application> configuration suitable for the build
402 machine.</para>
403
404 <para><command>mkdir...ln -s /usr/bin/node
405 third_party/node/linux/node-linux-x64/bin/</command>: these commands
406 replaced the local <application>Node.js</application> (no longer available)
407 with the system installed <application>Node.js</application>.</para>
408
409 <para><command>ar -x ../../google-chrome-stable*.deb</command>:
410 the <command>ar</command> utility is used to extract Debian archives.</para>
411
412 </sect2>
413
414 <sect2 role="content">
415 <title>Contents</title>
416
417 <segmentedlist>
418 <segtitle>Installed Programs</segtitle>
419 <segtitle>Installed Libraries</segtitle>
420 <segtitle>Installed Directories</segtitle>
421
422 <seglistitem>
423 <seg>/usr/lib/chromium/chromium,
424 /usr/lib/chromium/chromedriver, and
425 /usr/lib/chromium/chrome-sandbox</seg>
426 <seg>none</seg>
427 <seg>/usr/lib/chromium</seg>
428 </seglistitem>
429 </segmentedlist>
430
431 <variablelist>
432 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
433 <?dbfo list-presentation="list"?>
434 <?dbhtml list-presentation="table"?>
435
436 <varlistentry id="chromium-lib">
437 <term><command>/usr/lib/chromium/chromium</command></term>
438 <listitem>
439 <para> is the main chromium executable.</para>
440 <indexterm zone="chromium chromium-lib">
441 <primary sortas="b-chromiumlib">chromium</primary>
442 </indexterm>
443 </listitem>
444 </varlistentry>
445
446 <varlistentry id="chromedriver">
447 <term><command>/usr/lib/chromium/chromedriver</command></term>
448 <listitem>
449 <para> is a
450 <ulink url="http://www.seleniumhq.org/projects/webdriver/">
451 WebDriver</ulink> for Chromium.</para>
452 <indexterm zone="chromium chromedriver">
453 <primary sortas="b-chromedriver">chromedriver</primary>
454 </indexterm>
455 </listitem>
456 </varlistentry>
457
458 <varlistentry id="chrome-sandbox">
459 <term><command>/usr/lib/chromium/chrome-sandbox</command></term>
460 <listitem>
461 <para> creates a sandboxed environment for running untrusted
462 code (plugins).</para>
463 <indexterm zone="chromium chrome-sandbox">
464 <primary sortas="b-chrome-sandbox">chrome-sandbox</primary>
465 </indexterm>
466 </listitem>
467 </varlistentry>
468
469 </variablelist>
470
471 </sect2>
472
473</sect1>
Note: See TracBrowser for help on using the repository browser.