summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix23
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/chromium-gcc5-r3.patch98
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/chromium-glibc2.26-r1.patch220
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/chromium-gn-bootstrap-r17.patch68
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/gn_bootstrap_observer.patch11
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
6 files changed, 15 insertions, 423 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index 82c2c6aa53fc..6b7e64bf8c0e 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -64,9 +64,8 @@ let
     # "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
     # "re2" # fails with linker errors
     # "ffmpeg" # https://crbug.com/731766
-  ] ++ optionals (versionRange "62" "63") [
-    "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
-                  # so we can't build with one from system and other from source
+    # "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
+                    # so we can't build with one from system and other from source
   ];
 
   opusWithCustomModes = libopus.override {
@@ -80,9 +79,8 @@ let
     xdg_utils yasm minizip libwebp
     libusb1 re2 zlib
     ffmpeg libxslt libxml2
-  ] ++ optionals (versionRange "62" "63") [
-    harfbuzz-icu # in versions over 63 harfbuzz and freetype are being built together
-                 # so we can't build with one from system and other from source
+    # harfbuzz-icu # in versions over 63 harfbuzz and freetype are being built together
+                   # so we can't build with one from system and other from source
   ];
 
   # build paths and release info
@@ -139,18 +137,10 @@ let
       # https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/
       # https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium
       # for updated patches and hints about build flags
-      ++ optionals (versionRange "62" "63") [
-      ./patches/chromium-gn-bootstrap-r17.patch
-      ./patches/chromium-gcc5-r3.patch
-      ./patches/chromium-glibc2.26-r1.patch
-    ]
       ++ optionals (versionRange "63" "64") [
       ./patches/chromium-gcc5-r4.patch
       ./patches/include-math-for-round.patch
     ]
-      ++ optionals (versionAtLeast version "64") [
-      ./patches/gn_bootstrap_observer.patch
-    ]
       ++ optional enableWideVine ./patches/widevine.patch;
 
     postPatch = ''
@@ -269,15 +259,14 @@ let
         ninja -C "${buildPath}"  \
           -j$(( ($NIX_BUILD_CORES+1) / 2 )) -l$(( $NIX_BUILD_CORES+1 )) \
           "${target}"
-      '' + optionalString (target == "mksnapshot" || target == "chrome") ''
-        paxmark m "${buildPath}/${target}"
-      '' + optionalString (versionAtLeast version "63") ''
         (
           source chrome/installer/linux/common/installer.include
           PACKAGE=$packageName
           MENUNAME="Chromium"
           process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
         )
+      '' + optionalString (target == "mksnapshot" || target == "chrome") ''
+        paxmark m "${buildPath}/${target}"
       '';
       targets = extraAttrs.buildTargets or [];
       commands = map buildCommand targets;
diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-gcc5-r3.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-gcc5-r3.patch
deleted file mode 100644
index 7605df6b145a..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/chromium-gcc5-r3.patch
+++ /dev/null
@@ -1,98 +0,0 @@
---- a/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
-+++ b/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
-@@ -63,7 +63,7 @@ class WTF_EXPORT ArrayBufferContents {
-           allocation_length_(0),
-           data_(data),
-           data_length_(0),
--          kind_(AllocationKind::kNormal),
-+          kind_(WTF::ArrayBufferContents::AllocationKind::kNormal),
-           deleter_(deleter) {}
-     DataHandle(void* allocation_base,
-                size_t allocation_length,
-@@ -94,11 +94,11 @@ class WTF_EXPORT ArrayBufferContents {
-              reinterpret_cast<uintptr_t>(allocation_base_) +
-                  allocation_length_);
-       switch (kind_) {
--        case AllocationKind::kNormal:
-+        case WTF::ArrayBufferContents::AllocationKind::kNormal:
-           DCHECK(deleter_);
-           deleter_(data_);
-           return;
--        case AllocationKind::kReservation:
-+        case WTF::ArrayBufferContents::AllocationKind::kReservation:
-           ReleaseReservedMemory(allocation_base_, allocation_length_);
-           return;
-       }
---- a/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.orig	2017-08-15 12:45:59.433532111 +0000
-+++ b/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc	2017-08-15 17:52:59.691328825 +0000
-@@ -10,7 +10,7 @@
- 
- #include "webrtc/modules/audio_processing/aec3/aec_state.h"
- 
--#include <math.h>
-+#include <cmath>
- #include <numeric>
- #include <vector>
- 
---- a/gpu/ipc/common/mailbox_struct_traits.h
-+++ b/gpu/ipc/common/mailbox_struct_traits.h
-@@ -15,7 +15,7 @@ namespace mojo {
- template <>
- struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
-   static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
--    return mailbox.name;
-+    return base::make_span(mailbox.name);
-   }
-   static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
- };
---- a/services/viz/public/cpp/compositing/filter_operation_struct_traits.h
-+++ b/services/viz/public/cpp/compositing/filter_operation_struct_traits.h
-@@ -134,7 +134,7 @@ struct StructTraits<viz::mojom::FilterOperationDataView, cc::FilterOperation> {
-   static base::span<const float> matrix(const cc::FilterOperation& operation) {
-     if (operation.type() != cc::FilterOperation::COLOR_MATRIX)
-       return base::span<const float>();
--    return operation.matrix();
-+    return base::make_span(operation.matrix());
-   }
- 
-   static base::span<const gfx::Rect> shape(
---- a/services/viz/public/cpp/compositing/quads_struct_traits.h
-+++ b/services/viz/public/cpp/compositing/quads_struct_traits.h
-@@ -284,7 +284,7 @@
- 
-   static base::span<const float> vertex_opacity(const cc::DrawQuad& input) {
-     const cc::TextureDrawQuad* quad = cc::TextureDrawQuad::MaterialCast(&input);
--    return quad->vertex_opacity;
-+    return base::make_span(quad->vertex_opacity);
-   }
- 
-   static bool y_flipped(const cc::DrawQuad& input) {
---- a/third_party/WebKit/Source/platform/exported/WebCORS.cpp
-+++ b/third_party/WebKit/Source/platform/exported/WebCORS.cpp
-@@ -480,7 +480,7 @@ WebString AccessControlErrorString(
-     }
-     default:
-       NOTREACHED();
--      return "";
-+      return WebString();
-   }
- }
- 
-@@ -512,7 +512,7 @@ WebString PreflightErrorString(const PreflightStatus status,
-     }
-     default:
-       NOTREACHED();
--      return "";
-+      return WebString();
-   }
- }
- 
-@@ -533,7 +533,7 @@ WebString RedirectErrorString(const RedirectStatus status,
-     }
-     default:
-       NOTREACHED();
--      return "";
-+      return WebString();
-   }
- }
- 
diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-glibc2.26-r1.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-glibc2.26-r1.patch
deleted file mode 100644
index ec37a2816d51..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/chromium-glibc2.26-r1.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-diff --git a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
-index c80724d..052ce37 100644
---- a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
-+++ b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
-@@ -36,19 +36,19 @@ namespace google_breakpad {
- 
- // Minidump defines register structures which are different from the raw
- // structures which we get from the kernel. These are platform specific
--// functions to juggle the ucontext and user structures into minidump format.
-+// functions to juggle the ucontext_t and user structures into minidump format.
- 
- #if defined(__i386__)
- 
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.gregs[REG_ESP];
- }
- 
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.gregs[REG_EIP];
- }
- 
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
-                                     const struct _libc_fpstate* fp) {
-   const greg_t* regs = uc->uc_mcontext.gregs;
- 
-@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
- 
- #elif defined(__x86_64)
- 
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.gregs[REG_RSP];
- }
- 
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.gregs[REG_RIP];
- }
- 
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
-                                     const struct _libc_fpstate* fpregs) {
-   const greg_t* regs = uc->uc_mcontext.gregs;
- 
-@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
- 
- #elif defined(__ARM_EABI__)
- 
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.arm_sp;
- }
- 
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.arm_pc;
- }
- 
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
-   out->context_flags = MD_CONTEXT_ARM_FULL;
- 
-   out->iregs[0] = uc->uc_mcontext.arm_r0;
-@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
- 
- #elif defined(__aarch64__)
- 
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.sp;
- }
- 
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.pc;
- }
- 
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
-                                     const struct fpsimd_context* fpregs) {
-   out->context_flags = MD_CONTEXT_ARM64_FULL;
- 
-@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
- 
- #elif defined(__mips__)
- 
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
- }
- 
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
-   return uc->uc_mcontext.pc;
- }
- 
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
- #if _MIPS_SIM == _ABI64
-   out->context_flags = MD_CONTEXT_MIPS64_FULL;
- #elif _MIPS_SIM == _ABIO32
-diff --git a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
-index b6e77b4..2de80b7 100644
---- a/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
-+++ b/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
-@@ -39,23 +39,23 @@
- 
- namespace google_breakpad {
- 
--// Wraps platform-dependent implementations of accessors to ucontext structs.
-+// Wraps platform-dependent implementations of accessors to ucontext_t structs.
- struct UContextReader {
--  static uintptr_t GetStackPointer(const struct ucontext* uc);
-+  static uintptr_t GetStackPointer(const ucontext_t* uc);
- 
--  static uintptr_t GetInstructionPointer(const struct ucontext* uc);
-+  static uintptr_t GetInstructionPointer(const ucontext_t* uc);
- 
--  // Juggle a arch-specific ucontext into a minidump format
-+  // Juggle a arch-specific ucontext_t into a minidump format
-   //   out: the minidump structure
-   //   info: the collection of register structures.
- #if defined(__i386__) || defined(__x86_64)
--  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
-                              const struct _libc_fpstate* fp);
- #elif defined(__aarch64__)
--  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
-                              const struct fpsimd_context* fpregs);
- #else
--  static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
-+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);
- #endif
- };
- 
-diff --git a/breakpad/src/client/linux/handler/exception_handler.cc b/breakpad/src/client/linux/handler/exception_handler.cc
-index 586d84e..05936d2 100644
---- a/breakpad/src/client/linux/handler/exception_handler.cc
-+++ b/breakpad/src/client/linux/handler/exception_handler.cc
-@@ -457,9 +457,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) {
-   // Fill in all the holes in the struct to make Valgrind happy.
-   memset(&g_crash_context_, 0, sizeof(g_crash_context_));
-   memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
--  memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));
-+  memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));
- #if defined(__aarch64__)
--  struct ucontext* uc_ptr = (struct ucontext*)uc;
-+  ucontext_t* uc_ptr = (ucontext_t*)uc;
-   struct fpsimd_context* fp_ptr =
-       (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
-   if (fp_ptr->head.magic == FPSIMD_MAGIC) {
-@@ -468,9 +468,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) {
-   }
- #elif !defined(__ARM_EABI__) && !defined(__mips__)
-   // FP state is not part of user ABI on ARM Linux.
--  // In case of MIPS Linux FP state is already part of struct ucontext
-+  // In case of MIPS Linux FP state is already part of ucontext_t
-   // and 'float_state' is not a member of CrashContext.
--  struct ucontext* uc_ptr = (struct ucontext*)uc;
-+  ucontext_t* uc_ptr = (ucontext_t*)uc;
-   if (uc_ptr->uc_mcontext.fpregs) {
-     memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
-            sizeof(g_crash_context_.float_state));
-@@ -494,7 +494,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
-   // ExceptionHandler::HandleSignal().
-   siginfo.si_code = SI_USER;
-   siginfo.si_pid = getpid();
--  struct ucontext context;
-+  ucontext_t context;
-   getcontext(&context);
-   return HandleSignal(sig, &siginfo, &context);
- }
-diff --git a/breakpad/src/client/linux/handler/exception_handler.h b/breakpad/src/client/linux/handler/exception_handler.h
-index daba57e..25598a2 100644
---- a/breakpad/src/client/linux/handler/exception_handler.h
-+++ b/breakpad/src/client/linux/handler/exception_handler.h
-@@ -191,11 +191,11 @@ class ExceptionHandler {
-   struct CrashContext {
-     siginfo_t siginfo;
-     pid_t tid;  // the crashing thread.
--    struct ucontext context;
-+    ucontext_t context;
- #if !defined(__ARM_EABI__) && !defined(__mips__)
-     // #ifdef this out because FP state is not part of user ABI for Linux ARM.
-     // In case of MIPS Linux FP state is already part of struct
--    // ucontext so 'float_state' is not required.
-+    // ucontext_t so 'float_state' is not required.
-     fpstate_t float_state;
- #endif
-   };
-diff --git a/breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
-index 3764eec..80ad5c4 100644
---- a/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
-+++ b/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
-@@ -593,7 +593,7 @@ class MicrodumpWriter {
- 
-   void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
- 
--  const struct ucontext* const ucontext_;
-+  const ucontext_t* const ucontext_;
- #if !defined(__ARM_EABI__) && !defined(__mips__)
-   const google_breakpad::fpstate_t* const float_state_;
- #endif
-diff --git a/breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
-index d11ba6e..c716143 100644
---- a/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
-+++ b/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
-@@ -1323,7 +1323,7 @@ class MinidumpWriter {
-   const int fd_;  // File descriptor where the minidum should be written.
-   const char* path_;  // Path to the file where the minidum should be written.
- 
--  const struct ucontext* const ucontext_;  // also from the signal handler
-+  const ucontext_t* const ucontext_;  // also from the signal handler
- #if !defined(__ARM_EABI__) && !defined(__mips__)
-   const google_breakpad::fpstate_t* const float_state_;  // ditto
- #endif
diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-gn-bootstrap-r17.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-gn-bootstrap-r17.patch
deleted file mode 100644
index 6cfd08d58c23..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/chromium-gn-bootstrap-r17.patch
+++ /dev/null
@@ -1,68 +0,0 @@
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -179,6 +179,7 @@ def build_gn_with_ninja_manually(tempdir, options):
- 
-   write_buildflag_header_manually(root_gen_dir, 'base/debug/debugging_flags.h',
-       {
-+          'ENABLE_LOCATION_SOURCE': 'false',
-           'ENABLE_PROFILING': 'false',
-           'CAN_UNWIND_WITH_FRAME_POINTERS': 'false'
-       })
-@@ -204,7 +205,7 @@ def build_gn_with_ninja_manually(tempdir, options):
- 
-   write_gn_ninja(os.path.join(tempdir, 'build.ninja'),
-                  root_gen_dir, options)
--  cmd = ['ninja', '-C', tempdir]
-+  cmd = ['ninja', '-C', tempdir, '-w', 'dupbuild=err']
-   if options.verbose:
-     cmd.append('-v')
- 
-@@ -458,6 +459,7 @@ def write_gn_ninja(path, root_gen_dir, options):
-       'base/metrics/bucket_ranges.cc',
-       'base/metrics/field_trial.cc',
-       'base/metrics/field_trial_param_associator.cc',
-+      'base/metrics/field_trial_params.cc',
-       'base/metrics/histogram.cc',
-       'base/metrics/histogram_base.cc',
-       'base/metrics/histogram_functions.cc',
-@@ -507,6 +509,7 @@ def write_gn_ninja(path, root_gen_dir, options):
-       'base/task_scheduler/scheduler_lock_impl.cc',
-       'base/task_scheduler/scheduler_single_thread_task_runner_manager.cc',
-       'base/task_scheduler/scheduler_worker.cc',
-+      'base/task_scheduler/scheduler_worker_pool.cc',
-       'base/task_scheduler/scheduler_worker_pool_impl.cc',
-       'base/task_scheduler/scheduler_worker_pool_params.cc',
-       'base/task_scheduler/scheduler_worker_stack.cc',
-@@ -523,6 +526,7 @@ def write_gn_ninja(path, root_gen_dir, options):
-       'base/third_party/icu/icu_utf.cc',
-       'base/third_party/nspr/prtime.cc',
-       'base/threading/post_task_and_reply_impl.cc',
-+      'base/threading/scoped_blocking_call.cc',
-       'base/threading/sequence_local_storage_map.cc',
-       'base/threading/sequenced_task_runner_handle.cc',
-       'base/threading/sequenced_worker_pool.cc',
-@@ -579,7 +583,6 @@ def write_gn_ninja(path, root_gen_dir, options):
-       'base/unguessable_token.cc',
-       'base/value_iterators.cc',
-       'base/values.cc',
--      'base/value_iterators.cc',
-       'base/vlog.cc',
-   ])
- 
-@@ -652,7 +655,6 @@ def write_gn_ninja(path, root_gen_dir, options):
-     static_libraries['base']['sources'].extend([
-         'base/memory/shared_memory_handle_posix.cc',
-         'base/memory/shared_memory_posix.cc',
--        'base/memory/shared_memory_tracker.cc',
-         'base/nix/xdg_util.cc',
-         'base/process/internal_linux.cc',
-         'base/process/memory_linux.cc',
-@@ -827,7 +829,7 @@ def build_gn_with_gn(temp_gn, build_dir, options):
-   cmd = [temp_gn, 'gen', build_dir, '--args=%s' % gn_gen_args]
-   check_call(cmd)
- 
--  cmd = ['ninja', '-C', build_dir]
-+  cmd = ['ninja', '-C', build_dir, '-w', 'dupbuild=err']
-   if options.verbose:
-     cmd.append('-v')
-   cmd.append('gn')
diff --git a/pkgs/applications/networking/browsers/chromium/patches/gn_bootstrap_observer.patch b/pkgs/applications/networking/browsers/chromium/patches/gn_bootstrap_observer.patch
deleted file mode 100644
index f1207439bb4d..000000000000
--- a/pkgs/applications/networking/browsers/chromium/patches/gn_bootstrap_observer.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tools/gn/bootstrap/bootstrap.py   2017-11-07 23:06:09.000000000 +0000
-+++ b/tools/gn/bootstrap/bootstrap.py   2017-11-08 12:17:16.569216182 +0000
-@@ -481,6 +481,7 @@
-       'base/metrics/sample_vector.cc',
-       'base/metrics/sparse_histogram.cc',
-       'base/metrics/statistics_recorder.cc',
-+      'base/observer_list_threadsafe.cc',
-       'base/path_service.cc',
-       'base/pending_task.cc',
-       'base/pickle.cc',
-
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index 6e3ba922d25f..8b20d1748007 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,18 +1,18 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   beta = {
-    sha256 = "1pk6ssvriqmckf61lafkbwyy98ylpaz0mq3g0zrifbhxzwkk01ni";
-    sha256bin64 = "0svdxgszy377hm3lzys90xj8qna93r4xz3d89sy086c9sq1ncsr0";
-    version = "63.0.3239.40";
+    sha256 = "1bx35zj15wyviq2pp12gr0srn036av4i7bk7dap7adikzi6pbqkd";
+    sha256bin64 = "0d4bhwbnvi0sci2h6i8ysz2vi9p831khhs2a2176py5xfgxzc1jj";
+    version = "63.0.3239.84";
   };
   dev = {
-    sha256 = "0kpn5w1qvjlkxqhsc7lz269mxp7i0z9k92ay178kgsph3ygncm0x";
-    sha256bin64 = "1pvnkhvks3yvpdh2qg9iqg6xmi5bxrl1n6mp9akywv1d5wsba7kg";
-    version = "64.0.3260.2";
+    sha256 = "078cj2sbs65391z5l35jmfr5n2wg63bl5b55f9r46wqxgs1b746c";
+    sha256bin64 = "1p9l9aqh8h5n1mx3ss7byxxl863lr0j241d5bds0yab2dk9gmxyn";
+    version = "64.0.3278.0";
   };
   stable = {
-    sha256 = "1m2qjm4x789s3hx255gmmihqrqfx8f608fap3khsp2phgck4vg6a";
-    sha256bin64 = "1wxszymlv2y1dk4f0hpgq9b86fzqb7x8q87rfbq7dvfj8g4vipz1";
-    version = "62.0.3202.94";
+    sha256 = "1bx35zj15wyviq2pp12gr0srn036av4i7bk7dap7adikzi6pbqkd";
+    sha256bin64 = "0rdcq63ppd5pyj6iwlalxr93iyls9pkr5jifsjyf14p79li297zx";
+    version = "63.0.3239.84";
   };
 }