source: xsoft/graphweb/chromium.xml@ a172df1

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 a172df1 was a172df1, checked in by Bruce Dubbs <bdubbs@…>, 6 years ago

Update to bus-1.5.17.
Update to chromium-62.0.3202.89.

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

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