source: xsoft/graphweb/chromium.xml@ 17c01c61

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

Update to chromium-57.0.2987.110.

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

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