From 8cd6424c32c0aac08ab70325042bf88441af1f5f Mon Sep 17 00:00:00 2001 From: tigro Date: Sun, 23 Jul 2023 10:30:29 +0300 Subject: [PATCH] - Update to 115.0.5790.98 - Disable rust - Added many fixes - Added GOST support --- .chromium.metadata | 2 + .gitignore | 2 + ...0001-Yandex-as-default-search-engine.patch | 34 ++++--- SOURCES/SkColor4f-init.patch | 34 +++++++ SOURCES/brandversion-construct.patch | 35 +++++++ SOURCES/chromium-114-typename.patch | 62 ------------- ...karound_clang_bug-structured_binding.patch | 81 ---------------- SOURCES/chromium-115-skia-include.patch | 19 ++++ SOURCES/chromium-115-typename.patch | 48 ++++++++++ ...romium-115-verify_name_match-include.patch | 25 +++++ ...karound_clang_bug-structured_binding.patch | 60 ++++++++++++ ...115.0.5790.98-initial_prefs-etc-path.patch | 19 ++++ ...-91.0.4472.77-initial_prefs-etc-path.patch | 15 --- SOURCES/cookieresult.patch | 23 +++++ SPECS/chromium.spec | 93 ++++++++++++++++--- 15 files changed, 370 insertions(+), 182 deletions(-) create mode 100644 SOURCES/SkColor4f-init.patch create mode 100644 SOURCES/brandversion-construct.patch delete mode 100644 SOURCES/chromium-114-typename.patch delete mode 100644 SOURCES/chromium-114-workaround_clang_bug-structured_binding.patch create mode 100644 SOURCES/chromium-115-skia-include.patch create mode 100644 SOURCES/chromium-115-typename.patch create mode 100644 SOURCES/chromium-115-verify_name_match-include.patch create mode 100644 SOURCES/chromium-115-workaround_clang_bug-structured_binding.patch create mode 100644 SOURCES/chromium-115.0.5790.98-initial_prefs-etc-path.patch delete mode 100644 SOURCES/chromium-91.0.4472.77-initial_prefs-etc-path.patch create mode 100644 SOURCES/cookieresult.patch diff --git a/.chromium.metadata b/.chromium.metadata index 843333fc..63d14ff5 100644 --- a/.chromium.metadata +++ b/.chromium.metadata @@ -1 +1,3 @@ 8d093d534d9a67b1a3c88d97bd47d6b326f3fa71 SOURCES/chromium-114.0.5735.198.tar.xz +7353fcb2efef3b4ca4f2ba97d5ed6df1b8cda29b SOURCES/chromium-gost-eff0aba6091bcf9ca9b8a6d31402dfe55ddaf8ce.tar.gz +7f2dae4d92fd16ba75b35408e1c0a9003d27eb38 SOURCES/msspi-dddd947089110165db71fdc660157f102bab3660.tar.gz diff --git a/.gitignore b/.gitignore index fbc69f06..d3115024 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ SOURCES/chromium-114.0.5735.198.tar.xz +SOURCES/chromium-gost-eff0aba6091bcf9ca9b8a6d31402dfe55ddaf8ce.tar.gz +SOURCES/msspi-dddd947089110165db71fdc660157f102bab3660.tar.gz diff --git a/SOURCES/0001-Yandex-as-default-search-engine.patch b/SOURCES/0001-Yandex-as-default-search-engine.patch index c34cf717..f3207786 100644 --- a/SOURCES/0001-Yandex-as-default-search-engine.patch +++ b/SOURCES/0001-Yandex-as-default-search-engine.patch @@ -1,6 +1,13 @@ -diff -urN chromium-114.0.5735.133.orig/components/search_engines/prepopulated_engines.json chromium-114.0.5735.133/components/search_engines/prepopulated_engines.json ---- chromium-114.0.5735.133.orig/components/search_engines/prepopulated_engines.json 2023-06-30 16:00:39.781216875 +0300 -+++ chromium-114.0.5735.133/components/search_engines/prepopulated_engines.json 2023-06-30 16:10:06.030718785 +0300 +commit f6f27ebf8f82990da4c5fdff103eb62586ee12d9 +Author: tigro +Date: Sun Jul 23 09:57:21 2023 +0300 + + Set Yandex as default search engine + +diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json +index e672076a3..1ef0e7504 100644 +--- a/components/search_engines/prepopulated_engines.json ++++ b/components/search_engines/prepopulated_engines.json @@ -560,7 +560,7 @@ "suggest_url": "https://suggest.yandex.by/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}", "image_url": "https://yandex.by/images/search/?rpt=imageview", @@ -54,10 +61,11 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/prepopulated_en "type": "SEARCH_ENGINE_YANDEX", "id": 15 }, -diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_prepopulate_data.cc chromium-114.0.5735.133/components/search_engines/template_url_prepopulate_data.cc ---- chromium-114.0.5735.133.orig/components/search_engines/template_url_prepopulate_data.cc 2023-06-30 16:00:39.780216890 +0300 -+++ chromium-114.0.5735.133/components/search_engines/template_url_prepopulate_data.cc 2023-06-30 16:12:58.769100093 +0300 -@@ -29,6 +29,7 @@ +diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc +index efaa4b294..7f25a36e8 100644 +--- a/components/search_engines/template_url_prepopulate_data.cc ++++ b/components/search_engines/template_url_prepopulate_data.cc +@@ -29,6 +29,7 @@ namespace { // Default (for countries with no better engine set) const PrepopulatedEngine* const engines_default[] = { @@ -65,7 +73,7 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_pr &google, &bing, &yahoo, -@@ -156,8 +157,8 @@ +@@ -156,8 +157,8 @@ const PrepopulatedEngine* const engines_BR[] = { // Belarus const PrepopulatedEngine* const engines_BY[] = { @@ -75,7 +83,7 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_pr &mail_ru, &bing, &duckduckgo, -@@ -435,10 +436,10 @@ +@@ -435,10 +436,10 @@ const PrepopulatedEngine* const engines_IN[] = { // Iraq const PrepopulatedEngine* const engines_IQ[] = { @@ -87,7 +95,7 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_pr &petal_search, }; -@@ -525,8 +526,8 @@ +@@ -525,8 +526,8 @@ const PrepopulatedEngine* const engines_KW[] = { // Kazakhstan const PrepopulatedEngine* const engines_KZ[] = { @@ -97,7 +105,7 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_pr &mail_ru, &bing, &duckduckgo, -@@ -894,8 +895,8 @@ +@@ -894,8 +895,8 @@ const PrepopulatedEngine* const engines_TN[] = { // Turkey const PrepopulatedEngine* const engines_TR[] = { @@ -107,13 +115,13 @@ diff -urN chromium-114.0.5735.133.orig/components/search_engines/template_url_pr &yahoo_tr, &bing, &duckduckgo, -@@ -1382,12 +1383,15 @@ +@@ -1388,12 +1389,15 @@ std::vector> GetPrepopulatedEngines( t_urls = GetPrepopulationSetFromCountryID( country_codes::GetCountryIDFromPrefs(prefs)); } - if (default_search_provider_index) { - const auto itr = -- base::ranges::find(t_urls, google.id, &TemplateURLData::prepopulate_id); +- base::ranges::find(t_urls, yandex_ru.id, &TemplateURLData::prepopulate_id); - *default_search_provider_index = - itr == t_urls.end() ? 0 : std::distance(t_urls.begin(), itr); - } diff --git a/SOURCES/SkColor4f-init.patch b/SOURCES/SkColor4f-init.patch new file mode 100644 index 00000000..d33d9681 --- /dev/null +++ b/SOURCES/SkColor4f-init.patch @@ -0,0 +1,34 @@ +../../third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc:94:22: error: no matching constructor for initialization of 'SkColor4f' (aka 'SkRGBA4f') + flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha)); + ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +../../third_party/skia/include/core/SkColor.h:262:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 4 were provided +struct SkRGBA4f { + ^ +../../third_party/skia/include/core/SkColor.h:262:8: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 4 were provided + + +--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc ++++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc +@@ -84,6 +84,7 @@ CanvasStyle::CanvasStyle(const CanvasSty + + void CanvasStyle::ApplyToFlags(cc::PaintFlags& flags, + float global_alpha) const { ++ SkColor4f clr = { 0.0f, 0.0f, 0.0f, global_alpha }; + switch (type_) { + case kColor: + ApplyColorToFlags(flags, global_alpha); +@@ -91,12 +92,12 @@ void CanvasStyle::ApplyToFlags(cc::Paint + case kGradient: + GetCanvasGradient()->GetGradient()->ApplyToFlags(flags, SkMatrix::I(), + ImageDrawOptions()); +- flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha)); ++ flags.setColor(clr); + break; + case kImagePattern: + GetCanvasPattern()->GetPattern()->ApplyToFlags( + flags, AffineTransformToSkMatrix(GetCanvasPattern()->GetTransform())); +- flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha)); ++ flags.setColor(clr); + break; + default: + NOTREACHED(); diff --git a/SOURCES/brandversion-construct.patch b/SOURCES/brandversion-construct.patch new file mode 100644 index 00000000..5215bbbf --- /dev/null +++ b/SOURCES/brandversion-construct.patch @@ -0,0 +1,35 @@ +Add a missing constructor for BrandVersion; otherwise, we get build +errors: + +In file included from ../../chrome/test/chromedriver/capabilities.cc:5: +In file included from ../../chrome/test/chromedriver/capabilities.h:10: +In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/map:60: +In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_tree.h:67: +In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/ext/alloc_traits.h:34: +/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/alloc_traits.h:518:4: error: no matching function for call to 'construct_at' + std::construct_at(__p, std::forward<_Args>(__args)...); + ^~~~~~~~~~~~~~~~~ +/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/vector.tcc:117:21: note: in instantiation of function template specialization 'std::allocator_traits>::construct &, const std::basic_string &>' requested here + _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, + ^ +../../chrome/test/chromedriver/capabilities.cc:358:16: note: in instantiation of function template specialization 'std::vector::emplace_back &, const std::basic_string &>' requested here + brands.emplace_back(*brand, *version); + ^ +/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/stl_construct.h:94:5: note: candidate template ignored: substitution failure [with _Tp = BrandVersion, _Args = &, const std::basic_string &>]: no matching constructor for initialization of 'BrandVersion' + construct_at(_Tp* __location, _Args&&... __args) + ^ +1 error generated. + + + +--- a/chrome/test/chromedriver/chrome/client_hints.h ++++ b/chrome/test/chromedriver/chrome/client_hints.h +@@ -18,6 +18,8 @@ struct BrandVersion { + // * "major version" for "brands", + // * "full version" for "fullVersionList". + std::string version; ++ ++ BrandVersion(const std::string& b, const std::string& v) : brand(b), version(v) { } + }; + + // User-Agent Client Hints diff --git a/SOURCES/chromium-114-typename.patch b/SOURCES/chromium-114-typename.patch deleted file mode 100644 index 2cec4ef7..00000000 --- a/SOURCES/chromium-114-typename.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -up chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.cc.me chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.cc ---- chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.cc.me 2023-05-03 17:46:37.194000834 +0200 -+++ chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.cc 2023-05-03 17:48:05.170317575 +0200 -@@ -87,7 +87,7 @@ ItemSortKey GetSortKey(const Item& item) - // Helper to get an iterator to the last element in the cache. The cache - // must not be empty. - template --SortedItems::iterator GetLastIter(SortedItems& cache) { -+typename SortedItems::iterator GetLastIter(SortedItems& cache) { - CHECK(!cache.empty()); - auto it = cache.end(); - return std::prev(it); -@@ -789,9 +789,9 @@ bool DownloadBubbleUpdateService::Remove - } - - template --SortedItems::iterator -+typename SortedItems::iterator - DownloadBubbleUpdateService::RemoveItemFromCacheByIter( -- SortedItems::iterator iter, -+ typename SortedItems::iterator iter, - SortedItems& cache, - IterMap& iter_map) { - CHECK(iter != cache.end()); -diff -up chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.h.me chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.h ---- chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.h.me 2023-05-03 17:48:14.079551820 +0200 -+++ chromium-113.0.5672.63/chrome/browser/download/bubble/download_bubble_update_service.h 2023-05-03 17:49:24.702387180 +0200 -@@ -208,8 +208,8 @@ class DownloadBubbleUpdateService - - // Removes item if we already have the iterator to it. Returns next iterator. - template -- SortedItems::iterator RemoveItemFromCacheByIter( -- SortedItems::iterator iter, -+ typename SortedItems::iterator RemoveItemFromCacheByIter( -+ typename SortedItems::iterator iter, - SortedItems& cache, - IterMap& iter_map); - -diff -up chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.h.me chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.h ---- chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.h.me 2023-05-14 00:03:48.455961696 +0200 -+++ chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.h 2023-05-14 00:04:24.776589164 +0200 -@@ -587,7 +587,7 @@ class PrintBackendServiceManager { - template - void RunSavedCallbacks(RemoteSavedCallbacks& saved_callbacks, - const RemoteId& remote_id, -- std::remove_reference::type... result); -+ typename std::remove_reference::type... result); - - // Test support for client ID management. - static void SetClientsForTesting( -diff -up chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.cc.me chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.cc ---- chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.cc.me 2023-05-14 12:40:29.555926646 +0200 -+++ chromium-114.0.5735.26/chrome/browser/printing/print_backend_service_manager.cc 2023-05-14 12:41:12.150471791 +0200 -@@ -1477,7 +1477,7 @@ template - void PrintBackendServiceManager::RunSavedCallbacks( - RemoteSavedCallbacks& saved_callbacks, - const RemoteId& remote_id, -- std::remove_reference::type... result) { -+ typename std::remove_reference::type... result) { - auto found_callbacks_map = saved_callbacks.find(remote_id); - if (found_callbacks_map == saved_callbacks.end()) - return; // No callbacks to run. diff --git a/SOURCES/chromium-114-workaround_clang_bug-structured_binding.patch b/SOURCES/chromium-114-workaround_clang_bug-structured_binding.patch deleted file mode 100644 index af8e7370..00000000 --- a/SOURCES/chromium-114-workaround_clang_bug-structured_binding.patch +++ /dev/null @@ -1,81 +0,0 @@ -diff -up chromium-114.0.5735.26/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.workaround_clang_bug-structured_binding chromium-114.0.5735.26/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc ---- chromium-114.0.5735.26/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc.workaround_clang_bug-structured_binding 2023-05-11 03:36:27.000000000 +0200 -+++ chromium-114.0.5735.26/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc 2023-05-14 11:49:42.558129164 +0200 -@@ -238,7 +238,10 @@ const NGLayoutResult* NGGridLayoutAlgori - : BuildGridSizingTree(&oof_children); - - LayoutUnit intrinsic_block_size; -- auto& [grid_items, layout_data, tree_size] = grid_sizing_tree.TreeRootData(); -+ auto& [g_i, l_d, t_s] = grid_sizing_tree.TreeRootData(); -+ auto& grid_items = g_i; -+ auto& layout_data = l_d; -+ auto& tree_size = t_s; - - if (IsBreakInside(BreakToken())) { - // TODO(layout-dev): When we support variable inline-size fragments we'll -@@ -520,8 +523,10 @@ wtf_size_t NGGridLayoutAlgorithm::BuildG - row_auto_repetitions); - - bool has_nested_subgrid = false; -- auto& [grid_items, layout_data, subtree_size] = -- sizing_tree->CreateSizingData(opt_subgrid_data); -+ auto& [g_i, l_d, s_s] = sizing_tree->CreateSizingData(opt_subgrid_data); -+ auto& grid_items = g_i; -+ auto& layout_data = l_d; -+ auto& subtree_size = s_s; - - if (!must_ignore_children) { - // Construct grid items that are not subgridded. -@@ -650,8 +655,10 @@ NGGridSizingTree NGGridLayoutAlgorithm:: - NGGridSizingTree sizing_tree; - - if (const auto* layout_subtree = ConstraintSpace().GridLayoutSubtree()) { -- auto& [grid_items, layout_data, subtree_size] = -- sizing_tree.CreateSizingData(); -+ auto& [g_i, l_d, s_s] = sizing_tree.CreateSizingData(); -+ auto& grid_items = g_i; -+ auto& layout_data = l_d; -+ auto& subtree_size = s_s; - - const auto& node = Node(); - grid_items = -@@ -1640,8 +1647,10 @@ void NGGridLayoutAlgorithm::InitializeTr - const absl::optional& opt_track_direction) const { - DCHECK(sizing_subtree); - -- auto& [grid_items, layout_data, subtree_size] = -- sizing_subtree.SubtreeRootData(); -+ auto& [g_i, l_d, s_s] = sizing_subtree.SubtreeRootData(); -+ auto& grid_items = g_i; -+ auto& layout_data = l_d; -+ auto& subtree_size = s_s; - - auto InitAndCacheTrackSizes = [&](GridTrackSizingDirection track_direction) { - InitializeTrackCollection(opt_subgrid_data, track_direction, &layout_data); -@@ -1825,8 +1834,10 @@ void NGGridLayoutAlgorithm::CompleteTrac - bool* opt_needs_additional_pass) const { - DCHECK(sizing_subtree); - -- auto& [grid_items, layout_data, subtree_size] = -- sizing_subtree.SubtreeRootData(); -+ auto& [g_i, l_d, s_s] = sizing_subtree.SubtreeRootData(); -+ auto& grid_items = g_i; -+ auto& layout_data = l_d; -+ auto& subtree_size = s_s; - - const bool is_for_columns = track_direction == kForColumns; - const bool has_non_definite_track = -diff -up chromium-114.0.5735.26/media/base/cdm_promise_adapter.cc.me chromium-114.0.5735.26/media/base/cdm_promise_adapter.cc ---- chromium-114.0.5735.26/media/base/cdm_promise_adapter.cc.me 2023-05-14 17:35:00.446844465 +0200 -+++ chromium-114.0.5735.26/media/base/cdm_promise_adapter.cc 2023-05-14 17:39:22.991733926 +0200 -@@ -94,7 +94,9 @@ void CdmPromiseAdapter::RejectPromise(ui - void CdmPromiseAdapter::Clear(ClearReason reason) { - // Reject all outstanding promises. - DCHECK(thread_checker_.CalledOnValidThread()); -- for (auto& [promise_id, promise] : promises_) { -+ for (auto& [p_i, p_e] : promises_) { -+ auto& promise_id = p_i; -+ auto& promise = p_e; - TRACE_EVENT_NESTABLE_ASYNC_END1( - "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id), - "status", "cleared"); diff --git a/SOURCES/chromium-115-skia-include.patch b/SOURCES/chromium-115-skia-include.patch new file mode 100644 index 00000000..3f4ba4a4 --- /dev/null +++ b/SOURCES/chromium-115-skia-include.patch @@ -0,0 +1,19 @@ +commit 62f1d7caca64a8df55fb69c913309da2121a537f +Author: tigro +Date: Fri Jul 21 16:51:31 2023 +0300 + + chromium-115-skia-include.patch + +diff --git a/skia/ext/skcolorspace_trfn.cc b/skia/ext/skcolorspace_trfn.cc +index c0d6bd2a8..97c4dfad9 100644 +--- a/skia/ext/skcolorspace_trfn.cc ++++ b/skia/ext/skcolorspace_trfn.cc +@@ -4,6 +4,8 @@ + + #include "skia/ext/skcolorspace_trfn.h" + ++#include ++ + namespace skia { + + namespace { diff --git a/SOURCES/chromium-115-typename.patch b/SOURCES/chromium-115-typename.patch new file mode 100644 index 00000000..fc704202 --- /dev/null +++ b/SOURCES/chromium-115-typename.patch @@ -0,0 +1,48 @@ +diff -up chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc.typename chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc +--- chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc.typename 2023-06-17 14:50:56.342591702 +0200 ++++ chromium-115.0.5790.24/chrome/browser/download/bubble/download_bubble_update_service.cc 2023-06-17 14:57:48.024377375 +0200 +@@ -91,7 +91,7 @@ ItemSortKey GetSortKey(const Item& item) + // Helper to get an iterator to the last element in the cache. The cache + // must not be empty. + template +-SortedItems::const_iterator GetLastIter(const SortedItems& cache) { ++typename SortedItems::const_iterator GetLastIter(const SortedItems& cache) { + CHECK(!cache.empty()); + auto it = cache.end(); + return std::prev(it); +@@ -967,9 +967,9 @@ bool DownloadBubbleUpdateService::CacheM + } + + template +-SortedItems::iterator ++typename SortedItems::iterator + DownloadBubbleUpdateService::CacheManager::RemoveItemFromCacheByIter( +- SortedItems::iterator iter, ++ typename SortedItems::iterator iter, + SortedItems& cache, + IterMap& iter_map) { + CHECK(iter != cache.end()); +diff -up chromium-115.0.5790.32/components/optimization_guide/core/tflite_model_executor.h.me chromium-115.0.5790.32/components/optimization_guide/core/tflite_model_executor.h +--- chromium-115.0.5790.32/components/optimization_guide/core/tflite_model_executor.h.me 2023-06-18 21:52:53.515625237 +0200 ++++ chromium-115.0.5790.32/components/optimization_guide/core/tflite_model_executor.h 2023-06-18 21:53:06.881881293 +0200 +@@ -189,7 +189,7 @@ class TFLiteModelExecutor : public Model + void SendForBatchExecution( + BatchExecutionCallback callback_on_complete, + base::TimeTicks start_time, +- ModelExecutor::ConstRefInputVector inputs) ++ typename ModelExecutor::ConstRefInputVector inputs) + override { + DCHECK(execution_task_runner_->RunsTasksInCurrentSequence()); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +diff -up chromium-115.0.5790.32/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc.me1 chromium-115.0.5790.32/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc +--- chromium-115.0.5790.32/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc.me1 2023-06-19 10:03:32.319218678 +0200 ++++ chromium-115.0.5790.32/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc 2023-06-19 10:04:12.023942232 +0200 +@@ -169,7 +169,7 @@ class HTMLFastPathParser { + using Span = base::span; + using USpan = base::span; + // 32 matches that used by HTMLToken::Attribute. +- typedef std::conditional, ++ typedef typename std::conditional, + UCharLiteralBuffer<32>, + LCharLiteralBuffer<32>>::type LiteralBufferType; + typedef UCharLiteralBuffer<32> UCharLiteralBufferType; diff --git a/SOURCES/chromium-115-verify_name_match-include.patch b/SOURCES/chromium-115-verify_name_match-include.patch new file mode 100644 index 00000000..26453108 --- /dev/null +++ b/SOURCES/chromium-115-verify_name_match-include.patch @@ -0,0 +1,25 @@ +From 74c464ae56275f4de46b7d1f7e103fa758a637d2 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz +Date: Wed, 31 May 2023 17:03:02 +0000 +Subject: [PATCH] IWYU: std::vector used in verify_name_match.h without include + +Bug: 957519 +Change-Id: Ie753fadae35adb293f854a0f8d4f675e67a2fc31 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4533815 +Reviewed-by: David Benjamin +Commit-Queue: José Dapena Paz +Cr-Commit-Position: refs/heads/main@{#1151307} +--- + +diff --git a/net/cert/pki/verify_name_match.h b/net/cert/pki/verify_name_match.h +index d22cf7f..e30b221 100644 +--- a/net/cert/pki/verify_name_match.h ++++ b/net/cert/pki/verify_name_match.h +@@ -6,6 +6,7 @@ + #define NET_CERT_PKI_VERIFY_NAME_MATCH_H_ + + #include ++#include + + #include "net/base/net_export.h" + diff --git a/SOURCES/chromium-115-workaround_clang_bug-structured_binding.patch b/SOURCES/chromium-115-workaround_clang_bug-structured_binding.patch new file mode 100644 index 00000000..e5c9f2e0 --- /dev/null +++ b/SOURCES/chromium-115-workaround_clang_bug-structured_binding.patch @@ -0,0 +1,60 @@ +author: Andres Salomon +description: work around https://github.com/llvm/llvm-project/issues/48582 + +../../media/base/cdm_promise_adapter.cc:99:66: error: reference to local binding 'promise_id' declared in enclosing function 'media::CdmPromiseAdapter::Clear' + "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id), + ^ +../../media/base/cdm_promise_adapter.cc:97:15: note: 'promise_id' declared here + for (auto& [promise_id, promise] : promises_) { + ^ + +This is some kind of clang14 scope bug, whereby variable are defined +in a structured binding, and then used inside of a (valid, but) different +scope. Eg, + auto& [foo, bar, baz] = sizing_tree->CreateSizingData(); + do { auto& x = bar; } while (0); + auto x = [&](GridTrackSizingDirection lambdavar) { + for (auto& i : foo) { ... } + } +The compiler gets confused about scope and spits out an error. The +workaround is to define the variable not in a structured binding. + +--- a/media/base/cdm_promise_adapter.cc ++++ b/media/base/cdm_promise_adapter.cc +@@ -94,7 +94,9 @@ void CdmPromiseAdapter::RejectPromise(ui + void CdmPromiseAdapter::Clear(ClearReason reason) { + // Reject all outstanding promises. + DCHECK(thread_checker_.CalledOnValidThread()); +- for (auto& [promise_id, promise] : promises_) { ++ for (auto& [p_id, p] : promises_) { ++ auto& promise_id = p_id; ++ auto& promise = p; + TRACE_EVENT_NESTABLE_ASYNC_END1( + "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id), + "status", "cleared"); +--- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc ++++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc +@@ -1798,8 +1798,10 @@ void NGGridLayoutAlgorithm::CompleteTrac + bool* opt_needs_additional_pass) const { + DCHECK(sizing_subtree); + +- auto& [grid_items, layout_data, subtree_size] = ++ auto& [g_i, l_d, subtree_size] = + sizing_subtree.SubtreeRootData(); ++ auto& grid_items = g_i; ++ auto& layout_data = l_d; + + const bool is_for_columns = track_direction == kForColumns; + const bool has_non_definite_track = +--- a/content/browser/service_worker/service_worker_context_wrapper.cc ++++ b/content/browser/service_worker/service_worker_context_wrapper.cc +@@ -1393,7 +1393,8 @@ void ServiceWorkerContextWrapper::MaybeP + return; + } + +- auto [document_url, key, callback] = std::move(*request); ++ auto [d_u, key, callback] = std::move(*request); ++ auto document_url = std::move(d_u); + + DCHECK(document_url.is_valid()); + TRACE_EVENT1("ServiceWorker", diff --git a/SOURCES/chromium-115.0.5790.98-initial_prefs-etc-path.patch b/SOURCES/chromium-115.0.5790.98-initial_prefs-etc-path.patch new file mode 100644 index 00000000..1743103f --- /dev/null +++ b/SOURCES/chromium-115.0.5790.98-initial_prefs-etc-path.patch @@ -0,0 +1,19 @@ +diff --git a/chrome/browser/first_run/first_run_internal_linux.cc b/chrome/browser/first_run/first_run_internal_linux.cc +index 33fd57901..989069437 100644 +--- a/chrome/browser/first_run/first_run_internal_linux.cc ++++ b/chrome/browser/first_run/first_run_internal_linux.cc +@@ -20,12 +20,9 @@ bool IsOrganicFirstRun() { + + base::FilePath InitialPrefsPath() { + // The standard location of the initial prefs is next to the chrome binary. ++ // ...but we patch it to use /etc/chromium + base::FilePath dir_exe; +- if (!base::PathService::Get(base::DIR_EXE, &dir_exe)) { +- return base::FilePath(); +- } +- +- return installer::InitialPreferences::Path(dir_exe); ++ dir_exe = base::FilePath("/etc/chromium"); + } + + } // namespace internal diff --git a/SOURCES/chromium-91.0.4472.77-initial_prefs-etc-path.patch b/SOURCES/chromium-91.0.4472.77-initial_prefs-etc-path.patch deleted file mode 100644 index 96825e29..00000000 --- a/SOURCES/chromium-91.0.4472.77-initial_prefs-etc-path.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -up chromium-91.0.4472.77/chrome/browser/first_run/first_run_internal_linux.cc.etc chromium-91.0.4472.77/chrome/browser/first_run/first_run_internal_linux.cc ---- chromium-91.0.4472.77/chrome/browser/first_run/first_run_internal_linux.cc.etc 2021-06-01 16:37:39.182531036 -0400 -+++ chromium-91.0.4472.77/chrome/browser/first_run/first_run_internal_linux.cc 2021-06-01 16:39:31.590102809 -0400 -@@ -20,9 +20,9 @@ bool IsOrganicFirstRun() { - - base::FilePath InitialPrefsPath() { - // The standard location of the initial prefs is next to the chrome binary. -+ // ...but we patch it to use /etc/chromium - base::FilePath initial_prefs; -- if (!base::PathService::Get(base::DIR_EXE, &initial_prefs)) -- return base::FilePath(); -+ initial_prefs = base::FilePath("/etc/chromium"); - - base::FilePath new_path = initial_prefs.AppendASCII(installer::kInitialPrefs); - if (base::PathIsReadable(new_path)) diff --git a/SOURCES/cookieresult.patch b/SOURCES/cookieresult.patch new file mode 100644 index 00000000..ed9fd5bb --- /dev/null +++ b/SOURCES/cookieresult.patch @@ -0,0 +1,23 @@ +../../chrome/browser/signin/bound_session_credentials/bound_session_refresh_cookie_fetcher_impl.cc:106:7: error: no matching constructor for initialization of 'BoundSessionRefreshCookieFetcher::Result' + Result(net_error, headers ? absl::optional(headers->response_code()) + ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +../../chrome/browser/signin/bound_session_credentials/bound_session_refresh_cookie_fetcher.h:17:10: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided + struct Result { + ^ + + + +--- a/chrome/browser/signin/bound_session_credentials/bound_session_refresh_cookie_fetcher_impl.cc ++++ b/chrome/browser/signin/bound_session_credentials/bound_session_refresh_cookie_fetcher_impl.cc +@@ -101,8 +101,8 @@ void BoundSessionRefreshCookieFetcherImp + void BoundSessionRefreshCookieFetcherImpl::OnURLLoaderComplete( + scoped_refptr headers) { + net::Error net_error = static_cast(url_loader_->NetError()); ++ Result r = { net_error, headers ? absl::optional(headers->response_code()) ++ : absl::nullopt }; + +- std::move(callback_).Run( +- Result(net_error, headers ? absl::optional(headers->response_code()) +- : absl::nullopt)); ++ std::move(callback_).Run(r); + } diff --git a/SPECS/chromium.spec b/SPECS/chromium.spec index e3c6376d..6708daf7 100644 --- a/SPECS/chromium.spec +++ b/SPECS/chromium.spec @@ -124,7 +124,7 @@ # for RHEL7, append libfontconfig to the end # make sure there is not a trailing | at the end of the list # We always filter provides. We only filter Requires when building shared. -%global __provides_exclude_from ^(%{chromium_path}/.*\\.so|%{chromium_path}/.*\\.so.*)$ +%global __provides_exclude_from ^(%{chromium_path}/.*\\.so|%{chromium_path}/.*\\.so.*|%{chromium_lib}/.*\\.so)$ %global __requires_exclude ^(%{chromium_path}/.*\\.so|%{chromium_path}/.*\\.so.*|%{chromium_lib}/.*\\.so)$ # enable clang by default @@ -138,7 +138,7 @@ %endif # enable system brotli -%global bundlebrotli 0 +%global bundlebrotli 1 # Chromium's fork of ICU is now something we can't unbundle. # This is left here to ease the change if that ever switches. @@ -208,6 +208,13 @@ %endif %endif +# Build with GOST patches +# https://github.com/deemru/chromium-gost/ +%global gost 1 +%define chromium_gost_commit eff0aba6091bcf9ca9b8a6d31402dfe55ddaf8ce +%define msspi_commit dddd947089110165db71fdc660157f102bab3660 +%define chromium_path_gost %{_builddir}/chromium-gost + ### From 2013 until early 2021, Google permitted distribution builds of ### Chromium to access Google APIs that added significant features to ### Chromium including, but not limited to, Sync and geolocation. @@ -242,8 +249,8 @@ %endif Name: chromium%{chromium_channel} -Version: 114.0.5735.198 -Release: 1%{?dist}.inferit.1 +Version: 115.0.5790.98 +Release: 1%{?dist}.inferit Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use Url: http://www.chromium.org/Home License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND GPL-2.0-or-later AND ISC AND OpenSSL AND (MPL-1.1 OR GPL-2.0-only OR LGPL-2.0-only) @@ -252,7 +259,7 @@ License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND G Patch0: chromium-70.0.3538.67-sandbox-pie.patch # Use /etc/chromium for initial_prefs -Patch1: chromium-91.0.4472.77-initial_prefs-etc-path.patch +Patch1: chromium-115.0.5790.98-initial_prefs-etc-path.patch # Use gn system files Patch2: chromium-107.0.5304.110-gn-system.patch @@ -261,7 +268,7 @@ Patch2: chromium-107.0.5304.110-gn-system.patch Patch5: chromium-77.0.3865.75-no-zlib-mangle.patch # Do not use unrar code, it is non-free -Patch6: chromium-114-norar.patch +#Patch6: chromium-114-norar.patch # Try to load widevine from other places Patch8: chromium-108-widevine-other-locations.patch @@ -359,9 +366,19 @@ Patch130: chromium-114-revert-av1enc-el9.patch # Apply these patches to work around EPEL8 issues Patch300: chromium-113-rhel8-force-disable-use_gnome_keyring.patch # workaround for clang bug, https://github.com/llvm/llvm-project/issues/57826 -Patch302: chromium-114-workaround_clang_bug-structured_binding.patch +Patch302: chromium-115-workaround_clang_bug-structured_binding.patch # missing typename -Patch303: chromium-114-typename.patch +Patch303: chromium-115-typename.patch +# Skia issue +Patch304: chromium-115-skia-include.patch +# IWYU: std::vector used in verify_name_match.h without include +Patch305: chromium-115-verify_name_match-include.patch +# flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha)); +Patch306: SkColor4f-init.patch +# Result(net_error, headers ? absl::optional(headers->response_code()) +Patch307: cookieresult.patch +# std::construct_at(__p, std::forward<_Args>(__args)...) +Patch308: brandversion-construct.patch # Qt issue Patch320: chromium-114-add_qt6_linuxui_backend.patch Patch321: chromium-114-qt-handle_scale_factor_changes.patch @@ -404,6 +421,10 @@ Source21: https://nodejs.org/dist/latest-v16.x/node-%{nodejs_version}-linux-arm6 # Yandex logo Source50: https://upload.wikimedia.org/wikipedia/commons/f/f1/Yandex_logo_2021_Russian.svg +# GOST +Source101: https://github.com/deemru/chromium-gost/archive/%{chromium_gost_commit}.tar.gz?/chromium-gost-%{chromium_gost_commit}.tar.gz +Source102: https://github.com/deemru/msspi/archive/%{msspi_commit}.tar.gz?/msspi-%{msspi_commit}.tar.gz + %if %{clang} %if 0%{?rhel} == 7 BuildRequires: llvm-toolset-%{llvm_toolset_version} @@ -826,8 +847,16 @@ Provides: bundled(xdg-user-dirs) Requires(post): /usr/sbin/semanage Requires(post): /usr/sbin/restorecon +%if %{gost} +Provides: %{name}-gost-lib = %{version}-%{release} +%endif + %description Chromium is an open-source web browser, powered by WebKit (Blink). +%if %{gost} +chromium-gost patches are integrated, this Chromium supports GOST TLS +if proprietary CryptoPro is installed. +%endif %package common Summary: Files needed for both the headless_shell and full Chromium @@ -895,12 +924,38 @@ udev. %prep %setup -q -n chromium-%{version} +%if %{gost} +rm -rf %{chromium_path_gost} +mkdir -p %{chromium_path_gost} +tar -C %{chromium_path_gost} --strip 1 -xf %{SOURCE101} +sed -i \ + -e "s,^#include <../ssl/internal.h>,#include \"${PWD}/third_party/boringssl/src/ssl/internal.h\",g" \ + %{chromium_path_gost}/src/gostssl.cpp +tar -C %{chromium_path_gost}/src/msspi --strip 1 -xf %{SOURCE102} +sed -i'' %{chromium_path_gost}/patch/chromium.patch \ + -e 's/ (Chromium GOST)//g' \ + -e 's/Chromium GOST/Chromium/g' \ + -e 's/Chromium-Gost/Chromium/g' \ + -e 's/"chromium-gost"/"chromium-browser"/g' \ + -e 's/"chromium-gost.desktop"/"chromium-browser.desktop"/g' \ + -e 's/(%s; Chromium GOST)/(%s)/' \ + -- +patch -p1 < %{chromium_path_gost}/patch/chromium.patch +( cd ./third_party/boringssl/src +patch -p1 < %{chromium_path_gost}/patch/boringssl.patch ) + +cp -f %{chromium_path_gost}/src/gostssl.cpp third_party/boringssl/gostssl.cpp +cp -f %{chromium_path_gost}/src/msspi/src/* third_party/boringssl +cp -f %{chromium_path_gost}/src/msspi/third_party/cprocsp/include/* third_party/boringssl/src/include +%endif + + ### Chromium Fedora Patches ### %patch -P0 -p1 -b .sandboxpie %patch -P1 -p1 -b .etc %patch -P2 -p1 -b .gnsystem %patch -P5 -p1 -b .nozlibmangle -%patch -P6 -p1 -b .nounrar +#patch -P6 -p1 -b .nounrar %patch -P8 -p1 -b .widevine-other-locations %patch -P11 -p1 -b .py3 @@ -961,7 +1016,9 @@ udev. %patch -P110 -p1 -b .buildflag-el7 %endif +%if ! %{clang} %patch -P122 -p1 -b .gcc13 +%endif %if 0%{?rhel} == 9 %patch -P130 -p1 -b .revert-av1enc @@ -978,8 +1035,14 @@ udev. %endif %patch -P303 -p1 -b .typename +%patch -P304 -p1 -b .skia-include +%patch -P305 -p1 -b .verify_name_match-include +%patch -P306 -p1 -b .SkColor4f-init +%patch -P307 -p1 -b .cookieresult +%patch -P308 -p1 -b .brandversion-construct -%patch -P320 -p1 -b .add_qt6_linuxui_backend + +#patch -P320 -p1 -b .add_qt6_linuxui_backend %patch -P321 -p1 -b .handle_scale_factor_changes %patch -P322 -p1 -b .fix_font_double_scaling %patch -P323 -p1 -b .qt_deps @@ -1038,7 +1101,7 @@ cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h %endif # Hard code extra version -sed -i 's/getenv("CHROME_VERSION_EXTRA")/"MSVSphere"/' chrome/common/channel_info_posix.cc +sed -i 's/getenv("CHROME_VERSION_EXTRA")/"MSVSphere, %{name} %{version}-%{release}%{?gost: + GOST TLS via CryptoPro}"/' chrome/common/channel_info_posix.cc # Fix hardcoded path in remoting code sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' remoting/host/setup/daemon_controller_delegate_linux.cc @@ -1209,6 +1272,7 @@ CHROMIUM_BROWSER_GN_DEFINES+=' rtc_use_pipewire=true rtc_link_pipewire=true' %endif CHROMIUM_BROWSER_GN_DEFINES+=' use_system_libffi=true' +CHROMIUM_BROWSER_GN_DEFINES+=' enable_rust=false' export CHROMIUM_BROWSER_GN_DEFINES # headless gn defines @@ -1222,6 +1286,7 @@ CHROMIUM_HEADLESS_GN_DEFINES+=' use_libpci=false use_pulseaudio=false use_udev=f CHROMIUM_HEADLESS_GN_DEFINES+=' v8_enable_lazy_source_positions=false use_glib=false use_gtk=false use_pangocairo=false' CHROMIUM_HEADLESS_GN_DEFINES+=' use_qt=false is_component_build=false enable_ffmpeg_video_decoders=false media_use_ffmpeg=false' CHROMIUM_HEADLESS_GN_DEFINES+=' media_use_libvpx=false proprietary_codecs=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' enable_rust=false' export CHROMIUM_HEADLESS_GN_DEFINES build/linux/unbundle/replace_gn_files.py --system-libraries \ @@ -1679,6 +1744,12 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %{chromium_path}/chromedriver %changelog +* Fri Jul 21 2023 Arkady L. Shane - 115.0.5790.98-1.inferit +- Update to 115.0.5790.98 +- Disable rust +- Added many fixes +- Added GOST support + * Fri Jul 21 2023 Arkady L. Shane - 114.0.5735.198-1.inferit.1 - Use original tarball - Build with internal FFmpeg