source: xsoft/graphweb/chromium.xml@ 170a6f81

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

Update to Chromium-61.0.3163.100. Fixes #9681.

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

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