source: archive/chromium.xml@ fa91d2e

11.0 qt5new trunk
Last change on this file since fa91d2e was 45ab6c7, checked in by Xi Ruoyao <xry111@…>, 5 months ago

more SVN prop clean up

Remove "$LastChanged$" everywhere, and also some unused $Date$

  • 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 <sect1info>
25 <date>$Date$</date>
26 </sect1info>
27
28 <title>Chromium-&chromium-version;</title>
29
30 <indexterm zone="chromium">
31 <primary sortas="a-Chromium">Chromium</primary>
32 </indexterm>
33
34 <sect2 role="package">
35 <title>Introduction to Chromium</title>
36
37 <para><application>Chromium</application> is an open-source browser project
38 that aims to build a safer, faster, and more stable way for all users to
39 experience the web.</para>
40
41 &lfs82_checked;
42
43 <bridgehead renderas="sect3">Package Information</bridgehead>
44 <itemizedlist spacing="compact">
45 <listitem>
46 <para>Download (HTTP): <ulink url="&chromium-download-http;"/></para>
47 </listitem>
48 <listitem>
49 <para>Download (FTP): <ulink url="&chromium-download-ftp;"/></para>
50 </listitem>
51 <listitem>
52 <para>Download MD5 sum: &chromium-md5sum;</para>
53 </listitem>
54 <listitem>
55 <para>Download size: &chromium-size;</para>
56 </listitem>
57 <listitem>
58 <para>Estimated disk space required: &chromium-buildsize;</para>
59 </listitem>
60 <listitem>
61 <para>Estimated build time: &chromium-time;</para>
62 </listitem>
63 </itemizedlist>
64
65 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
66
67 <bridgehead renderas="sect4">Required patch:</bridgehead>
68 <itemizedlist spacing="compact">
69 <listitem>
70 <para>
71 <ulink url="&patch-root;/chromium-&chromium-version;-constexpr-1.patch"/>
72 </para>
73 </listitem>
74<!-- <listitem>
75 <para>
76 <ulink url="&patch-root;/chromium-&chromium-version;-glibc-2.26-1.patch"/>
77 </para>
78 </listitem>
79 <listitem>
80 <para>
81 <ulink url="&patch-root;/chromium-&chromium-version;-gn_bootstrap-1.patch"/>
82 </para>
83 </listitem> -->
84 </itemizedlist>
85
86 <bridgehead renderas="sect4">Optional Chrome binaries to extract the
87 <application>WideVine</application> plug-in (Netflix) support:</bridgehead>
88 <itemizedlist spacing="compact">
89 <listitem>
90 <para>Download (HTTP):
91 <ulink url="http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_&chromium-version;-1_amd64.deb"/>
92 </para>
93 </listitem>
94 <listitem>
95 <para>Download MD5 sum: 1caee436e3dc8fda6560a421e60717e4</para>
96 </listitem>
97 <listitem>
98 <para>Download size: 49.1 MB</para>
99 </listitem>
100 </itemizedlist>
101 <itemizedlist spacing="compact">
102 <listitem>
103 <para>Download (HTTP):
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.3 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="nodejs"/>,
129 <xref linkend="nss"/>,
130 <xref linkend="python2"/>,
131 <xref linkend="usbutils"/>, and
132 <xref linkend="x-window-system"/>
133 </para>
134
135 <bridgehead renderas="sect4">Recommended</bridgehead>
136 <para role="recommended">
137 <xref linkend="make-ca"/> (runtime),
138<!-- <xref linkend="ffmpeg"/>, -->
139 <xref linkend="flac"/>,
140 <xref linkend="git"/>,
141<!-- <xref linkend="icu"/>, -->
142<!-- <xref linkend="libevent"/>, -->
143 <xref linkend="liberation-fonts"/>
144 <xref linkend="libexif"/>,
145 <xref linkend="libjpeg"/>,
146<!-- <xref linkend="libpng"/>, -->
147 <xref linkend="libsecret"/>,
148<!-- <xref linkend="libvpx"/>, -->
149 <xref linkend="libwebp"/>,
150 <xref linkend="pciutils"/>,
151 <xref linkend="pulseaudio"/>,
152 <xref linkend="xdg-utils"/>, and
153 <xref linkend="yasm"/>
154 </para>
155
156 <bridgehead renderas="sect4">Optional</bridgehead>
157 <para role="optional">
158 <xref linkend="ffmpeg"/> (currently broken),<!-- https://crbug.com/731766 -->
159 <xref linkend="GConf"/>,
160 <xref linkend="icu"/> (currently broken),<!-- Review comments at https://chromium.googlesource.com/chromium/src/+/e58fa0ba66272c5f28828b15d06c7e42a9882b3b to verify fitness for BLFS's ICU build -->
161 <xref linkend="gnome-keyring"/>,
162 <xref linkend="libevent"/>,
163 <xref linkend="libpng"/> (currently broken),<!-- https://crbug.com/75240 -->
164 <xref linkend="libvpx"/> (currently broken),<!-- https://bugs.gentoo.org/611394 -->
165 <xref linkend="libxml2"/> (currently broken),<!-- https://crbug.com/736026 -->
166 <xref linkend="upower"/> (runtime),
167 <ulink url="https://devel.freebsoft.org/speechd">speech-dispatcher</ulink>
168 (for the screen reader), and
169 <ulink url="https://google.github.io/snappy">snappy</ulink>
170 </para>
171
172 <para condition="html" role="usernotes">User Notes:
173 <ulink url="&blfs-wiki;/chromium"/></para>
174
175 </sect2>
176
177 <sect2 role="installation">
178 <title>Installation of Chromium</title>
179
180 <para>Enable the use of the
181 <ulink url="http://www.widevine.com/">WideVine</ulink> plugin, needed for
182 Netflix support (see the WideVine section below). Define an
183 available product name ("Pinkie Pie" in this case) with the following
184 command:</para>
185
186<screen><userinput>line='#define WIDEVINE_CDM_VERSION_STRING "Pinkie Pie"'
187sed "/WIDEVINE_CDM_AVAILABLE/a$line" \
188 -i third_party/widevine/cdm/stub/widevine_cdm_version.h</userinput></screen>
189
190 <para>Optionally silence several (2000+) invalid warnings:</para>
191
192<screen><userinput>sed '/static_assert/s:^://:' \
193 -i third_party/WebKit/Source/platform/wtf/text/TextCodec.h</userinput></screen>
194
195 <para>Fix a build issue with recent versions of GCC:</para>
196
197<screen><userinput>patch -Np1 -i ../chromium-&chromium-version;-constexpr-1.patch</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 libvpx, libxml2,
206 and zlib are known to break the build at this time.
207 <!-- icu: Now at 59 internally - seems to work now -->
208 <!-- icu: Now at 60 - is broken -->
209 <!-- libevent: needs internal headers - seems to work now -->
210 <!-- libvpx: breaks build in gfx -->
211 <!-- libxml2: breaks build with ui - seems to work now -->
212 <!-- zlib requires libminizip -->
213 </para>
214 </note>
215
216<!-- Again, thanks to Arch, this is much better than listing all the needed
217shipped libs required to use the remove_bundled_files.py script -->
218<screen><userinput>for LIB in <!--ffmpeg -->flac freetype harfbuzz-ng<!-- icu libevent--> libjpeg \
219 libjpeg_turbo<!-- libpng--> libwebp <!-- libxml libvpx-->libxslt yasm; do
220 find -type f -path "*third_party/$LIB/*" \
221 \! -path "*third_party/$LIB/chromium/*" \
222 \! -path "*third_party/$LIB/google/*" \
223 \! -path "*base/third_party/icu/*" \
224 \! -path './third_party/yasm/run_yasm.py' \
225 \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
226 \! -path './third_party/freetype/src/src/psnames/pstables.h' \
227 -delete
228done &amp;&amp;
229
230python build/linux/unbundle/replace_gn_files.py \
231 --system-libraries<!-- ffmpeg--> flac <!-- harfbuzz-ng -->libjpeg libxml libevent \
232 <!--libpng -->libwebp libxslt opus yasm <!-- freetype libxml libvpx--> &amp;&amp;
233
234python third_party/libaddressinput/chromium/tools/update-strings.py</userinput></screen>
235
236 <para><application>Chromium</application> uses an internal tool, <ulink
237 url="https://chromium.googlesource.com/chromium/src/tools/gn">gn</ulink>,
238 to generate the <application>Ninja</application> build files. Complete
239 configuration of the build using the following commands:</para>
240
241 <note>
242 <para>
243 <!-- Taken from Arch Linux - an immensely helpful link - Thanks -->
244 The Google API Key and OAuth tokens below are specific to LFS. If using
245 these instructions for another distro, or if you intend to distribute
246 binary copies of the software using these instructions, please obtain
247 your own keys following the instructions located at
248 <ulink url="http://www.chromium.org/developers/how-tos/api-keys"/>.
249 <!-- BLFS Devs, register an account at Google with your
250 @linuxfromscratch.org email address, and I'll make you an administrator
251 for the 'Google APIs for LFS' project (where the API and OAuth keys
252 were created for use in the book).-->
253 </para>
254 </note>
255
256<screen><userinput>GN_CONFIG=('google_api_key="AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ"'
257'google_default_client_id="595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com"'
258'google_default_client_secret="5ntt6GbbkjnTVXx-MSxbmx5e"'
259'clang_use_chrome_plugins=false'
260'enable_hangout_services_extension=true'
261'enable_nacl=false'
262'enable_nacl_nonsfi=false'
263'enable_swiftshader=false'
264'enable_widevine=true'
265'fatal_linker_warnings=false'
266'ffmpeg_branding="Chrome"'
267'fieldtrial_testing_like_official_build=true'
268'is_debug=false'
269'is_clang=false'
270'link_pulseaudio=true'
271'linux_use_bundled_binutils=false'
272'proprietary_codecs=true'
273'remove_webcore_debug_symbols=true'
274'symbol_level=0'
275'treat_warnings_as_errors=false'
276'use_allocator="none"'
277'use_cups=true'
278'use_gconf=false'
279'use_gnome_keyring=false'
280'use_gold=false'
281'use_gtk3=true'
282'use_kerberos=true'
283'use_pulseaudio=true'
284'use_sysroot=false'
285'use_system_freetype=true'
286'use_system_harfbuzz=true')</userinput></screen>
287
288 <para>Build <application>gn</application> and use it to prepare the
289 <application>Ninja</application> build files:</para>
290
291<screen><userinput>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &amp;&amp;
292out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</userinput></screen>
293
294 <warning>
295 <para>Ninja, by default, sets the number of jobs to the number of
296 available threads. If your machine is memory constrained, with regard to
297 number of threads, you should reduce the number of jobs by passing the
298 <parameter>-j#</parameter> switch to the <command>ninja</command> command
299 below. Plan for roughly 1.25GB per thread while linking
300 <application>WebKit</application> to avoid out of memory errors.</para>
301 </warning>
302
303 <para>Build <application>Chromium</application> using the following
304 commands:</para>
305
306<screen><userinput>mkdir -p third_party/node/linux/node-linux-x64/bin &amp;&amp;
307ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ &amp;&amp;
308ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter</userinput></screen>
309
310 <para>This package was already tested as part of the build.</para>
311
312 <para>Now, as the <systemitem class="username">root</systemitem> user,
313 install the package:</para>
314
315<screen role="root"><userinput>install -vDm755 out/Release/chrome \
316 /usr/lib/chromium/chromium &amp;&amp;
317
318install -vDm4755 out/Release/chrome_sandbox \
319 /usr/lib/chromium/chrome-sandbox &amp;&amp;
320
321install -vDm755 out/Release/chromedriver \
322 /usr/lib/chromium/chromedriver &amp;&amp;
323
324ln -svf /usr/lib/chromium/chromium /usr/bin &amp;&amp;
325ln -svf /usr/lib/chromium/chromedriver /usr/bin &amp;&amp;
326
327install -vDm644 out/Release/gen/content/content_resources.pak \
328 /usr/lib/chromium/ &amp;&amp;
329<!-- This is needed if using internal icu -->
330install -vDm644 out/Release/icudtl.dat \
331 /usr/lib/chromium/icudtl.dat &amp;&amp;
332
333install -vDm644 out/Release/{*.pak,*.bin} \
334 /usr/lib/chromium/ &amp;&amp;
335
336sed -i \
337 -e "s/@@MENUNAME@@/Chromium/g" \
338 -e "s/@@PACKAGE@@/chromium/g" \
339 -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
340 chrome/installer/linux/common/desktop.template \
341 chrome/app/resources/manpage.1.in &amp;&amp;
342
343install -vDm644 chrome/installer/linux/common/desktop.template \
344 /usr/share/applications/chromium.desktop &amp;&amp;
345
346install -vDm644 chrome/app/resources/manpage.1.in \
347 /usr/share/man/man1/chromium.1 &amp;&amp;
348
349cp -av out/Release/locales /usr/lib/chromium/ &amp;&amp;
350chown -Rv root:root /usr/lib/chromium/locales &amp;&amp;
351
352for size in 16 32; do
353 install -vDm644 \
354 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
355 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
356done &amp;&amp;
357
358for size in 22 24 48 64 128 256; do
359 install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \
360 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
361done</userinput></screen>
362
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
369 <bridgehead renderas="sect3">Extracting the WideVine plugin from Chrome</bridgehead>
370
371 <para>Extract the downloaded deb file with the following commands:</para>
372
373<screen><userinput>mkdir temp &amp;&amp;
374cd temp &amp;&amp;
375case $(uname -m) in
376 x86_64) ar -x ../../google-chrome-stable_&chromium-version;-1_amd64.deb
377 ;;
378 i?86) ar -x ../../google-chrome-stable_48.0.2564.116-1_i386.deb
379 ;;
380esac</userinput></screen>
381
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 -->
387
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>
391
392 </sect2>
393
394 <sect2 role="commands">
395 <title>Command Explanations</title>
396
397 <para><command>GN_CONFIG=(...)</command>: this array contains
398 all of the defines used in the build.</para>
399
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>
403
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
407 a <application>Ninja</application> configuration suitable for the build
408 machine.</para>
409
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
415 <para><command>ar -x ../../google-chrome-stable*.deb</command>:
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>
429 <seg>/usr/lib/chromium/chromium,
430 /usr/lib/chromium/chromedriver, and
431 /usr/lib/chromium/chrome-sandbox</seg>
432 <seg>none</seg>
433 <seg>/usr/lib/chromium</seg>
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">
453 <term><command>/usr/lib/chromium/chromedriver</command></term>
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.