source: xsoft/graphweb/chromium.xml@ ef5199fa

10.0 10.1 11.0 11.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind lazarus perl-modules qt5new trunk upgradedb xry111/intltool xry111/test-20220226
Last change on this file since ef5199fa was ef5199fa, checked in by Bruce Dubbs <bdubbs@…>, 4 years ago

Update to hdparm-9.53.
Update to btrfs-progs-4.14.1.
Update to chromium-63.0.3239.132.

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

  • Property mode set to 100644
File size: 18.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 chromium-download-http "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-&chromium-version;.tar.xz">
8 <!ENTITY chromium-download-ftp " ">
9 <!ENTITY chromium-md5sum "c339707e894fbc721b612bd061d1a36d">
10 <!ENTITY chromium-size "510 MB">
11 <!ENTITY chromium-buildsize "5.6 GB">
12 <!ENTITY chromium-time "114 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: cc36f3a115e3e213a2bedb8b8fbe08ba</para>
97 </listitem>
98 <listitem>
99 <para>Download size: 46.8 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.3 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"/> (currently broken),
161 <xref linkend="gnome-keyring"/>,
162 <xref linkend="libevent"/>,
163 <xref linkend="libvpx"/> (currently broken),
164 <xref linkend="libxml2"/>,
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 '/port\.h"/a#include &lt;math.h&gt;' -i.bak third_party/webrtc/p2p/base/port.cc</userinput></screen>
198
199 <para>Optionally silence 2862 invalid warnings:</para>
200
201<screen><userinput>sed '/static_assert/s:^://:' \
202 -i third_party/WebKit/Source/platform/wtf/text/TextCodec.h</userinput></screen>
203
204 <para>Remove third-party build files that interfere with system versions:</para>
205
206 <note>
207 <para>
208 Chromium uses many external projects, the selections below are not set
209 in stone, however they have been tested thoroughly. With Chromium
210 &chromium-version;, system versions of libvpx, libxml2,
211 and zlib are known to break the build at this time.
212 <!-- icu: Now at 59 internally - seems to work now -->
213 <!-- icu: Now at 60 - is broken -->
214 <!-- libevent: needs internal headers - seems to work now -->
215 <!-- libvpx: breaks build in gfx -->
216 <!-- libxml2: breaks build with ui - seems to work now -->
217 <!-- zlib requires libminizip -->
218 </para>
219 </note>
220
221<!-- Again, thanks to Arch, this is much better than listing all the needed
222shipped libs required to use the remove_bundled_files.py script -->
223<screen><userinput>for LIB in ffmpeg flac freetype harfbuzz-ng<!-- icu libevent--> libjpeg \
224 libjpeg_turbo libpng libwebp <!-- libxml libvpx-->libxslt yasm; do
225 find -type f -path "*third_party/$LIB/*" \
226 \! -path "*third_party/$LIB/chromium/*" \
227 \! -path "*third_party/$LIB/google/*" \
228 \! -path "*base/third_party/icu/*" \
229 \! -path './third_party/yasm/run_yasm.py' \
230 \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
231 \! -path './third_party/freetype/src/src/psnames/pstables.h' \
232 -delete
233done &amp;&amp;
234
235python build/linux/unbundle/replace_gn_files.py \
236 --system-libraries ffmpeg flac <!-- harfbuzz-ng -->libjpeg libxml libevent \
237 libpng libwebp libxslt opus 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'
289'use_system_freetype=true'
290'use_system_harfbuzz=true')</userinput></screen>
291
292 <para>Build <application>gn</application> and use it to prepare the
293 <application>Ninja</application> build files:</para>
294
295<screen><userinput>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &amp;&amp;
296out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</userinput></screen>
297
298 <warning>
299 <para>Ninja, by default, sets the number of jobs to the number of
300 available threads. If your machine is memory constrained, with regard to
301 number of threads, you should reduce the number of jobs by passing the
302 <parameter>-j#</parameter> switch to the <command>ninja</command> command
303 below. Plan for roughly 1.25GB per thread while linking
304 <application>WebKit</application> to avoid out of memory errors.</para>
305 </warning>
306
307 <para>Build <application>Chromium</application> using the following
308 commands:</para>
309
310<screen><userinput>mkdir -p third_party/node/linux/node-linux-x64/bin &amp;&amp;
311ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ &amp;&amp;
312ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter</userinput></screen>
313
314 <para>This package was already tested as part of the build.</para>
315
316 <para>Now, as the <systemitem class="username">root</systemitem> user,
317 install the package:</para>
318
319<screen role="root"><userinput>install -vDm755 out/Release/chrome \
320 /usr/lib/chromium/chromium &amp;&amp;
321
322install -vDm4755 out/Release/chrome_sandbox \
323 /usr/lib/chromium/chrome-sandbox &amp;&amp;
324
325install -vDm755 out/Release/chromedriver \
326 /usr/lib/chromium/chromedriver &amp;&amp;
327
328ln -svf /usr/lib/chromium/chromium /usr/bin &amp;&amp;
329ln -svf /usr/lib/chromium/chromedriver /usr/bin &amp;&amp;
330
331install -vDm644 out/Release/gen/content/content_resources.pak \
332 /usr/lib/chromium/ &amp;&amp;
333<!-- This is needed if using internal icu -->
334install -vDm644 out/Release/icudtl.dat \
335 /usr/lib/chromium/icudtl.dat &amp;&amp;
336
337install -vDm644 out/Release/{*.pak,*.bin} \
338 /usr/lib/chromium/ &amp;&amp;
339
340sed -i \
341 -e "s/@@MENUNAME@@/Chromium/g" \
342 -e "s/@@PACKAGE@@/chromium/g" \
343 -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
344 chrome/installer/linux/common/desktop.template \
345 chrome/app/resources/manpage.1.in &amp;&amp;
346
347install -vDm644 chrome/installer/linux/common/desktop.template \
348 /usr/share/applications/chromium.desktop &amp;&amp;
349
350install -vDm644 chrome/app/resources/manpage.1.in \
351 /usr/share/man/man1/chromium.1 &amp;&amp;
352
353cp -av out/Release/locales /usr/lib/chromium/ &amp;&amp;
354chown -Rv root:root /usr/lib/chromium/locales &amp;&amp;
355
356for size in 16 32; do
357 install -vDm644 \
358 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
359 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
360done &amp;&amp;
361
362for size in 22 24 48 64 128 256; do
363 install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \
364 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
365done</userinput></screen>
366
367 <note>
368 <para>If upgrading from a previous build of chromium using gtk+-2.x, you
369 may need to remove the <filename
370 class="directory">~/.config/chromium</filename> directory.</para>
371 </note>
372
373 <bridgehead renderas="sect3">Extracting the WideVine plugin from Chrome</bridgehead>
374
375 <para>Extract the downloaded deb file with the following commands:</para>
376
377<screen><userinput>mkdir temp &amp;&amp;
378cd temp &amp;&amp;
379case $(uname -m) in
380 x86_64) ar -x ../../google-chrome-stable_&chromium-version;-1_amd64.deb
381 ;;
382 i?86) ar -x ../../google-chrome-stable_48.0.2564.116-1_i386.deb
383 ;;
384esac</userinput></screen>
385
386 <para>As the <systemitem class="username">root</systemitem> user, enable
387 the WideVine plugin with the following commands:</para>
388
389<!-- Note that libwidevinecdmadapter.so is not in the tarball. It is
390created only if enable_widevine=true i sset in GN_CONFIG -->
391
392<screen role="root"><userinput>tar -xf data.tar.xz &amp;&amp;
393install -vm755 ../out/Release/libwidevinecdmadapter.so /usr/lib/chromium/ &amp;&amp;
394install -vm755 opt/google/chrome/libwidevinecdm.so /usr/lib/chromium/</userinput></screen>
395
396 </sect2>
397
398 <sect2 role="commands">
399 <title>Command Explanations</title>
400
401 <para><command>GN_CONFIG=(...)</command>: this array contains
402 all of the defines used in the build.</para>
403
404 <para><command>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}"</command>:
405 this command replaces defines in the gn files with the values contained in
406 <envar>${GN_CONFIG[@]}</envar>.</para>
407
408 <para><command>out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</command>:
409 this command runs a Google provided configuration script
410 <application>gn</application> on the source tree to produce
411 a <application>Ninja</application> configuration suitable for the build
412 machine.</para>
413
414 <para><command>mkdir...ln -s /usr/bin/node
415 third_party/node/linux/node-linux-x64/bin/</command>: these commands
416 replaced the local <application>Node.js</application> (no longer available)
417 with the system installed <application>Node.js</application>.</para>
418
419 <para><command>ar -x ../../google-chrome-stable*.deb</command>:
420 the <command>ar</command> utility is used to extract Debian archives.</para>
421
422 </sect2>
423
424 <sect2 role="content">
425 <title>Contents</title>
426
427 <segmentedlist>
428 <segtitle>Installed Programs</segtitle>
429 <segtitle>Installed Libraries</segtitle>
430 <segtitle>Installed Directories</segtitle>
431
432 <seglistitem>
433 <seg>/usr/lib/chromium/chromium,
434 /usr/lib/chromium/chromedriver, and
435 /usr/lib/chromium/chrome-sandbox</seg>
436 <seg>none</seg>
437 <seg>/usr/lib/chromium</seg>
438 </seglistitem>
439 </segmentedlist>
440
441 <variablelist>
442 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
443 <?dbfo list-presentation="list"?>
444 <?dbhtml list-presentation="table"?>
445
446 <varlistentry id="chromium-lib">
447 <term><command>/usr/lib/chromium/chromium</command></term>
448 <listitem>
449 <para> is the main chromium executable.</para>
450 <indexterm zone="chromium chromium-lib">
451 <primary sortas="b-chromiumlib">chromium</primary>
452 </indexterm>
453 </listitem>
454 </varlistentry>
455
456 <varlistentry id="chromedriver">
457 <term><command>/usr/lib/chromium/chromedriver</command></term>
458 <listitem>
459 <para> is a
460 <ulink url="http://www.seleniumhq.org/projects/webdriver/">
461 WebDriver</ulink> for Chromium.</para>
462 <indexterm zone="chromium chromedriver">
463 <primary sortas="b-chromedriver">chromedriver</primary>
464 </indexterm>
465 </listitem>
466 </varlistentry>
467
468 <varlistentry id="chrome-sandbox">
469 <term><command>/usr/lib/chromium/chrome-sandbox</command></term>
470 <listitem>
471 <para> creates a sandboxed environment for running untrusted
472 code (plugins).</para>
473 <indexterm zone="chromium chrome-sandbox">
474 <primary sortas="b-chrome-sandbox">chrome-sandbox</primary>
475 </indexterm>
476 </listitem>
477 </varlistentry>
478
479 </variablelist>
480
481 </sect2>
482
483</sect1>
Note: See TracBrowser for help on using the repository browser.