Date: Tuesday, February 2, 2021 @ 01:27:59 Author: foutrelis Revision: 840943
archrelease: copy trunk to community-staging-x86_64 Added: electron/repos/community-staging-x86_64/ electron/repos/community-staging-x86_64/PKGBUILD (from rev 840942, electron/trunk/PKGBUILD) electron/repos/community-staging-x86_64/chromium-skia-harmony.patch (from rev 840942, electron/trunk/chromium-skia-harmony.patch) electron/repos/community-staging-x86_64/default_app-icon.patch (from rev 840942, electron/trunk/default_app-icon.patch) electron/repos/community-staging-x86_64/electron.desktop (from rev 840942, electron/trunk/electron.desktop) electron/repos/community-staging-x86_64/icu68.patch (from rev 840942, electron/trunk/icu68.patch) electron/repos/community-staging-x86_64/use-system-libraries-in-node.patch (from rev 840942, electron/trunk/use-system-libraries-in-node.patch) electron/repos/community-staging-x86_64/v8-icu68.patch (from rev 840942, electron/trunk/v8-icu68.patch) ------------------------------------+ PKGBUILD | 203 ++++++++++++++++ chromium-skia-harmony.patch | 14 + default_app-icon.patch | 21 + electron.desktop | 7 icu68.patch | 421 +++++++++++++++++++++++++++++++++++ use-system-libraries-in-node.patch | 53 ++++ v8-icu68.patch | 192 +++++++++++++++ 7 files changed, 911 insertions(+) Copied: electron/repos/community-staging-x86_64/PKGBUILD (from rev 840942, electron/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,203 @@ +# Maintainer: Nicola Squartini <tens...@gmail.com> + +pkgname=electron +pkgver=11.2.1 +_commit=8805b996e0d8cfb6e3921f9b586366bafb125b59 +_chromiumver=87.0.4280.141 +pkgrel=2 +pkgdesc='Build cross platform desktop apps with web technologies' +arch=('x86_64') +url='https://electronjs.org/' +license=('MIT' 'custom') +depends=('c-ares' 'ffmpeg' 'gtk3' 'http-parser' 'libevent' 'libxslt' 'minizip' + 'nss' 're2' 'snappy') +makedepends=('clang' 'git' 'gn' 'gperf' 'harfbuzz-icu' 'java-runtime-headless' + 'jsoncpp' 'libnotify' 'lld' 'llvm' 'ninja' 'npm' 'pciutils' 'yarn' + 'python2' 'wget') +optdepends=('kde-cli-tools: file deletion support (kioclient5)' + 'libappindicator-gtk3: StatusNotifierItem support' + 'trash-cli: file deletion support (trash-put)' + "xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)") +source=('git+https://github.com/electron/electron.git' + 'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git' + "${pkgname}.desktop" + 'default_app-icon.patch' + 'use-system-libraries-in-node.patch' + 'icu68.patch' + 'v8-icu68.patch' + 'chromium-skia-harmony.patch' + ) +sha256sums=('SKIP' + 'SKIP' + '5270db01f3f8aaa5137dec275a02caa832b7f2e37942e068cba8d28b3a29df39' + 'dd2d248831dd4944d385ebf008426e66efe61d6fdf66f8932c963a12167947b4' + '0c54e488780e984c4be5879fa43d0e6fd23edc2207a7ec607c7886fca5115a12' + '38fb5218331d6e03915490dab64f7b8bf26833a581d1aaa02090437c67e9439c' + '6e919c9712d8fe6c2918778df1f8c2ee0675a87a48be5d2aaa54e320703ced4b' + '771292942c0901092a402cc60ee883877a99fb804cb54d568c8c6c94565a48e1' + ) + +_system_libs=('ffmpeg' + 'flac' + 'fontconfig' + 'freetype' + 'harfbuzz-ng' + 'icu' + 'libdrm' + 'libevent' + 'libjpeg' + 'libpng' +# 'libvpx' + 'libwebp' + 'libxml' + 'libxslt' +# 'openh264' + 'opus' + 're2' + 'snappy' + 'zlib' + ) + +prepare() { + mkdir -p "${srcdir}"/python2-path + ln -sf /usr/bin/python2 "${srcdir}/python2-path/python" + export PATH="${srcdir}/python2-path:${PATH}:${srcdir}/depot_tools" + + echo "Fetching chromium..." + git clone --branch=${_chromiumver} --depth=1 \ + https://chromium.googlesource.com/chromium/src.git + + echo "solutions = [ + { + \"name\": \"src/electron\", + \"url\": \"file://${srcdir}/electron@${_commit}\", + \"deps_file\": \"DEPS\", + \"managed\": False, + \"custom_deps\": { + \"src\": None, + }, + \"custom_vars\": {}, + }, +]" > .gclient + + python2 "${srcdir}/depot_tools/gclient.py" sync \ + --with_branch_heads \ + --with_tags \ + --nohooks + + sed -e "s/'am'/'apply'/" -i src/electron/script/lib/git.py + + echo "Running hooks..." + # python2 "${srcdir}/depot_tools/gclient.py" runhooks + python2 src/build/landmines.py + python2 src/build/util/lastchange.py -o src/build/util/LASTCHANGE + python2 src/build/util/lastchange.py -m GPU_LISTS_VERSION \ + --revision-id-only --header src/gpu/config/gpu_lists_version.h + python2 src/build/util/lastchange.py -m SKIA_COMMIT_HASH \ + -s src/third_party/skia --header src/skia/ext/skia_commit_hash.h + # Create sysmlink to system clang-format + ln -s /usr/bin/clang-format src/buildtools/linux64 + # Create sysmlink to system Node.js + mkdir -p src/third_party/node/linux/node-linux-x64/bin + ln -sf /usr/bin/node src/third_party/node/linux/node-linux-x64/bin + python2 src/third_party/depot_tools/download_from_google_storage.py \ + --no_resume --extract --no_auth --bucket chromium-nodejs \ + -s src/third_party/node/node_modules.tar.gz.sha1 + vpython src/tools/download_optimization_profile.py \ + --newest_state=src/chrome/android/profiles/newest.txt \ + --local_state=src/chrome/android/profiles/local.txt \ + --output_name=src/chrome/android/profiles/afdo.prof \ + --gs_url_base=chromeos-prebuilt/afdo-job/llvm + vpython src/tools/update_pgo_profiles.py \ + --target=linux \ + update \ + --gs-url-base=chromium-optimization-profiles/pgo_profiles + python2 src/electron/script/apply_all_patches.py \ + src/electron/patches/config.json + cd src/electron + yarn install --frozen-lockfile + cd .. + + echo "Applying local patches..." + patch -Np1 -i ../icu68.patch + patch -Np1 -d v8 <../v8-icu68.patch + patch -Np0 -i ../chromium-skia-harmony.patch + patch -Np1 -i ../use-system-libraries-in-node.patch + patch -Np1 -i ../default_app-icon.patch # Icon from .desktop file + + echo "Patching Chromium for using system libraries..." + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py + for lib in $(printf "%s\n" "${_system_libs[@]}" | sed 's/^libjpeg$/&_turbo/'); do + third_party_dir="third_party/${lib}" + if [ ! -d ${third_party_dir} ]; then + third_party_dir="base/${third_party_dir}" + fi + find ${third_party_dir} -type f \ + \! -path "${third_party_dir}/chromium/*" \ + \! -path "${third_party_dir}/google/*" \ + \! -path 'third_party/harfbuzz-ng/utils/hb_scoped.h' \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + done + python2 build/linux/unbundle/replace_gn_files.py \ + --system-libraries \ + "${_system_libs[@]}" +} + +build() { + export CC=clang + export CXX=clang++ + export AR=ar + export NM=nm + + # Do not warn about unknown warning options + CFLAGS+=' -Wno-unknown-warning-option' + CXXFLAGS+=' -Wno-unknown-warning-option' + + cd src + export CHROMIUM_BUILDTOOLS_PATH="${PWD}/buildtools" + GN_EXTRA_ARGS=' + blink_symbol_level = 0 + clang_use_chrome_plugins = false + custom_toolchain = "//build/toolchain/linux/unbundle:default" + host_toolchain = "//build/toolchain/linux/unbundle:default" + icu_use_data_file = false + is_component_ffmpeg = false + link_pulseaudio = true + treat_warnings_as_errors = false + use_custom_libcxx = false + use_gnome_keyring = false + use_sysroot = false + ' + gn gen out/Release \ + --args="import(\"//electron/build/args/release.gn\") ${GN_EXTRA_ARGS}" + ninja -C out/Release electron + # Strip before zip to avoid + # zipfile.LargeZipFile: Filesize would require ZIP64 extensions + strip -s out/Release/electron + ninja -C out/Release electron_dist_zip + # ninja -C out/Release third_party/electron_node:headers +} + +package() { + install -dm755 "${pkgdir}/usr/lib/${pkgname}" + bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname}" + + chmod u+s "${pkgdir}/usr/lib/${pkgname}/chrome-sandbox" + + install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}" + for l in "${pkgdir}/usr/lib/${pkgname}"/{LICENSE,LICENSES.chromium.html}; do + ln -s \ + "$(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname}" "${l}")" \ + "${pkgdir}/usr/share/licenses/${pkgname}" + done + + install -dm755 "${pkgdir}"/usr/bin + ln -s "../lib/${pkgname}/electron" "${pkgdir}/usr/bin/${pkgname}" + + # Install .desktop and icon file (see default_app-icon.patch) + install -Dm644 -t "${pkgdir}/usr/share/applications" "${pkgname}.desktop" + install -Dm644 src/electron/default_app/icon.png \ + "${pkgdir}/usr/share/pixmaps/${pkgname}.png" # hicolor has no 1024x1024 +} Copied: electron/repos/community-staging-x86_64/chromium-skia-harmony.patch (from rev 840942, electron/trunk/chromium-skia-harmony.patch) =================================================================== --- community-staging-x86_64/chromium-skia-harmony.patch (rev 0) +++ community-staging-x86_64/chromium-skia-harmony.patch 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,14 @@ +--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-07-19 11:08:34.770972665 +0000 ++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp 2019-07-19 11:08:44.274442065 +0000 +@@ -128,9 +128,9 @@ public: + : fGetVarDesignCoordinates(nullptr) + , fGetVarAxisFlags(nullptr) + , fLibrary(nullptr) +- , fIsLCDSupported(false) ++ , fIsLCDSupported(true) + , fLightHintingIsYOnly(false) +- , fLCDExtra(0) ++ , fLCDExtra(2) + { + if (FT_New_Library(&gFTMemory, &fLibrary)) { + return; Copied: electron/repos/community-staging-x86_64/default_app-icon.patch (from rev 840942, electron/trunk/default_app-icon.patch) =================================================================== --- community-staging-x86_64/default_app-icon.patch (rev 0) +++ community-staging-x86_64/default_app-icon.patch 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,21 @@ +--- a/electron/default_app/default_app.ts ++++ b/electron/default_app/default_app.ts +@@ -60,7 +60,7 @@ + }; + + if (process.platform === 'linux') { +- options.icon = path.join(__dirname, 'icon.png'); ++ options.icon = '/usr/share/pixmaps/electron.png'; + } + + mainWindow = new BrowserWindow(options); +--- a/electron/filenames.gni ++++ b/electron/filenames.gni +@@ -6,7 +6,6 @@ + ] + + default_app_static_sources = [ +- "default_app/icon.png", + "default_app/index.html", + "default_app/package.json", + "default_app/styles.css", Copied: electron/repos/community-staging-x86_64/electron.desktop (from rev 840942, electron/trunk/electron.desktop) =================================================================== --- community-staging-x86_64/electron.desktop (rev 0) +++ community-staging-x86_64/electron.desktop 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Name=Electron +Icon=electron +Exec=electron %u +Categories=Development;GTK; +StartupNotify=true Copied: electron/repos/community-staging-x86_64/icu68.patch (from rev 840942, electron/trunk/icu68.patch) =================================================================== --- community-staging-x86_64/icu68.patch (rev 0) +++ community-staging-x86_64/icu68.patch 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,421 @@ +From 4d16e52a5e6771c4aa5f892e14486bf0e87027d1 Mon Sep 17 00:00:00 2001 +From: Frank Tang <ft...@chromium.org> +Date: Tue, 20 Oct 2020 00:11:50 +0000 +Subject: [PATCH] Prepare for landing ICU68 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In the landing process of ICU68 we found these need to be changed +since ICU68 no longer define TRUE and FALSE for UBool to +avoid C++20 problem. + +Bug: 1138555 +Change-Id: I64fd98c99864aa86b07280537a780105cb0eabbe +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2473522 +Reviewed-by: Frank Tang <ft...@chromium.org> +Reviewed-by: Colin Blundell <blund...@chromium.org> +Reviewed-by: Dominic Battré <bat...@chromium.org> +Reviewed-by: Guillaume Jenkins <gu...@google.com> +Reviewed-by: Jungshik Shin <js...@chromium.org> +Reviewed-by: Mihai Sardarescu <msa...@chromium.org> +Reviewed-by: Dave Tapuska <dtapu...@chromium.org> +Reviewed-by: Mustafa Emre Acer <mea...@chromium.org> +Reviewed-by: Marian Fechete <maria...@google.com> +Reviewed-by: Matthew Denton <mpden...@chromium.org> +Commit-Queue: Frank Tang <ft...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#818713} +--- + base/i18n/icu_util.cc | 2 +- + base/i18n/string_compare.cc | 4 ++-- + base/i18n/time_formatting.cc | 2 +- + .../autofill/core/common/autofill_regexes.cc | 8 ++++---- + .../browser/string_conversions_util.cc | 6 +++--- + .../public/identity_manager/identity_utils.cc | 2 +- + .../renderer/spellcheck_worditerator.cc | 2 +- + .../spoof_checks/idn_spoof_checker.cc | 4 ++-- + .../spoof_checks/skeleton_generator.cc | 2 +- + content/zygote/zygote_linux.cc | 2 +- + .../time_zone_monitor_android.cc | 2 +- + .../renderer/core/exported/web_view_test.cc | 12 ++++++------ + .../blink/renderer/platform/text/locale_icu.cc | 4 ++-- + .../platform/text/text_break_iterator_icu.cc | 16 ++++++++-------- + .../renderer/platform/text/unicode_utilities.cc | 2 +- + .../renderer/platform/wtf/text/text_codec_icu.cc | 2 +- + ui/base/l10n/formatter.cc | 6 +++--- + 17 files changed, 39 insertions(+), 39 deletions(-) + +diff --git a/base/i18n/icu_util.cc b/base/i18n/icu_util.cc +index b225f1d46c0b7..20debbe655c46 100644 +--- a/base/i18n/icu_util.cc ++++ b/base/i18n/icu_util.cc +@@ -327,7 +327,7 @@ void InitializeIcuTimeZone() { + // https://ssl.icu-project.org/trac/ticket/13208 . + string16 zone_id = android::GetDefaultTimeZoneId(); + icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone( +- icu::UnicodeString(FALSE, zone_id.data(), zone_id.length()))); ++ icu::UnicodeString(false, zone_id.data(), zone_id.length()))); + #elif defined(OS_FUCHSIA) + // The platform-specific mechanisms used by ICU's detectHostTimeZone() to + // determine the default time zone will not work on Fuchsia. Therefore, +diff --git a/base/i18n/string_compare.cc b/base/i18n/string_compare.cc +index c0e83c6f7306f..e4fb687c14884 100644 +--- a/base/i18n/string_compare.cc ++++ b/base/i18n/string_compare.cc +@@ -18,8 +18,8 @@ UCollationResult CompareString16WithCollator(const icu::Collator& collator, + StringPiece16 rhs) { + UErrorCode error = U_ZERO_ERROR; + UCollationResult result = collator.compare( +- icu::UnicodeString(FALSE, lhs.data(), static_cast<int>(lhs.length())), +- icu::UnicodeString(FALSE, rhs.data(), static_cast<int>(rhs.length())), ++ icu::UnicodeString(false, lhs.data(), static_cast<int>(lhs.length())), ++ icu::UnicodeString(false, rhs.data(), static_cast<int>(rhs.length())), + error); + DCHECK(U_SUCCESS(error)); + return result; +diff --git a/base/i18n/time_formatting.cc b/base/i18n/time_formatting.cc +index c769b57d7162a..c085f5ef2448a 100644 +--- a/base/i18n/time_formatting.cc ++++ b/base/i18n/time_formatting.cc +@@ -240,7 +240,7 @@ bool TimeDurationFormatWithSeconds(const TimeDelta time, + icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE); + measure_format.formatMeasures(measures, 3, formatted, ignore, status); + *out = i18n::UnicodeStringToString16(formatted); +- return U_SUCCESS(status) == TRUE; ++ return U_SUCCESS(status); + } + + string16 DateIntervalFormat(const Time& begin_time, +diff --git a/components/autofill/core/common/autofill_regexes.cc b/components/autofill/core/common/autofill_regexes.cc +index 02254fa266ac5..1cf12f310d077 100644 +--- a/components/autofill/core/common/autofill_regexes.cc ++++ b/components/autofill/core/common/autofill_regexes.cc +@@ -43,7 +43,7 @@ class AutofillRegexes { + icu::RegexMatcher* AutofillRegexes::GetMatcher(const base::string16& pattern) { + auto it = matchers_.find(pattern); + if (it == matchers_.end()) { +- const icu::UnicodeString icu_pattern(FALSE, pattern.data(), ++ const icu::UnicodeString icu_pattern(false, pattern.data(), + pattern.length()); + + UErrorCode status = U_ZERO_ERROR; +@@ -71,21 +71,21 @@ bool MatchesPattern(const base::string16& input, + base::AutoLock lock(*g_lock); + + icu::RegexMatcher* matcher = g_autofill_regexes->GetMatcher(pattern); +- icu::UnicodeString icu_input(FALSE, input.data(), input.length()); ++ icu::UnicodeString icu_input(false, input.data(), input.length()); + matcher->reset(icu_input); + + UErrorCode status = U_ZERO_ERROR; + UBool matched = matcher->find(0, status); + DCHECK(U_SUCCESS(status)); + +- if (matched == TRUE && match) { ++ if (matched && match) { + icu::UnicodeString match_unicode = + matcher->group(group_to_be_captured, status); + DCHECK(U_SUCCESS(status)); + *match = base::i18n::UnicodeStringToString16(match_unicode); + } + +- return matched == TRUE; ++ return matched; + } + + } // namespace autofill +diff --git a/components/autofill_assistant/browser/string_conversions_util.cc b/components/autofill_assistant/browser/string_conversions_util.cc +index 212bafa637288..1d00d68019fa3 100644 +--- a/components/autofill_assistant/browser/string_conversions_util.cc ++++ b/components/autofill_assistant/browser/string_conversions_util.cc +@@ -39,13 +39,13 @@ bool UnicodeToUTF8(const std::vector<UChar32>& source, std::string* target) { + // |target|. + bool AppendUnicodeToUTF8(const UChar32 source, std::string* target) { + char bytes[4]; +- UBool error = FALSE; ++ UBool error = false; + size_t offset = 0; + U8_APPEND(bytes, offset, base::size(bytes), source, error); +- if (error == FALSE) { ++ if (error == false) { + target->append(bytes, offset); + } +- return error == FALSE; ++ return !error; + } + + } // namespace autofill_assistant +diff --git a/components/signin/public/identity_manager/identity_utils.cc b/components/signin/public/identity_manager/identity_utils.cc +index 1c414e20e5de4..014d6746d95f2 100644 +--- a/components/signin/public/identity_manager/identity_utils.cc ++++ b/components/signin/public/identity_manager/identity_utils.cc +@@ -33,7 +33,7 @@ bool IsUsernameAllowedByPattern(base::StringPiece username, + + // See if the username matches the policy-provided pattern. + UErrorCode status = U_ZERO_ERROR; +- const icu::UnicodeString icu_pattern(FALSE, utf16_pattern.data(), ++ const icu::UnicodeString icu_pattern(false, utf16_pattern.data(), + utf16_pattern.length()); + icu::RegexMatcher matcher(icu_pattern, UREGEX_CASE_INSENSITIVE, status); + if (!U_SUCCESS(status)) { +diff --git a/components/spellcheck/renderer/spellcheck_worditerator.cc b/components/spellcheck/renderer/spellcheck_worditerator.cc +index ec16fefbebc91..3b1f060866021 100644 +--- a/components/spellcheck/renderer/spellcheck_worditerator.cc ++++ b/components/spellcheck/renderer/spellcheck_worditerator.cc +@@ -442,7 +442,7 @@ bool SpellcheckWordIterator::Normalize(size_t input_start, + // spellchecker and we need manual normalization as well. The normalized + // text does not have to be NUL-terminated since its characters are copied to + // string16, which adds a NUL character when we need. +- icu::UnicodeString input(FALSE, &text_[input_start], ++ icu::UnicodeString input(false, &text_[input_start], + base::checked_cast<int32_t>(input_length)); + UErrorCode status = U_ZERO_ERROR; + icu::UnicodeString output; +diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc +index 6d66a7c4db885..d73192b1426a4 100644 +--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc ++++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc +@@ -368,7 +368,7 @@ IDNSpoofChecker::Result IDNSpoofChecker::SafeToDisplayAsUnicode( + return Result::kICUSpoofChecks; + } + +- icu::UnicodeString label_string(FALSE /* isTerminated */, label.data(), ++ icu::UnicodeString label_string(false /* isTerminated */, label.data(), + base::checked_cast<int32_t>(label.size())); + + // A punycode label with 'xn--' prefix is not subject to the URL +@@ -711,7 +711,7 @@ bool IDNSpoofChecker::IsWholeScriptConfusableAllowedForTLD( + base::StringPiece tld, + base::StringPiece16 tld_unicode) { + icu::UnicodeString tld_string( +- FALSE /* isTerminated */, tld_unicode.data(), ++ false /* isTerminated */, tld_unicode.data(), + base::checked_cast<int32_t>(tld_unicode.size())); + // Allow if the TLD contains any letter from the script, in which case it's + // likely to be a TLD in that script. +diff --git a/components/url_formatter/spoof_checks/skeleton_generator.cc b/components/url_formatter/spoof_checks/skeleton_generator.cc +index 9628626600df5..9a779018ebfae 100644 +--- a/components/url_formatter/spoof_checks/skeleton_generator.cc ++++ b/components/url_formatter/spoof_checks/skeleton_generator.cc +@@ -116,7 +116,7 @@ SkeletonGenerator::~SkeletonGenerator() = default; + Skeletons SkeletonGenerator::GetSkeletons(base::StringPiece16 hostname) { + Skeletons skeletons; + size_t hostname_length = hostname.length() - (hostname.back() == '.' ? 1 : 0); +- icu::UnicodeString host(FALSE, hostname.data(), hostname_length); ++ icu::UnicodeString host(false, hostname.data(), hostname_length); + // If input has any characters outside Latin-Greek-Cyrillic and [0-9._-], + // there is no point in getting rid of diacritics because combining marks + // attached to non-LGC characters are already blocked. +diff --git a/content/zygote/zygote_linux.cc b/content/zygote/zygote_linux.cc +index 95d5a82c25082..b6d8e5a29c55e 100644 +--- a/content/zygote/zygote_linux.cc ++++ b/content/zygote/zygote_linux.cc +@@ -557,7 +557,7 @@ base::ProcessId Zygote::ReadArgsAndFork(base::PickleIterator iter, + if (!iter.ReadString16(&timezone_id)) + return -1; + icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone( +- icu::UnicodeString(FALSE, timezone_id.data(), timezone_id.length()))); ++ icu::UnicodeString(false, timezone_id.data(), timezone_id.length()))); + + if (!iter.ReadInt(&numfds)) + return -1; +diff --git a/services/device/time_zone_monitor/time_zone_monitor_android.cc b/services/device/time_zone_monitor/time_zone_monitor_android.cc +index 818670a821e41..f57f9724e5d48 100644 +--- a/services/device/time_zone_monitor/time_zone_monitor_android.cc ++++ b/services/device/time_zone_monitor/time_zone_monitor_android.cc +@@ -34,7 +34,7 @@ void TimeZoneMonitorAndroid::TimeZoneChangedFromJava( + // See base/i18n/icu_util.cc:InitializeIcuTimeZone() for more information. + base::string16 zone_id = base::android::GetDefaultTimeZoneId(); + std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createTimeZone( +- icu::UnicodeString(FALSE, zone_id.data(), zone_id.length()))); ++ icu::UnicodeString(false, zone_id.data(), zone_id.length()))); + UpdateIcuAndNotifyClients(std::move(new_zone)); + } + +diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc +index a6b9552bb18d9..36809d914d1af 100644 +--- a/third_party/blink/renderer/core/exported/web_view_test.cc ++++ b/third_party/blink/renderer/core/exported/web_view_test.cc +@@ -4868,18 +4868,18 @@ TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeeded) { + + TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateDom) { + // Test dom mutation. +- TestEachMouseEvent("mutateDom", FALSE); ++ TestEachMouseEvent("mutateDom", false); + + // Test without any DOM mutation. +- TestEachMouseEvent("none", TRUE); ++ TestEachMouseEvent("none", true); + } + + TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { + // Test style mutation. +- TestEachMouseEvent("mutateStyle", FALSE); ++ TestEachMouseEvent("mutateStyle", false); + + // Test checkbox:indeterminate style mutation. +- TestEachMouseEvent("mutateIndeterminate", FALSE); ++ TestEachMouseEvent("mutateIndeterminate", false); + + // Test click div with :active style. + Tap("style_active"); +@@ -4888,10 +4888,10 @@ TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { + + TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithPreventDefault) { + // Test swallowing. +- TestEachMouseEvent("preventDefault", FALSE); ++ TestEachMouseEvent("preventDefault", false); + + // Test without any preventDefault. +- TestEachMouseEvent("none", TRUE); ++ TestEachMouseEvent("none", true); + } + + TEST_F(ShowUnhandledTapTest, ShowUnhandledTapUIIfNeededWithNonTriggeringNodes) { +diff --git a/third_party/blink/renderer/platform/text/locale_icu.cc b/third_party/blink/renderer/platform/text/locale_icu.cc +index 92fb99e0cc027..f991b5137728c 100644 +--- a/third_party/blink/renderer/platform/text/locale_icu.cc ++++ b/third_party/blink/renderer/platform/text/locale_icu.cc +@@ -169,12 +169,12 @@ static String GetDateFormatPattern(const UDateFormat* date_format) { + return g_empty_string; + + UErrorCode status = U_ZERO_ERROR; +- int32_t length = udat_toPattern(date_format, TRUE, nullptr, 0, &status); ++ int32_t length = udat_toPattern(date_format, true, nullptr, 0, &status); + if (status != U_BUFFER_OVERFLOW_ERROR || !length) + return g_empty_string; + StringBuffer<UChar> buffer(length); + status = U_ZERO_ERROR; +- udat_toPattern(date_format, TRUE, buffer.Characters(), length, &status); ++ udat_toPattern(date_format, true, buffer.Characters(), length, &status); + if (U_FAILURE(status)) + return g_empty_string; + return String::Adopt(buffer); +diff --git a/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc b/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc +index 5bea0079dd343..0e8c60a31599e 100644 +--- a/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc ++++ b/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc +@@ -312,13 +312,13 @@ static inline bool TextInChunkOrOutOfRange(UText* text, + text->chunkOffset = offset <= std::numeric_limits<int32_t>::max() + ? static_cast<int32_t>(offset) + : 0; +- is_accessible = TRUE; ++ is_accessible = true; + return true; + } + if (native_index >= native_length && + text->chunkNativeLimit == native_length) { + text->chunkOffset = text->chunkLength; +- is_accessible = FALSE; ++ is_accessible = false; + return true; + } + } else { +@@ -331,12 +331,12 @@ static inline bool TextInChunkOrOutOfRange(UText* text, + text->chunkOffset = offset <= std::numeric_limits<int32_t>::max() + ? static_cast<int32_t>(offset) + : 0; +- is_accessible = TRUE; ++ is_accessible = true; + return true; + } + if (native_index <= 0 && !text->chunkNativeStart) { + text->chunkOffset = 0; +- is_accessible = FALSE; ++ is_accessible = false; + return true; + } + } +@@ -347,7 +347,7 @@ static UBool TextLatin1Access(UText* text, + int64_t native_index, + UBool forward) { + if (!text->context) +- return FALSE; ++ return false; + int64_t native_length = TextNativeLength(text); + UBool is_accessible; + if (TextInChunkOrOutOfRange(text, native_index, native_length, forward, +@@ -371,7 +371,7 @@ static UBool TextLatin1Access(UText* text, + DCHECK_EQ(new_context, kPriorContext); + TextLatin1SwitchToPriorContext(text, native_index, native_length, forward); + } +- return TRUE; ++ return true; + } + + static const struct UTextFuncs kTextLatin1Funcs = { +@@ -511,7 +511,7 @@ static void TextUTF16SwitchToPriorContext(UText* text, + + static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) { + if (!text->context) +- return FALSE; ++ return false; + int64_t native_length = TextNativeLength(text); + UBool is_accessible; + if (TextInChunkOrOutOfRange(text, native_index, native_length, forward, +@@ -533,7 +533,7 @@ static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) { + DCHECK_EQ(new_context, kPriorContext); + TextUTF16SwitchToPriorContext(text, native_index, native_length, forward); + } +- return TRUE; ++ return true; + } + + static const struct UTextFuncs kTextUTF16Funcs = { +diff --git a/third_party/blink/renderer/platform/text/unicode_utilities.cc b/third_party/blink/renderer/platform/text/unicode_utilities.cc +index 2cefd5390b6b0..b8c4515dc13ca 100644 +--- a/third_party/blink/renderer/platform/text/unicode_utilities.cc ++++ b/third_party/blink/renderer/platform/text/unicode_utilities.cc +@@ -300,7 +300,7 @@ void NormalizeCharactersIntoNFCForm(const UChar* characters, + DCHECK(U_SUCCESS(status)); + int32_t input_length = static_cast<int32_t>(length); + // copy-on-write. +- icu::UnicodeString normalized(FALSE, characters, input_length); ++ icu::UnicodeString normalized(false, characters, input_length); + // In the vast majority of cases, input is already NFC. Run a quick check + // to avoid normalizing the entire input unnecessarily. + int32_t normalized_prefix_length = +diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc +index b62573550a1cb..fb8ab0530c51e 100644 +--- a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc ++++ b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc +@@ -327,7 +327,7 @@ void TextCodecICU::CreateICUConverter() const { + DLOG_IF(ERROR, err == U_AMBIGUOUS_ALIAS_WARNING) + << "ICU ambiguous alias warning for encoding: " << encoding_.GetName(); + if (converter_icu_) +- ucnv_setFallback(converter_icu_, TRUE); ++ ucnv_setFallback(converter_icu_, true); + } + + int TextCodecICU::DecodeToBuffer(UChar* target, +diff --git a/ui/base/l10n/formatter.cc b/ui/base/l10n/formatter.cc +index e4446d4786f49..684ead8c0a0df 100644 +--- a/ui/base/l10n/formatter.cc ++++ b/ui/base/l10n/formatter.cc +@@ -234,7 +234,7 @@ void Formatter::Format(Unit unit, + int value, + icu::UnicodeString* formatted_string) const { + DCHECK(simple_format_[unit]); +- DCHECK(formatted_string->isEmpty() == TRUE); ++ DCHECK(formatted_string->isEmpty()); + UErrorCode error = U_ZERO_ERROR; + FormatNumberInPlural(*simple_format_[unit], + value, formatted_string, &error); +@@ -250,7 +250,7 @@ void Formatter::Format(TwoUnits units, + << "Detailed() not implemented for your (format, length) combination!"; + DCHECK(detailed_format_[units][1]) + << "Detailed() not implemented for your (format, length) combination!"; +- DCHECK(formatted_string->isEmpty() == TRUE); ++ DCHECK(formatted_string->isEmpty()); + UErrorCode error = U_ZERO_ERROR; + FormatNumberInPlural(*detailed_format_[units][0], value_1, + formatted_string, &error); +@@ -283,7 +283,7 @@ std::unique_ptr<icu::MessageFormat> Formatter::InitFormat( + base::string16 pattern = l10n_util::GetStringUTF16(pluralities.id); + UErrorCode error = U_ZERO_ERROR; + std::unique_ptr<icu::MessageFormat> format(new icu::MessageFormat( +- icu::UnicodeString(FALSE, pattern.data(), pattern.length()), error)); ++ icu::UnicodeString(false, pattern.data(), pattern.length()), error)); + DCHECK(U_SUCCESS(error)); + if (format.get()) + return format; Copied: electron/repos/community-staging-x86_64/use-system-libraries-in-node.patch (from rev 840942, electron/trunk/use-system-libraries-in-node.patch) =================================================================== --- community-staging-x86_64/use-system-libraries-in-node.patch (rev 0) +++ community-staging-x86_64/use-system-libraries-in-node.patch 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,53 @@ +--- a/third_party/electron_node/BUILD.gn ++++ b/third_party/electron_node/BUILD.gn +@@ -42,6 +42,18 @@ + node_module_version = "" + } + ++if (is_linux) { ++ import("//build/config/linux/pkg_config.gni") ++ ++ pkg_config("cares") { ++ packages = [ "libcares" ] ++ } ++ ++ pkg_config("nghttp2") { ++ packages = [ "libnghttp2" ] ++ } ++} ++ + assert(!node_use_dtrace, "node_use_dtrace not supported in GN") + assert(!node_use_etw, "node_use_etw not supported in GN") + +@@ -190,11 +202,8 @@ + component("node_lib") { + deps = [ + ":node_js2c", +- "deps/cares", + "deps/histogram", +- "deps/http_parser", + "deps/llhttp", +- "deps/nghttp2", + "deps/uvwasi", + "//third_party/zlib", + "//third_party/brotli:dec", +@@ -210,6 +219,19 @@ + public_configs = [ ":node_lib_config" ] + include_dirs = [ "src" ] + libs = [] ++ if (is_linux) { ++ configs += [ ++ ":cares", ++ ":nghttp2", ++ ] ++ libs += [ "http_parser" ] ++ } else { ++ deps += [ ++ "deps/cares", ++ "deps/http_parser", ++ "deps/nghttp2", ++ ] ++ } + frameworks = [] + cflags_cc = [ + "-Wno-deprecated-declarations", Copied: electron/repos/community-staging-x86_64/v8-icu68.patch (from rev 840942, electron/trunk/v8-icu68.patch) =================================================================== --- community-staging-x86_64/v8-icu68.patch (rev 0) +++ community-staging-x86_64/v8-icu68.patch 2021-02-02 01:27:59 UTC (rev 840943) @@ -0,0 +1,192 @@ +From b0a7f5691113534c2cf771f2dd3cece5e93bc7d4 Mon Sep 17 00:00:00 2001 +From: Frank Tang <ft...@chromium.org> +Date: Tue, 03 Nov 2020 23:20:37 -0800 +Subject: [PATCH] Update to ICU68-1 + +ICU68-1 change the output skeleton format. So we need to change +resolvedOptions code for 68 migration. + +Chromium roll +https://chromium-review.googlesource.com/c/chromium/src/+/2474093 + +Bug: v8:10945 +Change-Id: I3b2c7fbe8abb22df8fa51287c498ca3245b8c55b +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477431 +Commit-Queue: Frank Tang <ft...@chromium.org> +Reviewed-by: Jakob Kummerow <jkumme...@chromium.org> +Reviewed-by: Shu-yu Guo <s...@chromium.org> +Cr-Commit-Position: refs/heads/master@{#70972} + +(ported to work with <ICU-68.1 -- https://bugs.gentoo.org/757606) +--- + +diff --git a/src/objects/js-number-format.cc b/src/objects/js-number-format.cc +index 45b0eab..d18b133 100644 +--- a/src/objects/js-number-format.cc ++++ b/src/objects/js-number-format.cc +@@ -389,17 +389,20 @@ Handle<String> CurrencySignString(Isolate* isolate, + Handle<String> UnitDisplayString(Isolate* isolate, + const icu::UnicodeString& skeleton) { + // Ex: skeleton as +- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-full-name" ++ // <ICU-68.1: "measure-unit/length-meter .### rounding-mode-half-up unit-width-full-name". ++ // >=ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-full-name" + if (skeleton.indexOf("unit-width-full-name") >= 0) { + return ReadOnlyRoots(isolate).long_string_handle(); + } + // Ex: skeleton as +- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-narrow". ++ // <ICU-68.1: "measure-unit/length-meter .### rounding-mode-half-up unit-width-narrow". ++ // >=ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-narrow". + if (skeleton.indexOf("unit-width-narrow") >= 0) { + return ReadOnlyRoots(isolate).narrow_string_handle(); + } + // Ex: skeleton as +- // "measure-unit/length-foot .### rounding-mode-half-up" ++ // <ICU-68.1: "measure-unit/length-foot .### rounding-mode-half-up" ++ // >=ICU-68.1: "unit/length-foot .### rounding-mode-half-up" + return ReadOnlyRoots(isolate).short_string_handle(); + } + +@@ -422,7 +425,8 @@ Notation NotationFromSkeleton(const icu::UnicodeString& skeleton) { + return Notation::COMPACT; + } + // Ex: skeleton as +- // "measure-unit/length-foot .### rounding-mode-half-up" ++ // <ICU-68.1: "measure-unit/length-foot .### rounding-mode-half-up" ++ // >=ICU-68.1: "unit/length-foot .### rounding-mode-half-up" + return Notation::STANDARD; + } + +@@ -562,14 +566,23 @@ namespace { + + // Ex: percent .### rounding-mode-half-up + // Special case for "percent" +-// Ex: "measure-unit/length-kilometer per-measure-unit/duration-hour .### +-// rounding-mode-half-up" should return "kilometer-per-unit". +-// Ex: "measure-unit/duration-year .### rounding-mode-half-up" should return +-// "year". ++// <ICU-68.1: ++// Ex: "measure-unit/length-kilometer per-measure-unit/duration-hour .### ++// rounding-mode-half-up" should return "kilometer-per-unit". ++// Ex: "measure-unit/duration-year .### rounding-mode-half-up" should return ++// >=ICU-68.1: ++// Ex: "unit/milliliter-per-acre .### rounding-mode-half-up" ++// should return "milliliter-per-acre". ++// Ex: "unit/year .### rounding-mode-half-up" should return ++// "year". + std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { + std::string str; + str = skeleton.toUTF8String<std::string>(str); ++#if U_ICU_VERSION_MAJOR_NUM < 68 + std::string search("measure-unit/"); ++#else ++ std::string search("unit/"); ++#endif + size_t begin = str.find(search); + if (begin == str.npos) { + // Special case for "percent". +@@ -578,20 +591,41 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { + } + return ""; + } ++#if U_ICU_VERSION_MAJOR_NUM < 68 + // Skip the type (ex: "length"). + // "measure-unit/length-kilometer per-measure-unit/duration-hour" + // b + begin = str.find("-", begin + search.size()); ++#else ++ // Ex: ++ // "unit/acre .### rounding-mode-half-up" ++ // b ++ // Ex: ++ // "unit/milliliter-per-acre .### rounding-mode-half-up" ++ // b ++ begin += search.size(); ++#endif + if (begin == str.npos) { + return ""; + } ++#if U_ICU_VERSION_MAJOR_NUM < 68 + begin++; // Skip the '-'. ++#endif + // Find the end of the subtype. + size_t end = str.find(" ", begin); +- // "measure-unit/length-kilometer per-measure-unit/duration-hour" +- // b e ++ // <ICU-68.1: ++ // "measure-unit/length-kilometer per-measure-unit/duration-hour" ++ // b e ++ // >=ICU-68.1: ++ // Ex: ++ // "unit/acre .### rounding-mode-half-up" ++ // b e ++ // Ex: ++ // "unit/milliliter-per-acre .### rounding-mode-half-up" ++ // b e + if (end == str.npos) { + end = str.size(); ++#if U_ICU_VERSION_MAJOR_NUM < 68 + return str.substr(begin, end - begin); + } + // "measure-unit/length-kilometer per-measure-unit/duration-hour" +@@ -625,17 +659,36 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { + // "measure-unit/length-kilometer per-measure-unit/duration-hour" + // [result ] b e + return result + "-per-" + str.substr(begin, end - begin); ++#else ++ } ++ return str.substr(begin, end - begin); ++#endif + } + + Style StyleFromSkeleton(const icu::UnicodeString& skeleton) { + if (skeleton.indexOf("currency/") >= 0) { + return Style::CURRENCY; + } ++#if U_ICU_VERSION_MAJOR_NUM < 68 + if (skeleton.indexOf("measure-unit/") >= 0) { + if (skeleton.indexOf("scale/100") >= 0 && + skeleton.indexOf("measure-unit/concentr-percent") >= 0) { ++#else ++ if (skeleton.indexOf("percent") >= 0) { ++ // percent precision-integer rounding-mode-half-up scale/100 ++ if (skeleton.indexOf("scale/100") >= 0) { ++#endif + return Style::PERCENT; ++#if U_ICU_VERSION_MAJOR_NUM >= 68 ++ } else { ++ return Style::UNIT; ++#endif + } ++#if U_ICU_VERSION_MAJOR_NUM >= 68 ++ } ++ // Before ICU68: "measure-unit/", since ICU68 "unit/" ++ if (skeleton.indexOf("unit/") >= 0) { ++#endif + return Style::UNIT; + } + return Style::DECIMAL; +diff --git a/src/objects/js-relative-time-format.cc b/src/objects/js-relative-time-format.cc +index 267343aaae..64d56a1c12 100644 +--- a/src/objects/js-relative-time-format.cc ++++ b/src/objects/js-relative-time-format.cc +@@ -195,9 +195,18 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::New( + } + } + ++#if U_ICU_VERSION_MAJOR_NUM < 68 + icu::DecimalFormat* decimal_format = + static_cast<icu::DecimalFormat*>(number_format); + decimal_format->setMinimumGroupingDigits(-2); ++#else ++ if (number_format->getDynamicClassID() == ++ icu::DecimalFormat::getStaticClassID()) { ++ icu::DecimalFormat* decimal_format = ++ static_cast<icu::DecimalFormat*>(number_format); ++ decimal_format->setMinimumGroupingDigits(-2); ++ } ++#endif + + // Change UDISPCTX_CAPITALIZATION_NONE to other values if + // ECMA402 later include option to change capitalization.