[arch-commits] Commit in chromium/repos (9 files)

Evangelos Foutras foutrelis at archlinux.org
Sat Mar 24 04:10:50 UTC 2018


    Date: Saturday, March 24, 2018 @ 04:10:50
  Author: foutrelis
Revision: 320125

archrelease: copy trunk to testing-x86_64

Added:
  chromium/repos/testing-x86_64/
  chromium/repos/testing-x86_64/PKGBUILD
    (from rev 320124, chromium/trunk/PKGBUILD)
  chromium/repos/testing-x86_64/chromium-clang-r2.patch
    (from rev 320124, chromium/trunk/chromium-clang-r2.patch)
  chromium/repos/testing-x86_64/chromium-math.h-r0.patch
    (from rev 320124, chromium/trunk/chromium-math.h-r0.patch)
  chromium/repos/testing-x86_64/chromium-skia-harmony.patch
    (from rev 320124, chromium/trunk/chromium-skia-harmony.patch)
  chromium/repos/testing-x86_64/chromium-stdint.patch
    (from rev 320124, chromium/trunk/chromium-stdint.patch)
  chromium/repos/testing-x86_64/chromium-widevine.patch
    (from rev 320124, chromium/trunk/chromium-widevine.patch)
  chromium/repos/testing-x86_64/chromium.install
    (from rev 320124, chromium/trunk/chromium.install)
  chromium/repos/testing-x86_64/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
    (from rev 320124, chromium/trunk/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch)

----------------------------------------------------------+
 PKGBUILD                                                 |  243 +++++++++++++
 chromium-clang-r2.patch                                  |   21 +
 chromium-math.h-r0.patch                                 |   29 +
 chromium-skia-harmony.patch                              |   77 ++++
 chromium-stdint.patch                                    |   21 +
 chromium-widevine.patch                                  |   10 
 chromium.install                                         |   16 
 fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch |   53 ++
 8 files changed, 470 insertions(+)

Copied: chromium/repos/testing-x86_64/PKGBUILD (from rev 320124, chromium/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD	                        (rev 0)
+++ testing-x86_64/PKGBUILD	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,243 @@
+# $Id$
+# Maintainer: Evangelos Foutras <evangelos at foutrelis.com>
+# Contributor: Pierre Schmitz <pierre at archlinux.de>
+# Contributor: Jan "heftig" Steffens <jan.steffens at gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227 at archlinux.us>
+
+pkgname=chromium
+pkgver=65.0.3325.181
+pkgrel=2
+_launcher_ver=5
+pkgdesc="A web browser built for speed, simplicity, and security"
+arch=('x86_64')
+url="https://www.chromium.org/Home"
+license=('BSD')
+depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
+         'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib'
+         'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' 'clang'
+             'lld')
+optdepends=('pepper-flash: support for Flash content'
+            'kdialog: needed for file dialogs in KDE'
+            'gnome-keyring: for storing passwords in GNOME keyring'
+            'kwallet: for storing passwords in KWallet')
+install=chromium.install
+source=(https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$pkgver.tar.xz
+        chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz
+        chromium-$pkgver.txt::https://chromium.googlesource.com/chromium/src.git/+/$pkgver?format=TEXT
+        fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
+        chromium-skia-harmony.patch
+        chromium-clang-r2.patch
+        chromium-math.h-r0.patch
+        chromium-stdint.patch
+        chromium-widevine.patch)
+sha256sums=('93666448c6b96ec83e6a35a64cff40db4eb92a154fe1db4e7dab4761d0e38687'
+            '4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587'
+            '2771c049b66c9aba3b945fe065f2610f164d55506eb5d71751a26aaf8b40d4ee'
+            'e3fb73b43bb8c69ff517e66b2cac73d6e759fd240003eb35598df9af442422fe'
+            'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3'
+            '4495e8b29dae242c79ffe4beefc5171eb3c7aacb7e9aebfd2d4d69b9d8c958d3'
+            'fe0ab86aa5b0072db730eccda3e1582ebed4af25815bfd49fe0da24cf63ca902'
+            'c00d2506f1078b38a8ebec474a7318e76a61db1298afb40088a34210f137210f'
+            'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808')
+
+# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
+# Keys are the names in the above script; values are the dependencies in Arch
+declare -gA _system_libs=(
+  #[ffmpeg]=ffmpeg            # https://crbug.com/731766
+  [flac]=flac
+  [fontconfig]=fontconfig
+  [freetype]=freetype2
+  [harfbuzz-ng]=harfbuzz
+  [icu]=icu
+  [libdrm]=
+  [libjpeg]=libjpeg
+  #[libpng]=libpng            # https://crbug.com/752403#c10
+  [libvpx]=libvpx
+  [libwebp]=libwebp
+  #[libxml]=libxml2           # https://crbug.com/736026
+  [libxslt]=libxslt
+  [opus]=opus
+  [re2]=re2
+  [snappy]=snappy
+  [yasm]=
+  [zlib]=minizip
+)
+_unwanted_bundled_libs=(
+  ${!_system_libs[@]}
+  ${_system_libs[libjpeg]+libjpeg_turbo}
+)
+depends+=(${_system_libs[@]})
+
+# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys.
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+_google_default_client_id=413772536636.apps.googleusercontent.com
+_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4
+
+prepare() {
+  cd "$srcdir/$pkgname-$pkgver"
+
+  # https://crbug.com/710701
+  local _chrome_build_hash=$(base64 -d ../chromium-$pkgver.txt |
+    grep -Po '^parent \K[0-9a-f]{40}$')
+  if [[ -z $_chrome_build_hash ]]; then
+    error "Unable to find Chrome build hash."
+    return 1
+  fi
+  echo "LASTCHANGE=$_chrome_build_hash-" >build/util/LASTCHANGE
+
+  # Enable support for the Widevine CDM plugin
+  # libwidevinecdm.so is not included, but can be copied over from Chrome
+  # (Version string doesn't seem to matter so let's go with "Pinkie Pie")
+  sed "s/@WIDEVINE_VERSION@/Pinkie Pie/" ../chromium-widevine.patch |
+    patch -Np1
+
+  # https://crbug.com/822820
+  patch -Np1 -i ../fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch
+
+  # https://crbug.com/skia/6663#c10
+  patch -Np4 -i ../chromium-skia-harmony.patch
+
+  # Fixes from Gentoo
+  patch -Np1 -i ../chromium-clang-r2.patch
+  patch -Np1 -i ../chromium-math.h-r0.patch
+  patch -Np1 -i ../chromium-stdint.patch
+
+  # Use Python 2
+  find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} +
+
+  # There are still a lot of relative calls which need a workaround
+  mkdir "$srcdir/python2-path"
+  ln -s /usr/bin/python2 "$srcdir/python2-path/python"
+
+  mkdir -p third_party/node/linux/node-linux-x64/bin
+  ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
+
+  # Remove bundled libraries for which we will use the system copies; this
+  # *should* do what the remove_bundled_libraries.py script does, with the
+  # added benefit of not having to list all the remaining libraries
+  local _lib
+  for _lib in ${_unwanted_bundled_libs[@]}; do
+    find -type f -path "*third_party/$_lib/*" \
+      \! -path "*third_party/$_lib/chromium/*" \
+      \! -path "*third_party/$_lib/google/*" \
+      \! -path './base/third_party/icu/*' \
+      \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \
+      \! -path './third_party/yasm/run_yasm.py' \
+      \! -regex '.*\.\(gn\|gni\|isolate\)' \
+      -delete
+  done
+
+  python2 build/linux/unbundle/replace_gn_files.py \
+    --system-libraries "${!_system_libs[@]}"
+}
+
+build() {
+  make -C chromium-launcher-$_launcher_ver
+
+  cd "$srcdir/$pkgname-$pkgver"
+
+  if check_buildoption ccache y; then
+    # Avoid falling back to preprocessor mode when sources contain time macros
+    export CCACHE_SLOPPINESS=time_macros
+  fi
+
+  export PATH="$srcdir/python2-path:$PATH"
+  export TMPDIR="$srcdir/temp"
+  mkdir -p "$TMPDIR"
+
+  export CC=clang
+  export CXX=clang++
+  export AR=ar
+  export NM=nm
+
+  local _flags=(
+    'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+    'host_toolchain="//build/toolchain/linux/unbundle:default"'
+    'is_clang=true'
+    'clang_use_chrome_plugins=false'
+    'is_cfi=true'
+    'is_debug=false'
+    'fatal_linker_warnings=false'
+    'treat_warnings_as_errors=false'
+    'fieldtrial_testing_like_official_build=true'
+    'remove_webcore_debug_symbols=true'
+    'ffmpeg_branding="Chrome"'
+    'proprietary_codecs=true'
+    'link_pulseaudio=true'
+    'use_gnome_keyring=false'
+    'use_gold=false'
+    'use_sysroot=false'
+    'linux_use_bundled_binutils=false'
+    'use_custom_libcxx=false'
+    'enable_hangout_services_extension=true'
+    'enable_widevine=true'
+    'enable_nacl=false'
+    'enable_swiftshader=false'
+    "google_api_key=\"${_google_api_key}\""
+    "google_default_client_id=\"${_google_default_client_id}\""
+    "google_default_client_secret=\"${_google_default_client_secret}\""
+  )
+
+  if check_option strip y; then
+    CFLAGS+='   -fno-unwind-tables -fno-asynchronous-unwind-tables'
+    CXXFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables'
+    CPPFLAGS+=' -DNO_UNWIND_TABLES'
+  fi
+
+  python2 tools/gn/bootstrap/bootstrap.py -s --no-clean
+  out/Release/gn gen out/Release --args="${_flags[*]}" \
+    --script-executable=/usr/bin/python2
+
+  ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter
+}
+
+package() {
+  cd chromium-launcher-$_launcher_ver
+  make PREFIX=/usr DESTDIR="$pkgdir" install
+  install -Dm644 LICENSE \
+    "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
+
+  cd "$srcdir/$pkgname-$pkgver"
+
+  install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
+  install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
+  ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver"
+
+  install -Dm644 chrome/installer/linux/common/desktop.template \
+    "$pkgdir/usr/share/applications/chromium.desktop"
+  install -Dm644 chrome/app/resources/manpage.1.in \
+    "$pkgdir/usr/share/man/man1/chromium.1"
+  sed -i \
+    -e "s/@@MENUNAME@@/Chromium/g" \
+    -e "s/@@PACKAGE@@/chromium/g" \
+    -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \
+    "$pkgdir/usr/share/applications/chromium.desktop" \
+    "$pkgdir/usr/share/man/man1/chromium.1"
+
+  cp \
+    out/Release/{chrome_{100,200}_percent,resources}.pak \
+    out/Release/{*.bin,chromedriver,libwidevinecdmadapter.so} \
+    "$pkgdir/usr/lib/chromium/"
+  install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
+
+  if [[ -z ${_system_libs[icu]+set} ]]; then
+    cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/"
+  fi
+
+  for size in 22 24 48 64 128 256; do
+    install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
+      "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+  done
+
+  for size in 16 32; do
+    install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
+      "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png"
+  done
+
+  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:

Copied: chromium/repos/testing-x86_64/chromium-clang-r2.patch (from rev 320124, chromium/trunk/chromium-clang-r2.patch)
===================================================================
--- testing-x86_64/chromium-clang-r2.patch	                        (rev 0)
+++ testing-x86_64/chromium-clang-r2.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,21 @@
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -422,18 +422,6 @@
+     cflags += [ "-fcolor-diagnostics" ]
+   }
+ 
+-  # TODO(hans): Remove this once Clang generates better optimized debug info by
+-  # default. https://crbug.com/765793
+-  if (is_clang && !is_nacl && current_toolchain == host_toolchain &&
+-      target_os != "chromeos") {
+-    cflags += [
+-      "-Xclang",
+-      "-mllvm",
+-      "-Xclang",
+-      "-instcombine-lower-dbg-declare=0",
+-    ]
+-  }
+-
+   # Print absolute paths in diagnostics. There is no precedent for doing this
+   # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and
+   # Windows developers rely on it (crbug.com/636109) so only do this on Windows.

Copied: chromium/repos/testing-x86_64/chromium-math.h-r0.patch (from rev 320124, chromium/trunk/chromium-math.h-r0.patch)
===================================================================
--- testing-x86_64/chromium-math.h-r0.patch	                        (rev 0)
+++ testing-x86_64/chromium-math.h-r0.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,29 @@
+From 9f63f94a11abc34d40ede8b8712fa15b5844a8c0 Mon Sep 17 00:00:00 2001
+From: Tom Anderson <thomasanderson at chromium.org>
+Date: Sat, 27 Jan 2018 20:03:37 +0000
+Subject: [PATCH] Fix build with glibc 2.27
+
+BUG=806340
+TBR=hamelphi at chromium.org
+
+Change-Id: Ib4e5091212d874d9ad88f3e9a1fdfee3ed7e0d5e
+Reviewed-on: https://chromium-review.googlesource.com/890059
+Reviewed-by: Thomas Anderson <thomasanderson at chromium.org>
+Reviewed-by: Philippe Hamel <hamelphi at chromium.org>
+Commit-Queue: Thomas Anderson <thomasanderson at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#532249}
+---
+
+diff --git a/components/assist_ranker/ranker_example_util.cc b/components/assist_ranker/ranker_example_util.cc
+index 54d4dbd..ceedd8f 100644
+--- a/components/assist_ranker/ranker_example_util.cc
++++ b/components/assist_ranker/ranker_example_util.cc
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ 
++#include <math.h>
++
+ #include "components/assist_ranker/ranker_example_util.h"
+ #include "base/bit_cast.h"
+ #include "base/format_macros.h"

Copied: chromium/repos/testing-x86_64/chromium-skia-harmony.patch (from rev 320124, chromium/trunk/chromium-skia-harmony.patch)
===================================================================
--- testing-x86_64/chromium-skia-harmony.patch	                        (rev 0)
+++ testing-x86_64/chromium-skia-harmony.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,77 @@
+--- qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig	2017-10-10 17:42:06.956950985 +0200
++++ qtwebengine-opensource-src-5.9.1/src/3rdparty/chromium/third_party/skia/src/ports/SkFontHost_FreeType.cpp	2017-10-10 17:46:05.824187787 +0200
+@@ -99,8 +99,6 @@
+     FreeTypeLibrary()
+         : fGetVarDesignCoordinates(nullptr)
+         , fLibrary(nullptr)
+-        , fIsLCDSupported(false)
+-        , fLCDExtra(0)
+     {
+         if (FT_New_Library(&gFTMemory, &fLibrary)) {
+             return;
+@@ -147,12 +145,7 @@
+         }
+ #endif
+ 
+-        // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs.
+-        // The default has changed over time, so this doesn't mean the same thing to all users.
+-        if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) {
+-            fIsLCDSupported = true;
+-            fLCDExtra = 2; //Using a filter adds one full pixel to each side.
+-        }
++        FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT);
+     }
+     ~FreeTypeLibrary() {
+         if (fLibrary) {
+@@ -161,8 +153,6 @@
+     }
+ 
+     FT_Library library() { return fLibrary; }
+-    bool isLCDSupported() { return fIsLCDSupported; }
+-    int lcdExtra() { return fLCDExtra; }
+ 
+     // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1.
+     // Prior to this there was no way to get the coordinates out of the FT_Face.
+@@ -173,8 +163,6 @@
+ 
+ private:
+     FT_Library fLibrary;
+-    bool fIsLCDSupported;
+-    int fLCDExtra;
+ 
+     // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0.
+     // The following platforms provide FreeType of at least 2.4.0.
+@@ -704,17 +692,6 @@
+         rec->fTextSize = SkIntToScalar(1 << 14);
+     }
+ 
+-    if (isLCD(*rec)) {
+-        // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr.
+-        SkAutoMutexAcquire ama(gFTMutex);
+-        ref_ft_library();
+-        if (!gFTLibrary->isLCDSupported()) {
+-            // If the runtime Freetype library doesn't support LCD, disable it here.
+-            rec->fMaskFormat = SkMask::kA8_Format;
+-        }
+-        unref_ft_library();
+-    }
+-
+     SkPaint::Hinting h = rec->getHinting();
+     if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) {
+         // collapse full->normal hinting if we're not doing LCD
+@@ -1115,11 +1092,11 @@
+ void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) {
+     if (isLCD(fRec)) {
+         if (fLCDIsVert) {
+-            glyph->fHeight += gFTLibrary->lcdExtra();
+-            glyph->fTop -= gFTLibrary->lcdExtra() >> 1;
++            glyph->fHeight += 2;
++            glyph->fTop -= 1;
+         } else {
+-            glyph->fWidth += gFTLibrary->lcdExtra();
+-            glyph->fLeft -= gFTLibrary->lcdExtra() >> 1;
++            glyph->fWidth += 2;
++            glyph->fLeft -= 1;
+         }
+     }
+ }

Copied: chromium/repos/testing-x86_64/chromium-stdint.patch (from rev 320124, chromium/trunk/chromium-stdint.patch)
===================================================================
--- testing-x86_64/chromium-stdint.patch	                        (rev 0)
+++ testing-x86_64/chromium-stdint.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,21 @@
+From 0235c2b657d936f3cdb09053776e5929fc84704b Mon Sep 17 00:00:00 2001
+From: Tomas Popela <tomas.popela at gmail.com>
+Date: Wed, 31 Jan 2018 18:57:07 +0000
+Subject: [PATCH] Add missing stdint include
+
+diff --git a/chrome/browser/vr/sample_queue.cc b/chrome/browser/vr/sample_queue.cc
+index c2ca777ce90c..53cb3aab1576 100644
+--- a/chrome/browser/vr/sample_queue.cc
++++ b/chrome/browser/vr/sample_queue.cc
+@@ -2,6 +2,8 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ 
++#include <stdint.h>
++
+ #include "chrome/browser/vr/sample_queue.h"
+ 
+ namespace vr {
+-- 
+2.16.2
+

Copied: chromium/repos/testing-x86_64/chromium-widevine.patch (from rev 320124, chromium/trunk/chromium-widevine.patch)
===================================================================
--- testing-x86_64/chromium-widevine.patch	                        (rev 0)
+++ testing-x86_64/chromium-widevine.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,10 @@
+diff -upr chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h
+--- chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h	2016-01-14 01:05:17.000000000 +0200
++++ chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h	2016-01-21 19:18:51.287978456 +0200
+@@ -12,4 +12,6 @@
+ 
+ #define WIDEVINE_CDM_AVAILABLE
+ 
++#define WIDEVINE_CDM_VERSION_STRING "@WIDEVINE_VERSION@"
++
+ #endif  // WIDEVINE_CDM_VERSION_H_

Copied: chromium/repos/testing-x86_64/chromium.install (from rev 320124, chromium/trunk/chromium.install)
===================================================================
--- testing-x86_64/chromium.install	                        (rev 0)
+++ testing-x86_64/chromium.install	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,16 @@
+post_upgrade() {
+  if (($(vercmp $2 42.0.2311.90-1) < 0)); then
+    echo ':: This Chromium package no longer supports custom flags passed via the'
+    echo '   /etc/chromium/default file (or any other files under /etc/chromium/).'
+    echo
+    echo '   The new /usr/bin/chromium launcher script will automatically detect'
+    echo '   Pepper Flash (if installed) and pass the correct flags to Chromium.'
+    echo
+    echo '   If you need to pass extra command-line arguments to Chromium, you'
+    echo '   can put them in a "chromium-flags.conf" file under $HOME/.config/'
+    echo '   (or $XDG_CONFIG_HOME). Arguments are split on whitespace and shell'
+    echo '   quoting rules apply but no further parsing is performed.'
+  fi
+}
+
+# vim:set ts=2 sw=2 et:

Copied: chromium/repos/testing-x86_64/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch (from rev 320124, chromium/trunk/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch)
===================================================================
--- testing-x86_64/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch	                        (rev 0)
+++ testing-x86_64/fix-crash-in-is_cfi-true-builds-with-unbundled-ICU.patch	2018-03-24 04:10:50 UTC (rev 320125)
@@ -0,0 +1,53 @@
+From f15e8b573ada0fcd643ae393484214b1c7c940f8 Mon Sep 17 00:00:00 2001
+From: Evangelos Foutras <evangelos at foutrelis.com>
+Date: Sat, 24 Mar 2018 00:04:33 +0000
+Subject: [PATCH] Fix crash in is_cfi=true builds with unbundled ICU
+
+Ensure ICU symbols have public visibility and are thus excluded from CFI
+checks and whole-program optimization. The former caused a startup crash
+and the latter has the potential to break virtual calls in weird ways.
+
+BUG=822820
+
+Change-Id: Ia809eefcb9e93b3c612f2381d394db83bbc67120
+Reviewed-on: https://chromium-review.googlesource.com/978008
+Reviewed-by: Peter Collingbourne <pcc at chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson at chromium.org>
+Commit-Queue: Thomas Anderson <thomasanderson at chromium.org>
+Cr-Commit-Position: refs/heads/master@{#545638}
+---
+ build/linux/unbundle/icu.gn | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
+index 5bdd91555df7..4450e409dba5 100644
+--- a/build/linux/unbundle/icu.gn
++++ b/build/linux/unbundle/icu.gn
+@@ -17,6 +17,24 @@ config("icu_config") {
+     "USING_SYSTEM_ICU=1",
+     "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
+     "UCHAR_TYPE=uint16_t",
++
++    # U_EXPORT (defined in unicode/platform.h) is used to set public visibility
++    # on classes through the U_COMMON_API and U_I18N_API macros (among others).
++    # When linking against the system ICU library, we want its symbols to have
++    # public LTO visibility. This disables CFI checks for the ICU classes and
++    # allows whole-program optimization to be applied to the rest of Chromium.
++    #
++    # Both U_COMMON_API and U_I18N_API macros would be defined to U_EXPORT only
++    # when U_COMBINED_IMPLEMENTATION is defined (see unicode/utypes.h). Because
++    # we override the default system UCHAR_TYPE (char16_t), it is not possible
++    # to use U_COMBINED_IMPLEMENTATION at this moment, meaning the U_COMMON_API
++    # and U_I18N_API macros are set to U_IMPORT which is an empty definition.
++    #
++    # Until building with UCHAR_TYPE=char16_t is supported, one way to apply
++    # public visibility (and thus public LTO visibility) to all ICU classes is
++    # to define U_IMPORT to have the same value as U_EXPORT. For more details,
++    # please see: https://crbug.com/822820
++    "U_IMPORT=U_EXPORT",
+   ]
+ }
+ 
+-- 
+2.16.3
+



More information about the arch-commits mailing list