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

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 8.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 3b5742b was 3b5742b, checked in by DJ Lucas <dj@…>, 7 years ago

Update to Chromium-60.0.3112.101. Fixes #9502.

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

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