source: xsoft/graphweb/chromium.xml@ 7add59a9

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 7add59a9 was 7add59a9, checked in by Douglas R. Reno <renodr@…>, 8 years ago

Update to chromium-53.0.2785.143

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

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