source: xsoft/graphweb/chromium.xml@ ffd37dd

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 ffd37dd was ffd37dd, checked in by DJ Lucas <dj@…>, 7 years ago

Update to Chromium-57.0.2987.133. Fixes #9065. Update to Flash Player 25.0.0.148.

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

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