source: archive/chromium.xml

trunk
Last change on this file was 3f2db3a6, checked in by Pierre Labastie <pierre.labastie@…>, 17 months ago

Remove sect1info tags

They only contain a date tag that is nowhere used.

  • 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 "0c361a429c5dcea568cbc7b001a82d92">
10 <!ENTITY chromium-size "460 MB">
11 <!ENTITY chromium-buildsize "6.0 GB">
12 <!ENTITY chromium-time "120 SBU (with parallelism=4)">
13 <!-- Ninja defaults to parallel build unless supplying -jx, 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
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 &lfs82_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:</bridgehead>
65 <itemizedlist spacing="compact">
66 <listitem>
67 <para>
68 <ulink url="&patch-root;/chromium-&chromium-version;-constexpr-1.patch"/>
69 </para>
70 </listitem>
71<!-- <listitem>
72 <para>
73 <ulink url="&patch-root;/chromium-&chromium-version;-glibc-2.26-1.patch"/>
74 </para>
75 </listitem>
76 <listitem>
77 <para>
78 <ulink url="&patch-root;/chromium-&chromium-version;-gn_bootstrap-1.patch"/>
79 </para>
80 </listitem> -->
81 </itemizedlist>
82
83 <bridgehead renderas="sect4">Optional Chrome binaries to extract the
84 <application>WideVine</application> plug-in (Netflix) support:</bridgehead>
85 <itemizedlist spacing="compact">
86 <listitem>
87 <para>Download (HTTP):
88 <ulink url="http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_&chromium-version;-1_amd64.deb"/>
89 </para>
90 </listitem>
91 <listitem>
92 <para>Download MD5 sum: 1caee436e3dc8fda6560a421e60717e4</para>
93 </listitem>
94 <listitem>
95 <para>Download size: 49.1 MB</para>
96 </listitem>
97 </itemizedlist>
98 <itemizedlist spacing="compact">
99 <listitem>
100 <para>Download (HTTP):
101 <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"/>
102 </para>
103 </listitem>
104 <listitem>
105 <para>Download MD5 sum: 895e877b9bfe5da05a061369c2078626</para>
106 </listitem>
107 <listitem>
108 <para>Download size: 45.3 MB</para>
109 </listitem>
110 </itemizedlist>
111
112 <bridgehead renderas="sect3">Chromium Dependencies</bridgehead>
113
114 <bridgehead renderas="sect4">Required</bridgehead>
115 <para role="required">
116 <xref linkend="alsa-lib"/>,
117 <xref linkend="cups"/>,
118 <xref linkend="desktop-file-utils"/>,
119 <xref linkend="dbus"/>,
120 <xref linkend="perl-file-basedir"/>,
121 <xref linkend="gtk3"/>,
122 <xref linkend="hicolor-icon-theme"/>,
123 <xref linkend="mitkrb"/>,
124 <xref linkend="mesa"/>,
125 <xref linkend="nodejs"/>,
126 <xref linkend="nss"/>,
127 <xref linkend="python2"/>,
128 <xref linkend="usbutils"/>, and
129 <xref linkend="x-window-system"/>
130 </para>
131
132 <bridgehead renderas="sect4">Recommended</bridgehead>
133 <para role="recommended">
134 <xref linkend="make-ca"/> (runtime),
135<!-- <xref linkend="ffmpeg"/>, -->
136 <xref linkend="flac"/>,
137 <xref linkend="git"/>,
138<!-- <xref linkend="icu"/>, -->
139<!-- <xref linkend="libevent"/>, -->
140 <xref linkend="liberation-fonts"/>
141 <xref linkend="libexif"/>,
142 <xref linkend="libjpeg"/>,
143<!-- <xref linkend="libpng"/>, -->
144 <xref linkend="libsecret"/>,
145<!-- <xref linkend="libvpx"/>, -->
146 <xref linkend="libwebp"/>,
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">
155 <xref linkend="ffmpeg"/> (currently broken),<!-- https://crbug.com/731766 -->
156 <xref linkend="GConf"/>,
157 <xref linkend="icu"/> (currently broken),<!-- Review comments at https://chromium.googlesource.com/chromium/src/+/e58fa0ba66272c5f28828b15d06c7e42a9882b3b to verify fitness for BLFS's ICU build -->
158 <xref linkend="gnome-keyring"/>,
159 <xref linkend="libevent"/>,
160 <xref linkend="libpng"/> (currently broken),<!-- https://crbug.com/75240 -->
161 <xref linkend="libvpx"/> (currently broken),<!-- https://bugs.gentoo.org/611394 -->
162 <xref linkend="libxml2"/> (currently broken),<!-- https://crbug.com/736026 -->
163 <xref linkend="upower"/> (runtime),
164 <ulink url="https://devel.freebsoft.org/speechd">speech-dispatcher</ulink>
165 (for the screen reader), and
166 <ulink url="https://google.github.io/snappy">snappy</ulink>
167 </para>
168
169 <para condition="html" role="usernotes">User Notes:
170 <ulink url="&blfs-wiki;/chromium"/></para>
171
172 </sect2>
173
174 <sect2 role="installation">
175 <title>Installation of Chromium</title>
176
177 <para>Enable the use of the
178 <ulink url="http://www.widevine.com/">WideVine</ulink> plugin, needed for
179 Netflix support (see the WideVine section below). Define an
180 available product name ("Pinkie Pie" in this case) with the following
181 command:</para>
182
183<screen><userinput>line='#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"'
184sed "/WIDEVINE_CDM_AVAILABLE/a$line" \
185 -i third_party/widevine/cdm/stub/widevine_cdm_version.h</userinput></screen>
186
187 <para>Optionally silence several (2000+) invalid warnings:</para>
188
189<screen><userinput>sed '/static_assert/s:^://:' \
190 -i third_party/WebKit/Source/platform/wtf/text/TextCodec.h</userinput></screen>
191
192 <para>Fix a build issue with recent versions of GCC:</para>
193
194<screen><userinput>patch -Np1 -i ../chromium-&chromium-version;-constexpr-1.patch</userinput></screen>
195
196 <para>Remove third-party build files that interfere with system versions:</para>
197
198 <note>
199 <para>
200 Chromium uses many external projects, the selections below are not set
201 in stone, however they have been tested thoroughly. With Chromium
202 &chromium-version;, system versions of libvpx, libxml2,
203 and zlib are known to break the build at this time.
204 <!-- icu: Now at 59 internally - seems to work now -->
205 <!-- icu: Now at 60 - is broken -->
206 <!-- libevent: needs internal headers - seems to work now -->
207 <!-- libvpx: breaks build in gfx -->
208 <!-- libxml2: breaks build with ui - seems to work now -->
209 <!-- zlib requires libminizip -->
210 </para>
211 </note>
212
213<!-- Again, thanks to Arch, this is much better than listing all the needed
214shipped libs required to use the remove_bundled_files.py script -->
215<screen><userinput>for LIB in <!--ffmpeg -->flac freetype harfbuzz-ng<!-- icu libevent--> libjpeg \
216 libjpeg_turbo<!-- libpng--> libwebp <!-- libxml libvpx-->libxslt yasm; do
217 find -type f -path "*third_party/$LIB/*" \
218 \! -path "*third_party/$LIB/chromium/*" \
219 \! -path "*third_party/$LIB/google/*" \
220 \! -path "*base/third_party/icu/*" \
221 \! -path './third_party/yasm/run_yasm.py' \
222 \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
223 \! -path './third_party/freetype/src/src/psnames/pstables.h' \
224 -delete
225done &amp;&amp;
226
227python build/linux/unbundle/replace_gn_files.py \
228 --system-libraries<!-- ffmpeg--> flac <!-- harfbuzz-ng -->libjpeg libxml libevent \
229 <!--libpng -->libwebp libxslt opus yasm <!-- freetype libxml libvpx--> &amp;&amp;
230
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 'Google APIs for LFS' project (where the API and OAuth keys
249 were 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'
282'use_system_freetype=true'
283'use_system_harfbuzz=true')</userinput></screen>
284
285 <para>Build <application>gn</application> and use it to prepare the
286 <application>Ninja</application> build files:</para>
287
288<screen><userinput>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &amp;&amp;
289out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</userinput></screen>
290
291 <warning>
292 <para>Ninja, by default, sets the number of jobs to the number of
293 available threads. If your machine is memory constrained, with regard to
294 number of threads, you should reduce the number of jobs by passing the
295 <parameter>-j#</parameter> switch to the <command>ninja</command> command
296 below. Plan for roughly 1.25GB per thread while linking
297 <application>WebKit</application> to avoid out of memory errors.</para>
298 </warning>
299
300 <para>Build <application>Chromium</application> using the following
301 commands:</para>
302
303<screen><userinput>mkdir -p third_party/node/linux/node-linux-x64/bin &amp;&amp;
304ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ &amp;&amp;
305ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter</userinput></screen>
306
307 <para>This package was already tested as part of the build.</para>
308
309 <para>Now, as the <systemitem class="username">root</systemitem> user,
310 install the package:</para>
311
312<screen role="root"><userinput>install -vDm755 out/Release/chrome \
313 /usr/lib/chromium/chromium &amp;&amp;
314
315install -vDm4755 out/Release/chrome_sandbox \
316 /usr/lib/chromium/chrome-sandbox &amp;&amp;
317
318install -vDm755 out/Release/chromedriver \
319 /usr/lib/chromium/chromedriver &amp;&amp;
320
321ln -svf /usr/lib/chromium/chromium /usr/bin &amp;&amp;
322ln -svf /usr/lib/chromium/chromedriver /usr/bin &amp;&amp;
323
324install -vDm644 out/Release/gen/content/content_resources.pak \
325 /usr/lib/chromium/ &amp;&amp;
326<!-- This is needed if using internal icu -->
327install -vDm644 out/Release/icudtl.dat \
328 /usr/lib/chromium/icudtl.dat &amp;&amp;
329
330install -vDm644 out/Release/{*.pak,*.bin} \
331 /usr/lib/chromium/ &amp;&amp;
332
333sed -i \
334 -e "s/@@MENUNAME@@/Chromium/g" \
335 -e "s/@@PACKAGE@@/chromium/g" \
336 -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
337 chrome/installer/linux/common/desktop.template \
338 chrome/app/resources/manpage.1.in &amp;&amp;
339
340install -vDm644 chrome/installer/linux/common/desktop.template \
341 /usr/share/applications/chromium.desktop &amp;&amp;
342
343install -vDm644 chrome/app/resources/manpage.1.in \
344 /usr/share/man/man1/chromium.1 &amp;&amp;
345
346cp -av out/Release/locales /usr/lib/chromium/ &amp;&amp;
347chown -Rv root:root /usr/lib/chromium/locales &amp;&amp;
348
349for size in 16 32; do
350 install -vDm644 \
351 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
352 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
353done &amp;&amp;
354
355for size in 22 24 48 64 128 256; do
356 install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \
357 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
358done</userinput></screen>
359
360 <note>
361 <para>If upgrading from a previous build of chromium using gtk+-2.x, you
362 may need to remove the <filename
363 class="directory">~/.config/chromium</filename> directory.</para>
364 </note>
365
366 <bridgehead renderas="sect3">Extracting the WideVine plugin from Chrome</bridgehead>
367
368 <para>Extract the downloaded deb file with the following commands:</para>
369
370<screen><userinput>mkdir temp &amp;&amp;
371cd temp &amp;&amp;
372case $(uname -m) in
373 x86_64) ar -x ../../google-chrome-stable_&chromium-version;-1_amd64.deb
374 ;;
375 i?86) ar -x ../../google-chrome-stable_48.0.2564.116-1_i386.deb
376 ;;
377esac</userinput></screen>
378
379 <para>As the <systemitem class="username">root</systemitem> user, enable
380 the WideVine plugin with the following commands:</para>
381
382<!-- Note that libwidevinecdmadapter.so is not in the tarball. It is
383created only if enable_widevine=true i sset in GN_CONFIG -->
384
385<screen role="root"><userinput>tar -xf data.tar.xz &amp;&amp;
386install -vm755 ../out/Release/libwidevinecdmadapter.so /usr/lib/chromium/ &amp;&amp;
387install -vm755 opt/google/chrome/libwidevinecdm.so /usr/lib/chromium/</userinput></screen>
388
389 </sect2>
390
391 <sect2 role="commands">
392 <title>Command Explanations</title>
393
394 <para><command>GN_CONFIG=(...)</command>: this array contains
395 all of the defines used in the build.</para>
396
397 <para><command>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}"</command>:
398 this command replaces defines in the gn files with the values contained in
399 <envar>${GN_CONFIG[@]}</envar>.</para>
400
401 <para><command>out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</command>:
402 this command runs a Google provided configuration script
403 <application>gn</application> on the source tree to produce
404 a <application>Ninja</application> configuration suitable for the build
405 machine.</para>
406
407 <para><command>mkdir...ln -s /usr/bin/node
408 third_party/node/linux/node-linux-x64/bin/</command>: these commands
409 replaced the local <application>Node.js</application> (no longer available)
410 with the system installed <application>Node.js</application>.</para>
411
412 <para><command>ar -x ../../google-chrome-stable*.deb</command>:
413 the <command>ar</command> utility is used to extract Debian archives.</para>
414
415 </sect2>
416
417 <sect2 role="content">
418 <title>Contents</title>
419
420 <segmentedlist>
421 <segtitle>Installed Programs</segtitle>
422 <segtitle>Installed Libraries</segtitle>
423 <segtitle>Installed Directories</segtitle>
424
425 <seglistitem>
426 <seg>/usr/lib/chromium/chromium,
427 /usr/lib/chromium/chromedriver, and
428 /usr/lib/chromium/chrome-sandbox</seg>
429 <seg>none</seg>
430 <seg>/usr/lib/chromium</seg>
431 </seglistitem>
432 </segmentedlist>
433
434 <variablelist>
435 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
436 <?dbfo list-presentation="list"?>
437 <?dbhtml list-presentation="table"?>
438
439 <varlistentry id="chromium-lib">
440 <term><command>/usr/lib/chromium/chromium</command></term>
441 <listitem>
442 <para> is the main chromium executable.</para>
443 <indexterm zone="chromium chromium-lib">
444 <primary sortas="b-chromiumlib">chromium</primary>
445 </indexterm>
446 </listitem>
447 </varlistentry>
448
449 <varlistentry id="chromedriver">
450 <term><command>/usr/lib/chromium/chromedriver</command></term>
451 <listitem>
452 <para> is a
453 <ulink url="http://www.seleniumhq.org/projects/webdriver/">
454 WebDriver</ulink> for Chromium.</para>
455 <indexterm zone="chromium chromedriver">
456 <primary sortas="b-chromedriver">chromedriver</primary>
457 </indexterm>
458 </listitem>
459 </varlistentry>
460
461 <varlistentry id="chrome-sandbox">
462 <term><command>/usr/lib/chromium/chrome-sandbox</command></term>
463 <listitem>
464 <para> creates a sandboxed environment for running untrusted
465 code (plugins).</para>
466 <indexterm zone="chromium chrome-sandbox">
467 <primary sortas="b-chrome-sandbox">chrome-sandbox</primary>
468 </indexterm>
469 </listitem>
470 </varlistentry>
471
472 </variablelist>
473
474 </sect2>
475
476</sect1>
Note: See TracBrowser for help on using the repository browser.