[arch-commits] Commit in electron9/trunk (2 files)

Nicola Squartini tensor5 at archlinux.org
Sun Nov 22 02:50:46 UTC 2020


    Date: Sunday, November 22, 2020 @ 02:50:46
  Author: tensor5
Revision: 758807

upgpkg: electron9 9.3.4-2

Backport https://github.com/electron/electron/pull/26508 (FS#68629).

Added:
  electron9/trunk/1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch
Modified:
  electron9/trunk/PKGBUILD

------------------------------------------------+
 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch |  128 +++++++++++++++++++++++
 PKGBUILD                                       |   12 +-
 2 files changed, 138 insertions(+), 2 deletions(-)

Added: 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch
===================================================================
--- 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch	                        (rev 0)
+++ 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch	2020-11-22 02:50:46 UTC (rev 758807)
@@ -0,0 +1,128 @@
+From 1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c Mon Sep 17 00:00:00 2001
+From: Cheng Zhao <zcbenz at gmail.com>
+Date: Mon, 16 Nov 2020 11:20:42 +0900
+Subject: [PATCH] fix: LC_ALL env should not be changed
+
+---
+ shell/browser/electron_browser_main_parts.cc | 25 ++++++++++-----
+ spec-main/chromium-spec.ts                   | 32 +++++++++++++-------
+ spec/fixtures/api/locale-check/main.js       | 10 ++++--
+ 3 files changed, 47 insertions(+), 20 deletions(-)
+
+diff --git a/shell/browser/electron_browser_main_parts.cc b/shell/browser/electron_browser_main_parts.cc
+index cd3cd1a65760..e53b22e31052 100644
+--- a/shell/browser/electron_browser_main_parts.cc
++++ b/shell/browser/electron_browser_main_parts.cc
+@@ -375,23 +375,34 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+   // which keys off of getenv("LC_ALL").
+   // We must set this env first to make ui::ResourceBundle accept the custom
+   // locale.
+-  g_setenv("LC_ALL", locale.c_str(), TRUE);
++  std::unique_ptr<base::Environment> env(base::Environment::Create());
++  base::Optional<std::string> lc_all;
++  if (!locale.empty()) {
++    std::string str;
++    if (env->GetVar("LC_ALL", &str))
++      lc_all.emplace(std::move(str));
++    env->SetVar("LC_ALL", locale.c_str());
++  }
+ #endif
+ 
+   // Load resources bundle according to locale.
+   std::string loaded_locale = LoadResourceBundle(locale);
+ 
+-#if defined(OS_LINUX)
+-  // Reset to the loaded locale if the custom locale is invalid.
+-  if (loaded_locale != locale)
+-    g_setenv("LC_ALL", loaded_locale.c_str(), TRUE);
+-#endif
+-
+   // Initialize the app locale.
+   std::string app_locale = l10n_util::GetApplicationLocale(loaded_locale);
+   ElectronBrowserClient::SetApplicationLocale(app_locale);
+   fake_browser_process_->SetApplicationLocale(app_locale);
+ 
++#if defined(OS_LINUX)
++  // Reset to the original LC_ALL since we should not be changing it.
++  if (!locale.empty()) {
++    if (lc_all)
++      env->SetVar("LC_ALL", *lc_all);
++    else
++      env->UnSetVar("LC_ALL");
++  }
++#endif
++
+   // Force MediaCaptureDevicesDispatcher to be created on UI thread.
+   MediaCaptureDevicesDispatcher::GetInstance();
+ 
+diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts
+index cfd64deabb65..510f62a0056c 100644
+--- a/spec-main/chromium-spec.ts
++++ b/spec-main/chromium-spec.ts
+@@ -291,22 +291,32 @@ describe('web security', () => {
+ describe('command line switches', () => {
+   describe('--lang switch', () => {
+     const currentLocale = app.getLocale();
+-    const testLocale = (locale: string, result: string, done: () => void) => {
++    const testLocale = async (locale: string, result: string, printEnv: boolean = false) => {
+       const appPath = path.join(fixturesPath, 'api', 'locale-check');
+-      const electronPath = process.execPath;
+-      let output = '';
+-      const appProcess = ChildProcess.spawn(electronPath, [appPath, `--set-lang=${locale}`]);
++      const args = [appPath, `--set-lang=${locale}`];
++      if (printEnv) {
++        args.push('--print-env');
++      }
++      const appProcess = ChildProcess.spawn(process.execPath, args);
+ 
++      let output = '';
+       appProcess.stdout.on('data', (data) => { output += data; });
+-      appProcess.stdout.on('end', () => {
+-        output = output.replace(/(\r\n|\n|\r)/gm, '');
+-        expect(output).to.equal(result);
+-        done();
+-      });
++      await emittedOnce(appProcess.stdout, 'end');
++      output = output.replace(/(\r\n|\n|\r)/gm, '');
++      expect(output).to.equal(result);
+     };
+ 
+-    it('should set the locale', (done) => testLocale('fr', 'fr', done));
+-    it('should not set an invalid locale', (done) => testLocale('asdfkl', currentLocale, done));
++    it('should set the locale', async () => testLocale('fr', 'fr'));
++    it('should not set an invalid locale', async () => testLocale('asdfkl', currentLocale));
++
++    const lcAll = String(process.env.LC_ALL);
++    ifit(process.platform === 'linux')('current process has a valid LC_ALL env', async () => {
++      // The LC_ALL env should not be set to DOM locale string.
++      expect(lcAll).to.not.equal(app.getLocale());
++    });
++    ifit(process.platform === 'linux')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
++    ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
++    ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
+   });
+ 
+   describe('--remote-debugging-port switch', () => {
+diff --git a/spec/fixtures/api/locale-check/main.js b/spec/fixtures/api/locale-check/main.js
+index d42b9ab1a110..929a9e0e9519 100644
+--- a/spec/fixtures/api/locale-check/main.js
++++ b/spec/fixtures/api/locale-check/main.js
+@@ -1,10 +1,16 @@
+ const { app } = require('electron');
+ 
+ const locale = process.argv[2].substr(11);
+-app.commandLine.appendSwitch('lang', locale);
++if (locale.length !== 0) {
++  app.commandLine.appendSwitch('lang', locale);
++}
+ 
+ app.whenReady().then(() => {
+-  process.stdout.write(app.getLocale());
++  if (process.argv[3] === '--print-env') {
++    process.stdout.write(String(process.env.LC_ALL));
++  } else {
++    process.stdout.write(app.getLocale());
++  }
+   process.stdout.end();
+ 
+   app.quit();

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-11-22 02:50:38 UTC (rev 758806)
+++ PKGBUILD	2020-11-22 02:50:46 UTC (rev 758807)
@@ -4,7 +4,7 @@
 pkgver=9.3.4
 _commit=979e59e871d6489b9574e849923bd2dc99ec6c58
 _chromiumver=83.0.4103.122
-pkgrel=1
+pkgrel=2
 pkgdesc='Build cross platform desktop apps with web technologies'
 arch=('x86_64')
 url='https://electronjs.org/'
@@ -34,6 +34,7 @@
         'libstdc-fix-incomplete-type-in-AXTree-for-NodeSetSiz.patch'
         'make-some-of-blink-custom-iterators-STL-compatible.patch'
         'v8-remove-soon-to-be-removed-getAllFieldPositions.patch'
+        '1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch'
        )
 sha256sums=('SKIP'
             'SKIP'
@@ -50,7 +51,9 @@
             '675fb3d6276cce569a641436465f58d5709d1d4a5f62b7052989479fd4aaea24'
             '50687079426094f2056d1f4806dc30fc8d6bad16190520e57ba087ec5db1d778'
             '3d7f20e1d2ee7d73ed25e708c0d59a0cb215fcce10a379e3d48a856533c4b0b7'
-            'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2')
+            'e042024423027ad3ef729a7e4709bdf9714aea49d64cfbbf46a645a05703abc2'
+            '18bec85fa60b28ed517f3c8be272f6dcecae2819648b9b85cb396b9af25e7270'
+           )
 
 _system_libs=('ffmpeg'
               'flac'
@@ -145,6 +148,11 @@
   patch -Np1 -i ../use-system-libraries-in-node.patch
   patch -Np1 -i ../default_app-icon.patch  # Icon from .desktop file
 
+  # Backport https://github.com/electron/electron/pull/26508 (FS#68629)
+  cd electron
+  patch -Np1 -i ../../1eb2fae007cf39d7e4fa5de4bb53a0be62b5378c.patch
+  cd ..
+
   echo "Patching Chromium for using system libraries..."
   sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
       tools/generate_shim_headers/generate_shim_headers.py


More information about the arch-commits mailing list