Changeset 47eea61 for xsoft


Ignore:
Timestamp:
10/29/2016 07:29:37 AM (7 years ago)
Author:
DJ Lucas <dj@…>
Branches:
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
Children:
7b8c7ec
Parents:
5714cf71
Message:

Update to chromium-54.0.2840.71.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • xsoft/graphweb/chromium.xml

    r5714cf71 r47eea61  
    77  <!ENTITY chromium-download-http "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-&chromium-version;.tar.xz">
    88  <!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. -->
     9  <!ENTITY chromium-md5sum        "30bb11c67bfbb30a28ca0b0cb6e06740">
     10  <!ENTITY chromium-size          "458 MB">
     11  <!ENTITY chromium-buildsize     "5.2 GB">
     12  <!ENTITY chromium-time          "105 SBU">
     13  <!-- Ninja defaults to parallel build unless supplying -j1, SBU measured on
     14  dual core, hyperthreaded CPU (4 threads).                               -->
    1415]>
    1516
     
    6667    <itemizedlist spacing="compact">
    6768      <listitem>
    68         <para>Optional launcher (to eanble Pepper Flash - x86_64 only):
     69        <para>Optional launcher (to use the Flash Player PPAPI plugin):
    6970        <ulink url="https://github.com/foutrelis/chromium-launcher/archive/v3.tar.gz"/>
    7071        </para>
    7172      </listitem>
    7273      <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"/>
     74        <para>Optional Chrome distribution (to copy widevine plugin):
     75        <ulink url="http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_&chromium-version;-1_amd64.deb"/> or
     76        <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"/>
     77        (i386 is no longer officially supported)</para>
     78      </listitem>
     79      <listitem>
     80        <para>Optional Flash Player plugin:
     81        <ulink url="https://fpdownload.adobe.com/pub/flashplayer/pdc/23.0.0.205/flash_player_ppapi_linux.x86_64.tar.gz"/> or
     82        <ulink url="https://fpdownload.adobe.com/pub/flashplayer/pdc/23.0.0.205/flash_player_ppapi_linux.i386.tar.gz"/>
    7583        </para>
    7684      </listitem>
     
    100108    <para role="recommended">
    101109      <xref linkend="flac"/>,
    102       <xref linkend="GConf"/>,
    103       <xref linkend="gnome-keyring"/>,
    104       <xref linkend="hicolor-icon-theme"/>,
     110      <xref linkend="git"/>,
    105111      <xref linkend="libevent"/>,
    106112      <xref linkend="libexif"/>,
    107       <xref linkend="libjpeg"/>,
    108       <xref linkend="libpng"/>,
    109113      <xref linkend="libsecret"/>,
     114      <xref linkend="libwebp"/>,
    110115      <xref linkend="pciutils"/>,
    111116      <xref linkend="pulseaudio"/>,
     
    117122    <para role="optional">
    118123      <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. -->
     124      <xref linkend="GConf"/>,
     125      <xref linkend="gnome-keyring"/>,
    121126      <xref linkend="icu"/>,
     127      <xref linkend="libjpeg"/>,
     128      <xref linkend="libpng"/>,
    122129      <xref linkend="libxml2"/>,
    123130      <xref linkend="libvpx"/>,
     
    135142    <title>Installation of Chromium</title>
    136143
    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
    157 build/package_version/package_version.py - -packages pnacl_newlib \
    158     - -tar-dir toolchain_build/out/packages - -dest-dir toolchain/ \
    159     extract - -skip-missing
    160 build/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>
     144   <para>Fix a build issue on Linux-4.5+:</para>
     145
     146<screen><userinput>sed 's/#include &lt;sys\/mman\.h&gt;/&amp;\n\n#if defined(MADV_FREE)\n#undef MADV_FREE\n#endif\n/' \
     147    -i third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp</userinput></screen>
     148
     149    <para>Fix a build issue with GCC-6:</para>
     150
     151<screen><userinput>sed "s/^config(\"compiler\") {/&amp;\ncflags_cc = [ \"-fno-delete-null-pointer-checks\" ]/" \
     152    -i build/config/linux/BUILD.gn</userinput></screen>
     153
     154    <para>If you'd like to enable the use of the
     155    <ulink url="http://www.widevine.com/">WideVine</ulink> plugin, needed for
     156    Netflix support (see the WideVine section below), you'll need to define an
     157    available product name ("Pinkie Pie" in this case) with the following
     158    command:</para>
    169159
    170160<screen><userinput>sed "s/WIDEVINE_CDM_AVAILABLE/&amp;\n\n#define WIDEVINE_CDM_VERSION_STRING \"Pinkie Pie\"/" \
    171161    -i third_party/widevine/cdm/stub/widevine_cdm_version.h</userinput></screen>
    172162
    173     <para>Setup <application>Chromium</application> build options by running
    174     the following commands:</para>
     163    <para>Remove third-party build files that interfere with system versions:</para>
    175164
    176165    <note>
    177166      <para>
    178167        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>
     168        in stone, however they have been tested thoroughly. With Chromium
     169        &chromium-version;, system versions of icu, libjpeg, libpng, libxml2,
     170        libvpx, and zlib are known to break the build at this time.
    182171        <!-- This should be remedied by 55.x as updates are coming upstream -->
    183 
     172      </para>
     173    </note>
     174
     175<!-- Again, thanks to Arch, this is much better than listing all the needed
     176shipped libs required to use the remove_bundled_files.py script -->
     177<screen><userinput>for LIB in flac harfbuzz-ng libwebp libxslt yasm; do
     178    find -type f -path "*third_party/$LIB/*" \
     179        \! -path "*third_party/$LIB/chromium/*" \
     180        \! -path "*third_party/$LIB/google/*" \
     181        \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
     182        -delete
     183done &amp;&amp;
     184
     185python build/linux/unbundle/replace_gn_files.py \
     186    --system-libraries flac harfbuzz-ng libwebp libxslt yasm</userinput></screen>
     187
     188    <para><application>Chromium</application> uses an internal tool, <ulink
     189    url="https://chromium.googlesource.com/chromium/src/tools/gn">gn</ulink>,
     190    to generate the <application>Ninja</application> build files. Complete
     191    configuration of the build using the following commands:</para>
     192
     193    <note>
     194      <para>
    184195        <!-- 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
     196        The Google API Key and OAuth tokens below are specific to LFS. If using
     197        these instructions for another distro, or if you intend to distribute
     198        binary copies of the software using these instructions, please obtain
     199        your own keys following the instructions located at
    190200        <ulink url="http://www.chromium.org/developers/how-tos/api-keys"/>.
    191201        <!-- BLFS Devs, register an account at Google with your
    192202        @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).-->
     203        for the 'Chromium for LFS' project (where the API and OAuth keys were
     204        created for use in the book).-->
    195205      </para>
    196206    </note>
    197207
    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;
    277 build/gyp_chromium --depth=. "${CHROMIUM_CONFIG[@]}"</userinput></screen>
     208<screen><userinput>GN_CONFIG=("google_api_key=\"AIzaSyDxKL42zsPjbke5O8_rPVpVrLrJ8aeE9rQ\""
     209"google_default_client_id=\"595013732528-llk8trb03f0ldpqq6nprjp1s79596646.apps.googleusercontent.com\""
     210"google_default_client_secret=\"5ntt6GbbkjnTVXx-MSxbmx5e\""
     211'clang_use_chrome_plugins=false'
     212'enable_hangout_services_extension=true'
     213'enable_nacl=false'
     214'enable_nacl_nonsfi=false'
     215'enable_widevine=true'
     216'fatal_linker_warnings=false'
     217'ffmpeg_branding="Chrome"'
     218'fieldtrial_testing_like_official_build=true'
     219'is_debug=false'
     220'is_clang=false'
     221'link_pulseaudio=true'
     222'linux_use_bundled_binutils=false'
     223'proprietary_codecs=true'
     224'remove_webcore_debug_symbols=true'
     225'symbol_level=0'
     226'treat_warnings_as_errors=false'
     227'use_allocator="none"'
     228'use_cups=true'
     229'use_gconf=false'
     230'use_gnome_keyring=false'
     231'use_gold=false'
     232'use_gtk3=false'
     233'use_kerberos=true'
     234'use_pulseaudio=true'
     235'use_sysroot=false')</userinput></screen>
     236
     237    <para>Build <application>gn</application> and use it to prepare the
     238    <application>Ninja</application> build files:</para>
     239
     240<screen><userinput>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}" &amp;&amp;
     241out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</userinput></screen>
    278242
    279243    <para>Build <application>Chromium</application> using the following
    280244    command:</para>
    281245
    282 <screen><userinput>ninja -C out/Release chrome chrome_sandbox chromedriver</userinput></screen>
     246<screen><userinput>ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter</userinput></screen>
    283247
    284248    <para>This package was already tested as part of the build.</para>
     
    295259ln -svf /usr/lib/chromium/chromium /usr/bin              &amp;&amp;
    296260ln -svf /usr/lib/chromium/chromedriver /usr/bin/         &amp;&amp;
     261
     262install -vm755 out/Release/libwidevinecdmadapter.so \
     263               /usr/lib/chromium/                        &amp;&amp;
    297264install -vDm644 out/Release/icudtl.dat /usr/lib/chromium &amp;&amp;
    298 
     265install -vDm644 out/Release/gen/content/content_resources.pak \
     266                /usr/lib/chromium/                       &amp;&amp;
    299267install -vm644 out/Release/{*.pak,*.bin} \
    300268               /usr/lib/chromium/                        &amp;&amp;
     
    334302EOF</userinput></screen>
    335303
    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 
    349304    <bridgehead renderas="sect3">Chromium Lanucher</bridgehead>
    350305    <para><application>Chromium Launcher</application> is a wrapper for
     
    365320cd ..</userinput></screen>
    366321
    367     <bridgehead renderas="sect3">Extracting binary plugins from Chrome</bridgehead>
     322    <bridgehead renderas="sect3">Extracting the WideVine plugin from Chrome</bridgehead>
    368323
    369324    <para>Extract the downloaded deb file with the following commands:</para>
     
    371326<screen><userinput>mkdir temp                                  &amp;&amp;
    372327cd temp                                     &amp;&amp;
    373 ar -x ../../google-chrome-stable_&chromium-version;*.deb &amp;&amp;
     328ar -x ../../google-chrome-stable*.deb &amp;&amp;
    374329tar -xf data.tar.xz</userinput></screen>
    375330
    376     <bridgehead renderas="sect4">Pepper Flash</bridgehead>
    377 
     331    <para>As the <systemitem class="username">root</systemitem> user, install
     332    the WideVine plugin with the following command:</para>
     333
     334<screen role="root"><userinput>install -vm755 opt/google/chrome/libwidevinecdm.so \
     335    /usr/lib/chromium/</userinput></screen>
     336
     337
     338    <bridgehead renderas="sect3">Installing the Pepper Flash plugin:</bridgehead>
     339
     340    <para>Extract the <application>Flash Player</application> plugin with the
     341    following command:</para>
     342
     343<screen><userinput>tar -xf ../../flash_player_ppapi_linux.*.tar.gz</userinput></screen>
    378344    <para>As the <systemitem class="username">root</systemitem> user, install
    379345    the Pepper Flash plugin with the following command:</para>
    380346
    381347<screen role="root"><userinput>install -vdm755 /usr/lib/PepperFlash &amp;&amp;
    382 install -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>
     348install -vm755 libpepflashplayer.so /usr/lib/PepperFlash &amp;&amp;
     349install -vm644 manifest.json /usr/lib/PepperFlash</userinput></screen>
    390350
    391351  </sect2>
     
    394354    <title>Command Explanations</title>
    395355
    396     <para><command>CHROMIUM_CONFIG=(...)</command>: this array contains
     356    <para><command>GN_CONFIG=(...)</command>: this array contains
    397357    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>
    402358
    403359    <para><command>sed "s/#include &lt;sys...</command>: this command undefines
    404360    MADV_FREE to fix a build issue with Linux-4.5 and newer.</para>
    405361
    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
     362    <para><command>python tools/gn/bootstrap/bootstrap.py --gn-gen-args "${GN_CONFIG[*]}"</command>:
     363    this command replaces defines in the gn files with the values contained in
     364    <envar>${GN_CONFIG[@]}</envar>.</para>
     365
     366    <para><command>out/Release/gn gen out/Release --args="${GN_CONFIG[*]}"</command>:
     367    this command runs a Google provided configuration script
     368    <application>gn</application> on the source tree to produce
    413369    a <application>Ninja</application> configuration suitable for the build
    414370    machine.</para>
    415371
    416     <para><command>ar -x ../../google-chrome-stable_53.0.2785.116*.deb</command>:
     372    <para><command>ar -x ../../google-chrome-stable*.deb</command>:
    417373    the <command>ar</command> utility is used to extract Debian archives.</para>
    418374
Note: See TracChangeset for help on using the changeset viewer.