source: xsoft/graphweb/chromium.xml@ 49e162b

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 8.0 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 nosym 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 49e162b was 49e162b, checked in by DJ Lucas <dj@…>, 8 years ago

Add Chromium-53.0.2785.116. Fixes #8364.

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

  • Property mode set to 100644
File size: 18.7 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 "7035148d1566ddeab3153b2007b86613">
10 <!ENTITY chromium-size "440 MB">
11 <!ENTITY chromium-buildsize "6.2 GB">
12 <!ENTITY chromium-time "111 SBU">
13]>
14
15<sect1 id="chromium" xreflabel="Chromium-&chromium-version;">
16 <?dbhtml filename="chromium.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>Chromium-&chromium-version;</title>
24
25 <indexterm zone="chromium">
26 <primary sortas="a-Chromium">Chromium</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to Chromium</title>
31
32 <para><application>Chromium</application> is an open-source browser project
33 that aims to build a safer, faster, and more stable way for all users to
34 experience the web.</para>
35
36 &lfs7a_checked;
37
38 <bridgehead renderas="sect3">Package Information</bridgehead>
39 <itemizedlist spacing="compact">
40 <listitem>
41 <para>Download (HTTP): <ulink url="&chromium-download-http;"/></para>
42 </listitem>
43<!-- <listitem>
44 <para>Download (FTP): <ulink url="&chromium-download-ftp;"/></para>
45 </listitem> -->
46 <listitem>
47 <para>Download MD5 sum: &chromium-md5sum;</para>
48 </listitem>
49 <listitem>
50 <para>Download size: &chromium-size;</para>
51 </listitem>
52 <listitem>
53 <para>Estimated disk space required: &chromium-buildsize;</para>
54 </listitem>
55 <listitem>
56 <para>Estimated build time: &chromium-time;</para>
57 </listitem>
58 </itemizedlist>
59
60 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
61 <note><para>Download this file via wget as:</para>
62<screen><userinput>wget https://github.com/foutrelis/chromium-launcher/archive/v3.tar.gz \
63 -O chromium-launcher-3.tar.gz</userinput></screen>
64 </note>
65 <itemizedlist spacing="compact">
66 <listitem>
67 <para>Optional launcher (to eanble Pepper Flash - x86_64 only):
68 <ulink url="https://github.com/foutrelis/chromium-launcher/archive/v3.tar.gz"/>
69 </para>
70 </listitem>
71 <listitem>
72 <para>Optional Chrome distribution (to copy plugins - x86_64 only):
73 <ulink url="http://mirror.ufs.ac.za/google-chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_53.0.2785.116-1_amd64.deb"/>
74 </para>
75 </listitem>
76 </itemizedlist>
77
78 <bridgehead renderas="sect3">Chromium Dependencies</bridgehead>
79
80 <bridgehead renderas="sect4">Required</bridgehead>
81 <para role="required">
82 <xref linkend="alsa-lib"/>,
83 <xref linkend="cups"/>,
84 <xref linkend="desktop-file-utils"/>,
85 <xref linkend="dbus"/>,
86 <xref linkend="gtk2"/>,
87 <xref linkend="hicolor-icon-theme"/>,
88 <xref linkend="mesa"/>,
89 <xref linkend="ninja"/>,
90 <xref linkend="nss"/>,
91 <xref linkend="python2"/>, and
92 <xref linkend="x-window-system"/>
93 </para>
94
95 <bridgehead renderas="sect4">Recommended</bridgehead>
96 <para role="recommended">
97 <xref linkend="flac"/>,
98 <xref linkend="GConf"/>,
99 <xref linkend="gnome-keyring"/>,
100 <xref linkend="hicolor-icon-theme"/>,
101 <xref linkend="libevent"/>,
102 <xref linkend="libexif"/>,
103 <xref linkend="libjpeg"/>,
104 <xref linkend="libpng"/>,
105 <xref linkend="libsecret"/>,
106 <xref linkend="pciutils"/>,
107 <xref linkend="pulseaudio"/>,
108 <xref linkend="xdg-utils"/>, and
109 <xref linkend="yasm"/>
110 </para>
111
112 <bridgehead renderas="sect4">Optional</bridgehead>
113 <para role="optional">
114 <xref linkend="ffmpeg"/>,
115 <xref linkend="git"/> (required to build PNaCL on i686),
116 <ulink url="http://www.gnu.org/software/gperf">gperf</ulink>,
117 <xref linkend="icu"/>,
118 <xref linkend="libxml2"/>,
119 <xref linkend="libvpx"/>,
120 <ulink url="http://www.freebsoft.org/speechd">speech-dispatcher</ulink>
121 (for the screen reader), and
122 <ulink url="https://google.github.io/snappy">snappy</ulink>
123 </para>
124
125 <para condition="html" role="usernotes">User Notes:
126 <ulink url="&blfs-wiki;/chromium"/></para>
127
128 </sect2>
129
130 <sect2 role="installation">
131 <title>Installation of Chromium</title>
132
133 <para>If you'd like to import binary Pepper plugins from Chrome, you'll
134 need to enable PNaCL. PNaCL is a sandboxed environment for running
135 untrusted code, but the binary toolchain is availalbe only on x86_64.
136 Download the binary PNaCL toolchain with the following commands:</para>
137
138<screen><userinput>python build/download_nacl_toolchains.py --packages \
139 nacl_x86_newlib,pnacl_newlib,pnacl_translator \
140 sync --extract</userinput></screen>
141
142<!-- <para>If on any other arch than x86_64, you will have to build the PNaCL
143 environment yourself. Please report if this works without issue as this
144 has not been tested. Instuctions were taken directly from
145 <ulink url="https://www.chromium.org/nativeclient/pnacl/building-pnacl-components-for-distribution-packagers">
146 here</ulink>. Note that Google no longer support i686 builds, so any
147 plugin extracted from the binary installation of Chrome (libwidevinecdm.so)
148 will be necessarely out of date.</para>
149
150<screen><userinput>toolchain_build/toolchain_build_pnacl.py \
151 - -verbose - -sync - -clobber - -gcc - -no-use-cached-results \
152 - -no-use-remote-cache - -disable-git-cache - -build-sbtc
153build/package_version/package_version.py - -packages pnacl_newlib \
154 - -tar-dir toolchain_build/out/packages - -dest-dir toolchain/ \
155 extract - -skip-missing
156build/package_version/package_version.py - -packages pnacl_translator \
157 - -tar-dir toolchain_build/out/packages - -dest-dir toolchain/ \
158 extract - -skip-missing</userinput></screen> -->
159
160 <para>To enable use of
161 <ulink url="http://www.widevine.com/">WideVine</ulink>, needed for Netflix
162 support (see the binary Chrome plugins section below), in addition to
163 enabling PNaCL above, you'll need to define an availalbe product name
164 ("Pinkie Pie" in this case) with the following command:</para>
165
166<screen><userinput>sed "s/WIDEVINE_CDM_AVAILABLE/&amp;\n\n#define WIDEVINE_CDM_VERSION_STRING \"Pinkie Pie\"/" \
167 -i third_party/widevine/cdm/stub/widevine_cdm_version.h</userinput></screen>
168
169 <para>Setup <application>Chromium</application> build options by running
170 the following commands:</para>
171
172 <note>
173 <para>
174 Chromium uses many exteranl projects, the selections below are not set
175 in stone, however they have been tested thoroughly. With 53.0.2785.116,
176 system versions of icu, libxml2, libvpx, and zlib are known to break
177 the build at this time.</para>
178 <!-- This should be remedied by 55.x as updates are coming upstream -->
179
180 <!-- Taken from Arch Linux - an immensely helpful link - Thanks -->
181 <para>Additionally, the Google API Key and 0Auth tokens below are
182 specific to LFS. If using these instructions for another distro, or if
183 you intend to distribute binary copies of the software using these
184 instructions, please obtain your own keys following the instructions
185 located at
186 <ulink url="http://www.chromium.org/developers/how-tos/api-keys"/>.
187 <!-- BLFS Devs, register an account at Google with your
188 @linuxfromscratch.org email address, and I'll make you an administrator
189 for the 'Chromium for LFS' project (where the API and 0Auth keys were
190 created for the book).-->
191 </para>
192 </note>
193
194<screen><userinput>CHROMIUM_CONFIG=(
195-Dgoogle_api_key=AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ
196-Dgoogle_default_client_id=595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com
197-Dgoogle_default_client_secret=5ntt6GbbkjnTVXx-MSxbmx5e
198-Dwerror=
199-Dclang=0
200-Dpython_ver=2.7
201-Dlinux_link_gsettings=1
202-Dlinux_link_libpci=1
203-Dlinux_link_pulseaudio=1
204-Dlinux_strip_binary=1
205-Dlinux_use_bundled_binutils=0
206-Dlinux_use_bundled_gold=0
207-Dlinux_use_gold_flags=0
208-Dicu_use_data_file_flag=1
209-Dlogging_like_official_build=1
210-Dtracing_like_official_build=1
211-Dfieldtrial_testing_like_official_build=1
212-Drelease_extra_cflags="$CFLAGS"
213-Dffmpeg_branding=Chrome
214-Dproprietary_codecs=1
215-Duse_gnome_keyring=0
216-Duse_system_bzip2=1
217-Duse_system_flac=1
218-Duse_system_ffmpeg=0
219-Duse_system_harfbuzz=1
220-Duse_system_icu=0
221-Duse_system_libevent=1
222-Duse_system_libjpeg=1
223-Duse_system_libpng=1
224-Duse_system_libvpx=0
225-Duse_system_libxml=0
226-Duse_system_snappy=0
227-Duse_system_xdg_utils=1
228-Duse_system_yasm=1
229-Duse_system_zlib=0
230-Dusb_ids_path=/usr/share/hwdata/usb.ids
231-Duse_mojo=0
232-Duse_gconf=1
233-Duse_sysroot=0
234-Denable_hangout_services_extension=1
235-Denable_widevine=1
236-Ddisable_fatal_linker_warnings=1
237-Ddisable_glibc=1)</userinput></screen>
238
239<!-- <para>If you are not on x86_64 (or you elected to rebuild the PNaCL
240 sandbox manually on x86_64), execute the following commands:</para>
241
242<screen><userinput>CHROMIUM_CONFIG+=(
243-Dpnacl_newlib_toolchain=$PWD/toolchain/linux_x86/pnacl_newlib
244-Dpnacl_translator_dir=PWD/toolchain/linux_x86/pnacl_translator
245)</userinput></screen> -->
246
247 <para>Fix a build issue with GCC-6.</para>
248
249<screen><userinput>export CFLAGS+=' -fno-delete-null-pointer-checks'</userinput></screen>
250
251 <para>Fix a build issue with cups-2.2.</para>
252
253<screen><userinput>sed 's/#include &lt;cups\/cups\.h&gt;/&amp;\n#include &lt;cups\/ppd.h&gt;/' \
254 -i printing/backend/cups_helper.h</userinput></screen>
255
256 <para>Fix a potential build issue on Linux-4.5+:</para>
257
258<screen><userinput>sed "s/#include \&lt;sys\/mman.h\&gt;/&amp;\n\n#if defined(MADV_FREE)\n#undef MADV_FREE\n#endif\n\n/" \
259 -i third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp</userinput></screen>
260
261 <para>Replace a missing file to allow the test suite to run:</para>
262
263<screen><userinput>touch chrome/test/data/webui/i18n_process_css_test.html</userinput></screen>
264
265 <para><application>Chromium</application> uses
266 <ulink url="https://gyp.gsrc.io/">GYP</ulink> to generate the
267 <application>Ninja</application> build files. Complete configuration of
268 the buld using the following commands:</para>
269
270<screen><userinput>build/linux/unbundle/replace_gyp_files.py "${CHROMIUM_CONFIG[@]}" &amp;&amp;
271build/gyp_chromium --depth=. "${CHROMIUM_CONFIG[@]}"</userinput></screen>
272
273 <para>Build <application>Chromium</application> using the following
274 command:</para>
275
276<screen><userinput>ninja -C out/Release chrome chrome_sandbox chromedriver</userinput></screen>
277
278 <para>This package was already tested as part of the build.</para>
279
280 <para>Now, as the <systemitem class="username">root</systemitem> user,
281 install the pacakage:</para>
282
283<screen role="root"><userinput>install -vDm755 out/Release/chrome \
284 /usr/lib/chromium/chromium &amp;&amp;
285install -vDm4755 out/Release/chrome_sandbox \
286 /usr/lib/chromium/chrome-sandbox &amp;&amp;
287install -vDm755 out/Release/chromedriver \
288 /usr/lib/chromium/chromedriver &amp;&amp;
289ln -svf /usr/lib/chromium/chromium /usr/bin &amp;&amp;
290ln -svf /usr/lib/chromium/chromedriver /usr/bin/ &amp;&amp;
291install -vDm644 out/Release/icudtl.dat /usr/lib/chromium &amp;&amp;
292
293install -vm644 out/Release/{*.pak,*.bin} \
294 /usr/lib/chromium/ &amp;&amp;
295
296cp -av out/Release/locales /usr/lib/chromium/ &amp;&amp;
297chown -Rv root:root /usr/lib/chromium/locales &amp;&amp;
298
299install -vDm644 out/Release/chrome.1 \
300 /usr/share/man/man1/chromium.1</userinput></screen>
301
302 <para>While still the <systemitem class="username">root</systemitem> user,
303 install icons and the .desktop file:</para>
304
305<screen><userinput role="root">for size in 16 32; do
306 install -vDm644 \
307 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
308 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
309done &amp;&amp;
310
311for size in 22 24 48 64 128 256; do
312 install -vDm644 "chrome/app/theme/chromium/product_logo_$size.png" \
313 "/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
314done &amp;&amp;
315
316cat &gt; /usr/share/applications/chromium.desktop &lt;&lt; "EOF"
317[Desktop Entry]
318Encoding=UTF-8
319Name=Chromium Web Browser
320Comment=Access the Internet
321GenericName=Web Browser
322Exec=chromium %u
323Terminal=false
324Type=Application
325Icon=chromium
326Categories=GTK;Network;WebBrowser;
327MimeType=application/xhtml+xml;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
328EOF</userinput></screen>
329
330 <para>If you've enabled PNaCL support, while still the
331 <systemitem class="username">root</systemitem> user:</para>
332
333<screen><userinput role="root">install -vm755 out/Release/nacl_helper{,_bootstrap} \
334 out/Release/nacl_irt_*.nexe \
335 /usr/lib/chromium/</userinput></screen>
336
337 <para>If you've enabled <application>WideVine</application> support, while
338 still the <systemitem class="username">root</systemitem> user:</para>
339
340<screen><userinput role="root">install -vm755 out/Release/libwidevinecdmadapter.so \
341 /usr/lib/chromium/</userinput></screen>
342
343 <bridgehead renderas="sect3">Chromium Lanucher</bridgehead>
344 <para><application>Chromium Launcher</application> is a wrapper for
345 <application>chromium</application> that allows use of the Pepper Flash
346 plugin. If you intend to use the <application>Pepper Flash</application>
347 plugin, build <application>Chromium Launcher</application> by running the
348 following commands:</para>
349
350<screen><userinput>tar -xf ../chromium-launcher-3.tar.gz &amp;&amp;
351cd chromium-launcher-3 &amp;&amp;
352make PREFIX=/usr</userinput></screen>
353
354 <para>Install Chromium Launcher with the following commands (as the
355 <systemitem class="username">root</systemitem> user:</para>
356
357<screen role="root"><userinput>rm -f /usr/bin/chromium &amp;&amp;
358make PREFIX=/usr install-strip &amp;&amp;
359cd ..</userinput></screen>
360
361 <bridgehead renderas="sect3">Extracting binary plugins from Chrome</bridgehead>
362
363 <para>Extract the downloaded deb file with the following commands:</para>
364
365<screen><userinput>mkdir temp &amp;&amp;
366cd temp &amp;&amp;
367ar -x ../../google-chrome-stable_&chromium-version;*.deb &amp;&amp;
368tar -xf data.tar.xz</userinput></screen>
369
370 <bridgehead renderas="sect4">Pepper Flash</bridgehead>
371
372 <para>As the <systemitem class="username">root</systemitem> user, install
373 the Pepper Flash plugin with the following command:</para>
374
375<screen role="root"><userinput>install -vdm755 /usr/lib/PepperFlash &amp;&amp;
376install -vm755 opt/google/chrome/PepperFlash/* /usr/lib/PepperFlash</userinput></screen>
377
378 <bridgehead renderas="sect4">WideVine</bridgehead>
379
380 <para>As the <systemitem class="username">root</systemitem> user, install
381 the WideVine plugin with the following command:</para>
382
383<screen role="root"><userinput>install -vm755 opt/google/chrome/libwidevinecdm.so /usr/lib/chromium/</userinput></screen>
384
385 </sect2>
386
387 <sect2 role="commands">
388 <title>Command Explanations</title>
389
390 <para><command>CHROMIUM_CONFIG=(...)</command>: this array contains
391 all of the defines used in the build.</para>
392
393 <para><command>sed 's/#include &lt;cups...</command>: this command fixes
394 a build issue with Cups 2.2 and newer where functions are defined in a
395 different file (cups/ppd.h).</para>
396
397 <para><command>sed "s/#include &lt;sys...</command>: this command udefines
398 MADV_FREE to fix a build issue with Linux-4.5 and newer.</para>
399
400 <para><command>build/linux/unbundle/replace_gyp_files.py "${CHROMIUM_CONFIG[@]}"</command>:
401 this command replaces defines in the gyp file with the values contained in
402 <envar>${CHROMIUM_CONFIG[@]}</envar>.</para>
403
404 <para><command>build/gyp_chromium --depth=. "${CHROMIUM_CONFIG[@]}"</command>:
405 this command runs a Google modified version of
406 <application>gyp</application> on the source tree to produce
407 a <application>Ninja</application> configuration suitable for the build
408 machine.</para>
409
410 <para><command>ar -x ../../google-chrome-stable_53.0.2785.116*.deb</command>:
411 the <command>ar</command> utility is used to extract Debian archives.</para>
412
413 </sect2>
414
415 <sect2 role="content">
416 <title>Contents</title>
417
418 <segmentedlist>
419 <segtitle>Installed Programs</segtitle>
420 <segtitle>Installed Libraries</segtitle>
421 <segtitle>Installed Directories</segtitle>
422
423 <seglistitem>
424 <seg>/usb/bin/chromium, /usr/lib/chromium/chromium,
425 /usr/lib/chromium/chromedriver, and
426 /usr/lib/chromium/chrome-sandbox</seg>
427 <seg>none</seg>
428 <seg>/usr/lib/chromium</seg>
429 </seglistitem>
430 </segmentedlist>
431
432 <variablelist>
433 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
434 <?dbfo list-presentation="list"?>
435 <?dbhtml list-presentation="table"?>
436
437 <varlistentry id="chromium-prog">
438 <term><command>/usr/bin/chromium</command></term>
439 <listitem>
440 <para> is a wrapper for the main chromium binary (in
441 /usr/lib/chromium) that allow use of the Pepper Flash plugin.</para>
442 <indexterm zone="chromium chromium-prog">
443 <primary sortas="b-chromium">chromium</primary>
444 </indexterm>
445 </listitem>
446 </varlistentry>
447
448 <varlistentry id="chromium-lib">
449 <term><command>/usr/lib/chromium/chromium</command></term>
450 <listitem>
451 <para> is the main chromium executable.</para>
452 <indexterm zone="chromium chromium-lib">
453 <primary sortas="b-chromiumlib">chromium</primary>
454 </indexterm>
455 </listitem>
456 </varlistentry>
457
458 <varlistentry id="chromedriver">
459 <term><command>/usr/bin/chromedriver</command></term>
460 <listitem>
461 <para> is a
462 <ulink url="http://www.seleniumhq.org/projects/webdriver/">
463 WebDriver</ulink> for Chromium.</para>
464 <indexterm zone="chromium chromedriver">
465 <primary sortas="b-chromedriver">chromedriver</primary>
466 </indexterm>
467 </listitem>
468 </varlistentry>
469
470 <varlistentry id="chrome-sandbox">
471 <term><command>/usr/lib/chromium/chrome-sandbox</command></term>
472 <listitem>
473 <para> creates a sandboxed environment for running untrusted
474 code (plugins).</para>
475 <indexterm zone="chromium chrome-sandbox">
476 <primary sortas="b-chrome-sandbox">chrome-sandbox</primary>
477 </indexterm>
478 </listitem>
479 </varlistentry>
480
481 </variablelist>
482
483 </sect2>
484
485</sect1>
Note: See TracBrowser for help on using the repository browser.