ungoogled-software / ungoogled-chromium

Google Chromium, sans integration with Google
BSD 3-Clause "New" or "Revised" License
20.8k stars 844 forks source link

Update to Chromium 131.0.6778.69 #3089

Closed Ahrotahn closed 1 week ago

Ahrotahn commented 1 week ago

This PR Updates to Chromium 131.0.6778.69.

Notes:


Change log Blog post

Ahrotahn commented 1 week ago

Side-note: The tarballs for 130 were delayed due to failures of tarball builds for 131. The failure was fixed in 132, so as far as I can tell this means that there may not be any tarballs available at all for 131.

lofcz commented 1 week ago

There seems to be an issue with windows-fix-building-without-safebrowsing.patch from the Windows repository when building this PR - the patch doesn't apply cleanly. I have a fix for that but not sure whether it's correct - I've removed some of the switch cases, building now to verify.

teeminus commented 1 week ago

I already fixed that platform patch and I am waiting for compiling to complete.

lofcz commented 1 week ago

@teeminus would you mind sharing the updated patch? Mine just blew out after 6h building :/

teeminus commented 1 week ago

@Ahrotahn I got the following linking error:

FAILED: chrome.dll chrome.dll.lib chrome.dll.pdb
..\..\third_party\llvm-build\Release+Asserts\bin\lld-link.exe "/OUT:./chrome.dll" /nologo -libpath:..\..\third_party\llvm-build\Release+Asserts\lib\clang\20\lib\windows "-libpath:../../../../../Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/ATLMFC/lib/x64" "-libpath:../../../../../Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/lib/x64" "-libpath:../../../../../Program Files (x86)/Windows Kits/10/lib/10.0.22621.0/ucrt/x64" "-libpath:../../../../../Program Files (x86)/Windows Kits/10/lib/10.0.22621.0/um/x64" /MACHINE:X64  "/IMPLIB:./chrome.dll.lib" /DLL "/PDB:./chrome.dll.pdb" "@./chrome.dll.rsp"
lld-link: error: undefined symbol: public: __cdecl enterprise_connectors::ContentAnalysisDelegate::Data::Data(void)
>>> referenced by ../../chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
>>>               obj/chrome/browser/ui/tab_contents/impl/chrome_web_contents_view_handle_drop.obj

lld-link: error: undefined symbol: public: static bool __cdecl enterprise_connectors::ContentAnalysisDelegate::IsEnabled(class Profile *, class GURL, struct enterprise_connectors::ContentAnalysisDelegate::Data *, enum enterprise_connectors::AnalysisConnector)
>>> referenced by ../../chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
>>>               obj/chrome/browser/ui/tab_contents/impl/chrome_web_contents_view_handle_drop.obj

lld-link: error: undefined symbol: public: __cdecl enterprise_connectors::ContentAnalysisDelegate::Data::Data(struct enterprise_connectors::ContentAnalysisDelegate::Data &&)
>>> referenced by ../../chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
>>>               obj/chrome/browser/ui/tab_contents/impl/chrome_web_contents_view_handle_drop.obj

lld-link: error: undefined symbol: public: __cdecl enterprise_connectors::ContentAnalysisDelegate::Data::~Data(void)
>>> referenced by ../../chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
>>>               obj/chrome/browser/ui/tab_contents/impl/chrome_web_contents_view_handle_drop.obj

lld-link: error: undefined symbol: public: static void __cdecl enterprise_connectors::ContentAnalysisDelegate::CreateForWebContents(class content::WebContents *, struct enterprise_connectors::ContentAnalysisDelegate::Data, class base::OnceCallback<void __cdecl(struct enterprise_connectors::ContentAnalysisDelegate::Data const &, struct enterprise_connectors::ContentAnalysisDelegate::Result &)>, enum safe_browsing::DeepScanAccessPoint)
>>> referenced by ../../chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
>>>               obj/chrome/browser/ui/tab_contents/impl/chrome_web_contents_view_handle_drop.obj

I fixed it by excluding chrome_web_contents_view_handle_drop.cc from the list of files to compile but I am not quite sure if this is the correct approach or if my patch is correct/complete:

--- a/chrome/browser/ui/tab_contents/BUILD.gn
+++ b/chrome/browser/ui/tab_contents/BUILD.gn
@@ -50,7 +50,6 @@ source_set("impl") {
   if (is_win || is_mac || is_linux || is_chromeos) {
     sources += [
       "chrome_web_contents_menu_helper.cc",
-      "chrome_web_contents_view_handle_drop.cc",
     ]
   }
Ahrotahn commented 1 week ago

That's correct, we had that removed previously but [5903969] moved it and I forgot to add a removal for the the new location. We had the header removed as well but I guess that wasn't necessary.
I'll update the PR with the change in a bit.

teeminus commented 1 week ago

Problem solved, thank you very much šŸ˜ƒ

lofcz commented 1 week ago

@teeminus the update for windows-fix-building-without-safebrowsing.patch is still required?

teeminus commented 1 week ago

Builds and runs fine on windows.

@teeminus the update for windows-fix-building-without-safebrowsing.patch is still required?

Yes, the patch needs to be updated. Iirc the patch does not apply completely because there are some minor changes in the source files which were straight forward to adapt.

lofcz commented 1 week ago

Is the updated Windows patch available? I'm working on a build restoring some JS APIs and this piece is missing to complete M131 build for me.

teeminus commented 1 week ago

I usually push my changes for for windows repo once the PR in this repo has been merged. Otherwise there would be an inconsistency as patches and submodule do not match.

In a few days, this PR will we merged. If that's to late I can push my changes without updating the submodule so you would have to manually replace it with the state of this PR.

lofcz commented 1 week ago

I already have ungoogled-chromium and ungoogled-chromium-windows forked with the submodule in the Windows repo pointed to my fork. It would be appreciated if you could share the updated patch as a gist or just in a comment. šŸ™šŸ»

clickot commented 1 week ago

clones, builds and runs fine for portable linux

teeminus commented 1 week ago

@lofcz I pushed the patches for .69 to my update branch.

Cubik65536 commented 1 week ago

I'm seeing

ninja: error: '../../chrome/browser/resources/media/mei_preload/preloaded_data.pb', needed by 'phony/chrome/browser/resources/media/mei_preload/component_bundle', missing and no known rule to make it

when building for macOS.

It used clone to fetch the source, but the chrome/browser/resources/media/mei_preload/preloaded_data.pb is indeed missing.

I don't have much free time to figure it out now, so I'll look deeper into this later.

Ahrotahn commented 1 week ago

It seems they added a new dependency for macOS in [5906628]. See if this change is all that's needed, if so then we should add that to disable-mei-preload.patch:

--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -1212,7 +1212,6 @@
       ":optimization_guide_library",
       ":swiftshader_binaries",
       ":widevine_cdm_library",
-      "//chrome/browser/resources/media/mei_preload:component_bundle",
       "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component_bundle",
     ]
Cubik65536 commented 6 days ago

It seems they added a new dependency for macOS in [5906628]. See if this change is all that's needed, if so then we should add that to disable-mei-preload.patch:

--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -1212,7 +1212,6 @@
       ":optimization_guide_library",
       ":swiftshader_binaries",
       ":widevine_cdm_library",
-      "//chrome/browser/resources/media/mei_preload:component_bundle",
       "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component_bundle",
     ]

Another error came up:

ninja: error: '../../components/privacy_sandbox/privacy_sandbox_attestations/preload/privacy-sandbox-attestations.dat', needed by 'phony/components/privacy_sandbox/privacy_sandbox_attestations/preload/component_bundle', missing and no known rule to make it

so I changed the patch to

--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -1212,8 +1212,6 @@ if (is_win) {
       ":optimization_guide_library",
       ":swiftshader_binaries",
       ":widevine_cdm_library",
-      "//chrome/browser/resources/media/mei_preload:component_bundle",
-      "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component_bundle",
     ]

     if (is_chrome_branded) {

Currently building [18966/51341], will come back if have other issues.

Cubik65536 commented 6 days ago

It seems they added a new dependency for macOS in [5906628]. See if this change is all that's needed, if so then we should add that to disable-mei-preload.patch:

--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -1212,7 +1212,6 @@
       ":optimization_guide_library",
       ":swiftshader_binaries",
       ":widevine_cdm_library",
-      "//chrome/browser/resources/media/mei_preload:component_bundle",
       "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component_bundle",
     ]

Another error came up:

ninja: error: '../../components/privacy_sandbox/privacy_sandbox_attestations/preload/privacy-sandbox-attestations.dat', needed by 'phony/components/privacy_sandbox/privacy_sandbox_attestations/preload/component_bundle', missing and no known rule to make it

so I changed the patch to

--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -1212,8 +1212,6 @@ if (is_win) {
       ":optimization_guide_library",
       ":swiftshader_binaries",
       ":widevine_cdm_library",
-      "//chrome/browser/resources/media/mei_preload:component_bundle",
-      "//components/privacy_sandbox/privacy_sandbox_attestations/preload:component_bundle",
     ]

     if (is_chrome_branded) {

Currently building [18966/51341], will come back if have other issues.

Can confirm that the change above (that removes two depedencies) is all changes needed to make it build on macOS (arm64). /cc @Ahrotahn

Ahrotahn commented 6 days ago

Good to know! I guess the easiest route for now would be to include those changes as a platform patch. Next time we do an update those changes should probably be moved into the disable-mei-preload and disable-privacy-sandbox patches in the core repo.

Cubik65536 commented 6 days ago

Another issue appeared on GitHub Action runner:

[10171/50939] OBJCXX obj/ui/events/events_base/keyboard_code_conversion_mac.o
FAILED: obj/ui/events/events_base/keyboard_code_conversion_mac.o 
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/ui/events/events_base/keyboard_code_conversion_mac.o.d -DEVENTS_BASE_IMPLEMENTATION -DOFFICIAL_BUILD -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DCR_XCODE_VERSION=1501 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -DCR_LIBCXX_REVISION=6a68fd412b9aecd515a20a7cf84d11b598bfaf96 -DTEMP_REBUILD_HACK -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DCR_CXX_INCLUDE=\"third_party/rust/chromium_crates_io/vendor/cxx-1.0.128/include/cxx.h\" -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n  -Wall -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wthread-safety -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wshadow -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -femit-dwarf-unwind=no-compact-unwind -fcolor-diagnostics -fmerge-all-constants -fno-sized-deallocation -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -flto=thin -fsplit-lto-unit -mllvm -inlinehint-threshold=360 -fwhole-program-vtables -fcomplete-member-pointers --target=x86_64-apple-macos -Wno-unknown-warning-option -no-canonical-prefixes -ftrivial-auto-var-init=pattern -O2 -fno-math-errno -fno-omit-frame-pointer -g0 -isysroot ../../../../../../../../../Applications/Xcode_15.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacos-version-min=11.0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -DPROTOBUF_ALLOW_DEPRECATED=1 -Wimplicit-retain-self -Wobjc-missing-property-synthesis -std=c++20 -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystem../../third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include -fobjc-arc -fno-objc-arc-exceptions -fvisibility-inlines-hidden -c ../../ui/events/keycodes/keyboard_code_conversion_mac.mm -o obj/ui/events/events_base/keyboard_code_conversion_mac.o
../../ui/events/keycodes/keyboard_code_conversion_mac.mm:150:8: error: use of undeclared identifier 'kVK_ContextualMenu'
  150 |       {kVK_ContextualMenu, DomKey::CONTEXT_MENU},
      |        ^
1 error generated.

(ref. https://github.com/ungoogled-software/ungoogled-chromium-macos/actions/runs/11861115111/job/33059598542)

and it was not there when building locally...

Ahrotahn commented 6 days ago

It seems that kVK_ContextualMenu wasn't added until macOS 15, so you would either need to update the action to use a newer version or include a new patch that reverts the change in [5894764].

Cubik65536 commented 5 days ago

It seems that kVK_ContextualMenu wasn't added until macOS 15, so you would either need to update the action to use a newer version or include a new patch that reverts the change in [5894764].

Thanks for the information, I am super busy during these days, I'll take a closer look later.

Ahrotahn commented 5 days ago

I can't test this but __MAC_OS_X_VERSION_MAX_ALLOWED should be set to the version of the SDK you're building with. So as an alternative, if you want to support older versions, you could handle the problem by adding a patch with something like this:

--- a/ui/events/keycodes/keyboard_code_conversion_mac.mm
+++ b/ui/events/keycodes/keyboard_code_conversion_mac.mm
@@ -48,6 +48,11 @@
   return base::IsValidCodepoint(c) && !base::IsUnicodeControl(c);
 }

+#if (__MAC_OS_X_VERSION_MAX_ALLOWED < 150000)
+constexpr int kVK_RightCommand = 0x36;
+constexpr int kVK_ContextualMenu = 0x6E;
+#endif
+
 bool IsKeypadOrNumericKeyEvent(NSEvent* event) {
   // Check that this is the type of event that has a keyCode.
   switch (event.type) {