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

Nicola Squartini tensor5 at gemini.archlinux.org
Sun Mar 20 18:35:06 UTC 2022


    Date: Sunday, March 20, 2022 @ 18:35:06
  Author: tensor5
Revision: 1164766

upgpkg: electron13 13.6.9-2

Fix FS#73544.

Added:
  electron13/trunk/wayland-mmap-keymaps-as-read-only-memory.patch
Modified:
  electron13/trunk/PKGBUILD

------------------------------------------------+
 PKGBUILD                                       |   13 +++--
 wayland-mmap-keymaps-as-read-only-memory.patch |   59 +++++++++++++++++++++++
 2 files changed, 68 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-03-20 18:35:01 UTC (rev 1164765)
+++ PKGBUILD	2022-03-20 18:35:06 UTC (rev 1164766)
@@ -5,7 +5,7 @@
 _commit=5c5b2835b64e6a2b86b8467288908467e8228890
 _chromiumver=91.0.4472.164
 _gcc_patchset=5
-pkgrel=1
+pkgrel=2
 pkgdesc='Build cross platform desktop apps with web technologies'
 arch=('x86_64')
 url='https://electronjs.org/'
@@ -14,7 +14,8 @@
          'snappy')
 makedepends=('clang' 'git' 'gn' 'gperf' 'harfbuzz-icu' 'http-parser'
              'java-runtime-headless' 'jsoncpp' 'libnotify' 'lld' 'llvm' 'ninja'
-             'npm' 'pciutils' 'pipewire' 'python2' 'wget' 'yarn')
+             'npm' 'pciutils' 'pipewire' 'python2' 'python' 'python-httplib2'
+             'python-pyparsing' 'python-six' 'wget' 'yarn')
 optdepends=('kde-cli-tools: file deletion support (kioclient5)'
             'libappindicator-gtk3: StatusNotifierItem support'
             'pipewire: WebRTC desktop sharing under Wayland'
@@ -43,6 +44,7 @@
         'sql-make-VirtualCursor-standard-layout-type.patch'
         'unbundle-use-char16_t-as-UCHAR_TYPE.patch'
         'ffmpeg5.patch'
+        'wayland-mmap-keymaps-as-read-only-memory.patch'
        )
 sha256sums=('SKIP'
             'SKIP'
@@ -65,7 +67,9 @@
             '574785a21168c3e9b7aa82630713ceb6ced12f699133db66b10fc84b7bb2c631'
             'dd317f85e5abfdcfc89c6f23f4c8edbcdebdd5e083dcec770e5da49ee647d150'
             '59a59a60a08b335fe8647fdf0f9d2288d236ebf2cc9626396d0c4d032fd2b25d'
-            '4f32b815349357ef1f17b36059cee588c994472b9754a194fff41ec21a93826b')
+            '4f32b815349357ef1f17b36059cee588c994472b9754a194fff41ec21a93826b'
+            '88f0fa78de1805e57e70b46caf946544bbfad205f95f723eddf7fc7aad58af40'
+           )
 
 _system_libs=('ffmpeg'
               'flac'
@@ -110,7 +114,7 @@
   },
 ]" > .gclient
 
-  python2 "${srcdir}/depot_tools/gclient.py" sync \
+  python3 "${srcdir}/depot_tools/gclient.py" sync \
       --with_branch_heads \
       --with_tags \
       --nohooks
@@ -170,6 +174,7 @@
   patch -Np1 -i ../sql-make-VirtualCursor-standard-layout-type.patch
   patch -Np1 -i ../std-max-fix.patch
   patch -Np1 -i ../unbundle-use-char16_t-as-UCHAR_TYPE.patch
+  patch -Np1 -i ../wayland-mmap-keymaps-as-read-only-memory.patch
   patch -Np1 -i ../use-system-libraries-in-node.patch
   patch -Np1 -i ../default_app-icon.patch  # Icon from .desktop file
 

Added: wayland-mmap-keymaps-as-read-only-memory.patch
===================================================================
--- wayland-mmap-keymaps-as-read-only-memory.patch	                        (rev 0)
+++ wayland-mmap-keymaps-as-read-only-memory.patch	2022-03-20 18:35:06 UTC (rev 1164766)
@@ -0,0 +1,59 @@
+--- a/ui/ozone/platform/wayland/host/wayland_keyboard.cc
++++ b/ui/ozone/platform/wayland/host/wayland_keyboard.cc
+@@ -4,10 +4,14 @@
+ 
+ #include "ui/ozone/platform/wayland/host/wayland_keyboard.h"
+ 
++#include <sys/mman.h>
++
++#include <cstddef>
++#include <cstring>
+ #include <utility>
+ 
+-#include "base/files/scoped_file.h"
+-#include "base/memory/read_only_shared_memory_region.h"
++#include "base/logging.h"
++#include "base/memory/ref_counted_memory.h"
+ #include "base/unguessable_token.h"
+ #include "ui/base/buildflags.h"
+ #include "ui/events/base_event_utils.h"
+@@ -111,26 +115,26 @@
+ void WaylandKeyboard::Keymap(void* data,
+                              wl_keyboard* obj,
+                              uint32_t format,
+-                             int32_t keymap_fd,
++                             int32_t fd,
+                              uint32_t size) {
+   WaylandKeyboard* keyboard = static_cast<WaylandKeyboard*>(data);
+   DCHECK(keyboard);
+ 
+-  base::ScopedFD fd(keymap_fd);
+-  auto length = size - 1;
+-  auto shmen = base::subtle::PlatformSharedMemoryRegion::Take(
+-      std::move(fd), base::subtle::PlatformSharedMemoryRegion::Mode::kReadOnly,
+-      length, base::UnguessableToken::Create());
+-  auto mapped_memory =
+-      base::ReadOnlySharedMemoryRegion::Deserialize(std::move(shmen)).Map();
+-  const char* keymap = mapped_memory.GetMemoryAs<char>();
++  if (!data || format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1)
++    return;
+ 
+-  if (!keymap || format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1)
++  void* keymap = mmap(nullptr, size, PROT_READ, MAP_SHARED, fd, 0);
++  if (keymap == MAP_FAILED) {
++    DPLOG(ERROR) << "Failed to map XKB keymap.";
+     return;
++  }
+ 
+-  bool success = keyboard->layout_engine_->SetCurrentLayoutFromBuffer(
+-      keymap, mapped_memory.size());
+-  DCHECK(success) << "Failed to set the XKB keyboard mapping.";
++  const char* keymap_string = static_cast<const char*>(keymap);
++  if (!keyboard->layout_engine_->SetCurrentLayoutFromBuffer(
++          keymap_string, strnlen(keymap_string, size))) {
++    DLOG(ERROR) << "Failed to set XKB keymap.";
++  }
++  munmap(keymap, size);
+ }
+ 
+ void WaylandKeyboard::Enter(void* data,



More information about the arch-commits mailing list