Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update brave to v1.52.122 #54

Closed
wants to merge 3 commits into from

Conversation

YakoYakoYokuYoku
Copy link
Contributor

@YakoYakoYokuYoku YakoYakoYokuYoku commented May 30, 2023

This PR updates brave to 1.52.122.

Changes:

  • Sync with extra/chromium at 114.0.5735.110.
  • Removed stha09's patches due to them not being updated as of now.
  • Use patches from Arch's extra/chromium GitLab repo.
  • Updated plus pruned some intree patches.
  • Refactored build() to use fewer LOCs.

TODOs:

  • Prepare sources (makepkg -o).
  • Build package (I may require a more powerful machine to compile things faster) see comment down below.
  • Test.

@alerque
Copy link
Owner

alerque commented May 30, 2023

I'll throw this at a beefy machine and see if it has anything for us tomorrow ;-)

@alerque
Copy link
Owner

alerque commented May 31, 2023

Not so much luck, it looks like a patch is out of date somewhere:

<truncated>
Apply Chromium patches...
patching file google_apis/google_api_keys.cc
Hunk #1 succeeded at 170 (offset 16 lines).
patching file chrome/test/chromedriver/chrome/web_view_impl.cc
patching file src/System/LRUCache.hpp
patching file src/dawn/native/stream/ByteVectorSink.h
patching file base/debug/profiler.h
patching file base/strings/string_piece.h
patching file device/base/synchronization/one_writer_seqlock.h
patching file pdf/document_attachment_info.h
patching file chrome/browser/privacy_budget/encountered_surface_tracker.h
patching file ui/base/prediction/kalman_filter.h
patching file ui/events/types/scroll_types.h
patching file ui/gfx/geometry/linear_gradient.h
patching file AUTHORS
patching file discovery/dnssd/public/dns_sd_txt_record.h
patching file util/base64.h
patching file constants/annotation_flags.h
patching file chrome/services/file_util/public/mojom/BUILD.gn
patching file chrome/services/file_util/safe_archive_analyzer.h
patching file cc/trees/target_property.cc
patching file components/metrics/psi_memory_parser.h
patching file components/services/app_service/public/cpp/capability_access.h
patching file components/soda/constants.h
patching file device/base/synchronization/one_writer_seqlock.h
patching file device/bluetooth/public/cpp/bluetooth_uuid.h
patching file extensions/common/constants.h
patching file extensions/renderer/bindings/api_invocation_errors.h
patching file net/base/parse_number.h
patching file net/cookies/cookie_inclusion_status.h
patching file sandbox/linux/syscall_broker/broker_file_permission.h
patching file third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
Hunk #1 succeeded at 6 with fuzz 1 (offset -2 lines).
patching file third_party/blink/public/common/origin_trials/origin_trial_public_key.h
patching file ui/gfx/geometry/linear_gradient.h
patching file gpu/config/gpu_feature_info.h
patching file components/autofill/core/browser/autofill_ablation_study.h
patching file components/crash/core/app/crash_reporter_client.h
patching file components/feature_engagement/internal/event_storage_validator.h
patching file components/omnibox/browser/on_device_head_model.h
patching file components/password_manager/core/browser/generation/password_generator.h
patching file components/payments/content/utility/fingerprint_parser.h
patching file components/viz/common/view_transition_element_resource_id.h
patching file net/cert/pki/string_util.h
patching file net/cookies/cookie_inclusion_status.h
patching file third_party/s2cellid/README.chromium
patching file third_party/s2cellid/src/s2/util/math/vector.h
patching file chrome/browser/media/router/media_router_feature.cc
Hunk #1 succeeded at 68 with fuzz 2 (offset 14 lines).
patching file chrome/browser/download/bubble/download_bubble_update_service.cc
Hunk #2 succeeded at 789 (offset 133 lines).
patching file chrome/browser/download/bubble/download_bubble_update_service.h
Hunk #1 succeeded at 208 (offset 29 lines).
patching file chrome/browser/webauthn/authenticator_request_dialog_model.h
patching file gin/time_clamper.h
patching file third_party/maldoca/src/maldoca/ole/header.h
patching file third_party/ruy/src/ruy/profiler/instrumentation.h
patching file third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.cc
patching file third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
patching file third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
Add patches for Brave custom build
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- a/brave/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc
|+++ b/brave/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
==> ERROR: A failure occurred in prepare().
    Aborting...
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/alerque/build

@YakoYakoYokuYoku YakoYakoYokuYoku force-pushed the brave-yako branch 2 times, most recently from a4787b2 to 303ae7b Compare May 31, 2023 14:12
@YakoYakoYokuYoku
Copy link
Contributor Author

I've forgot to cleanup the patches, now all of them should apply.

@alerque
Copy link
Owner

alerque commented May 31, 2023

Thanks for the update. I just sent this off to build...

@alerque
Copy link
Owner

alerque commented May 31, 2023

With 303ae7b I got stuck on the same patch...

Add patches for Brave custom build
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- a/brave/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc
|+++ b/brave/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored

@YakoYakoYokuYoku
Copy link
Contributor Author

I think that you should prune those patches in $srcdir too. I'm thinking to do something like core/kernel WRT those patches.

@alerque
Copy link
Owner

alerque commented May 31, 2023

Oh yuck, we need to change the wildcard line picking patches to expand from the ${source} array not from the file system. I can't ship this off to Arch's beefy build servers like this because it caches sources (for good reason)!

upstream release

Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
@YakoYakoYokuYoku YakoYakoYokuYoku changed the title Update brave to v1.51.118 Update brave to v1.52.117 Jun 3, 2023
@YakoYakoYokuYoku
Copy link
Contributor Author

@alerque I think as of now everything can be prepared cleanly, please let me know if otherwise.

@alerque
Copy link
Owner

alerque commented Jun 7, 2023

I tried building this a few times but it's been hiding in a queue behind Electron builds. We've had lots more trouble with Google's Chromium repository, so some of our builds are switching to a mirror. Even though the repository is the same so you can share a backend data store for both, the PKGBUILD system doesn't like having different remotes, so we've renamed the GitHub mirror so that multiple builds can share it while still having access to the canonical one. I've switched this to the mirror. You can avoid re-downloading the sources if you want by manually renaming the directory and changing the remote URL in your pkgsrc cache if you are interested.

The build I ran did not finish. I am not sure if this is a function of something not being initialized right in the sources before hand or something to do with Rust being fresh (1.70.0) and llvm being 15 not 17.

building native redirect_cc...
-------------------------------
/build/brave/src/brave-browser/src
> gn gen /build/brave/src/brave-browser/src/out/redirect_cc --args="import(\"//brave/tools/redirect_cc/args.gni\") use_goma=false goma_dir=\"/build/brave/src/brave-browser/src/brave/vendor/depot_tools/.cipd_bin\" real_gomacc=\"/build/brave/src/brave-browser/src/brave/vendor/depot_tools/.cipd_bin/gomacc\" "
ERROR at //build/config/rust.gni:143:22: Script returned non-zero exit code.
    rustc_revision = exec_script("//tools/rust/update_rust.py",
                     ^----------
Current dir: /build/brave/src/brave-browser/src/out/redirect_cc/
Command: python3 /build/brave/src/brave-browser/src/tools/rust/update_rust.py --print-package-version
Returned 1 and printed out:

The expected Rust version is 17c11672167827b0dd92c88ef69f24346d1286dd-1-llvmorg-17-init-8029-g27f27d15-3 (or fallback 17c11672167827b0dd92c88ef69f24346d1286dd-1-llvmorg-17-init-8029-g27f27d15-1 but the actual version is None
Did you run "gclient sync"?

See //BUILD.gn:17:1: whence it was imported.
import("//build/config/rust.gni")
^-------------------------------
null
null

If that error tells you anything useful let me know.

@YakoYakoYokuYoku YakoYakoYokuYoku changed the title Update brave to v1.52.117 Update brave to v1.52.120 Jun 7, 2023
@YakoYakoYokuYoku
Copy link
Contributor Author

If that error tells you anything useful let me know.

Seems that Chromium tries to use an intree built rustc, but here in the AUR we have a finite time to do things, so we shouldn't take that way. This package will continue to rely upon system's rustc.

@alerque
Copy link
Owner

alerque commented Jun 8, 2023

Thanks for the updates. I pulled them in and shipped it off for building. It got farther but still eventually tripped up on something Rust releated:

<truncated>
[2085/2091] STAMP obj/third_party/perfetto/src/trace_processor/storage_minimal.stamp
[2086/2091] STAMP obj/third_party/perfetto/src/trace_processor/export_json.stamp
[2087/2091] STAMP obj/third_party/perfetto/libperfetto.stamp
[2088/2091] AR obj/base/libbase.a
[2089/2091] LINK ./redirect_cc
[2090/2091] LINK ./gomacc
[2091/2091] STAMP obj/brave/tools/redirect_cc/redirect_cc.stamp
generating ninja files...
Widevine cdm host verification is disabled
-------------------------------
/build/brave/src/brave-browser/src
> gn gen /build/brave/src/brave-browser/src/out/Release --args="sardine_client_id=\"7ca8433c-7e61-4e25-b76e-25aa2da68df1\" sardine_client_secret=\"7ca8433c-7e61-4e25-b76e-25aa2da68df1\" is_asan=false enable_full_stack_frames_for_profiling=false v8_enable_verify_heap=false disable_fieldtrial_testing_config=true safe_browsing_mode=1 brave_services_key=\"qjVKcxtUybh8WpKNoQ7EbgbkJTMu7omjDHKk=VrPApb8PwJyPE9eqchxedTsMEWg\" root_extra_deps=[\"//brave\"] is_component_build=false is_universal_binary=false proprietary_codecs=true ffmpeg_branding=\"Chrome\" branding_path_component=\"brave\" branding_path_product=\"brave\" enable_nacl=false enable_widevine=true target_cpu=\"x64\" is_official_build=true is_debug=false dcheck_always_on=false brave_channel=\"\" brave_google_api_key=\"AIzaSyAREPLACEWITHYOUROWNGOOGLEAPIKEY2Q\" brave_google_api_endpoint=\"https://www.googleapis.com/geolocation/v1/geolocate?key=\" google_default_client_id=\"\" google_default_client_secret=\"\" brave_infura_project_id=\"\" brave_zero_ex_api_key=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" bitflyer_client_id=\"\" bitflyer_client_secret=\"\" bitflyer_staging_client_id=\"\" bitflyer_staging_client_secret=\"\" bitflyer_staging_url=\"\" gemini_api_url=\"https://api.gemini.com/v1\" gemini_api_staging_url=\"\" gemini_oauth_url=\"https://api.gemini.com/v1/oauth\" gemini_oauth_staging_url=\"\" gemini_wallet_client_id=\"6d8d9473ed20be627f71ed46e207f40c004c5b1a\" gemini_wallet_client_secret=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\" gemini_wallet_staging_client_id=\"\" gemini_wallet_staging_client_secret=\"\" uphold_client_id=\"6d8d9473ed20be627f71ed46e207f40c004c5b1a\" uphold_client_secret=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\" uphold_staging_client_id=\"4c2b665ca060d912fec5c735c734859a06118cc8\" uphold_staging_client_secret=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\" brave_version_major=\"1\" brave_version_minor=\"52\" brave_version_build=\"122\" chrome_version_string=\"114.0.5735.110\" brave_sync_endpoint=\"https://sync-v2.brave.com/v2\" safebrowsing_api_endpoint=\"\" brave_variations_server_url=\"https://variations.brave.com/seed\" updater_prod_endpoint=\"https://go-updater.brave.com/extensions\" updater_dev_endpoint=\"https://go-updater-dev.bravesoftware.com/extensions\" webcompat_report_api_endpoint=\"https://webcompat.brave.com/1/webcompat\" rewards_grant_dev_endpoint=\"https://grant.rewards.brave.com\" rewards_grant_staging_endpoint=\"https://grant.rewards.brave.com\" rewards_grant_prod_endpoint=\"https://grant.rewards.brave.com\" brave_stats_api_key=\"fe033168-0ff8-4af6-9a7f-95e2cbfc9f4f\" brave_stats_updater_url=\"https://laptop-updates.brave.com\" p3a_json_upload_url=\"https://example.com\" p3a_creative_upload_url=\"https://example.com\" p2a_json_upload_url=\"https://example.com\" p3a_constellation_upload_url=\"https://example.com\" star_randomness_host=\"https://example.com\" enable_hangout_services_extension=true enable_cdm_host_verification=false enable_pseudolocales=false skip_signing=true sparkle_dsa_private_key_file=\"\" sparkle_eddsa_private_key=\"\" sparkle_eddsa_public_key=\"\" use_goma=false use_libfuzzer=false enable_updater=true enable_update_notifications=true rustc_version=\"rustc 1.70.0 (90c541806 2023-05-31) (Arch Linux rust 1:1.70.0-1)\" custom_toolchain=\"//build/toolchain/linux/unbundle:default\" host_toolchain=\"//build/toolchain/linux/unbundle:default\" clang_base_path=\"/usr\" clang_use_chrome_plugins=false rust_sysroot_absolute=\"/usr\" symbol_level=0 chrome_pgo_phase=0 treat_warnings_as_errors=false blink_enable_generated_code_formatting=false rtc_use_pipewire=true link_pulseaudio=true use_gnome_keyring=false use_sysroot=false use_system_libffi=true use_custom_libcxx=false use_chromium_rust_toolchain=false icu_use_data_file=false cc_wrapper=\"/build/brave/src/brave-browser/src/out/redirect_cc/redirect_cc\" use_vaapi=true is_lsan=false enable_brave_page_graph=true enable_brave_page_graph_webapi_probes=true "
WARNING at the command-line "--args":1:3552: Build argument has no effect.
sardine_client_id="7ca8433c-7e61-4e25-b76e-25aa2da68df1" sardine_client_secret="7ca8433c-7e61-4e25-b76e-25aa2da68df1" is_asan=false enable_full_stack_frames_for_profiling=false v8_enable_verify_heap=false disable_fieldtrial_testing_config=true safe_browsing_mode=1 brave_services_key="qjVKcxtUybh8WpKNoQ7EbgbkJTMu7omjDHKk=VrPApb8PwJyPE9eqchxedTsMEWg" root_extra_deps=["//brave"] is_component_build=false is_universal_binary=false proprietary_codecs=true ffmpeg_branding="Chrome" branding_path_component="brave" branding_path_product="brave" enable_nacl=false enable_widevine=true target_cpu="x64" is_official_build=true is_debug=false dcheck_always_on=false brave_channel="" brave_google_api_key="AIzaSyAREPLACEWITHYOUROWNGOOGLEAPIKEY2Q" brave_google_api_endpoint="https://www.googleapis.com/geolocation/v1/geolocate?key=" google_default_client_id="" google_default_client_secret="" brave_infura_project_id="" brave_zero_ex_api_key="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" bitflyer_client_id="" bitflyer_client_secret="" bitflyer_staging_client_id="" bitflyer_staging_client_secret="" bitflyer_staging_url="" gemini_api_url="https://api.gemini.com/v1" gemini_api_staging_url="" gemini_oauth_url="https://api.gemini.com/v1/oauth" gemini_oauth_staging_url="" gemini_wallet_client_id="6d8d9473ed20be627f71ed46e207f40c004c5b1a" gemini_wallet_client_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" gemini_wallet_staging_client_id="" gemini_wallet_staging_client_secret="" uphold_client_id="6d8d9473ed20be627f71ed46e207f40c004c5b1a" uphold_client_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" uphold_staging_client_id="4c2b665ca060d912fec5c735c734859a06118cc8" uphold_staging_client_secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" brave_version_major="1" brave_version_minor="52" brave_version_build="122" chrome_version_string="114.0.5735.110" brave_sync_endpoint="https://sync-v2.brave.com/v2" safebrowsing_api_endpoint="" brave_variations_server_url="https://variations.brave.com/seed" updater_prod_endpoint="https://go-updater.brave.com/extensions" updater_dev_endpoint="https://go-updater-dev.bravesoftware.com/extensions" webcompat_report_api_endpoint="https://webcompat.brave.com/1/webcompat" rewards_grant_dev_endpoint="https://grant.rewards.brave.com" rewards_grant_staging_endpoint="https://grant.rewards.brave.com" rewards_grant_prod_endpoint="https://grant.rewards.brave.com" brave_stats_api_key="fe033168-0ff8-4af6-9a7f-95e2cbfc9f4f" brave_stats_updater_url="https://laptop-updates.brave.com" p3a_json_upload_url="https://example.com" p3a_creative_upload_url="https://example.com" p2a_json_upload_url="https://example.com" p3a_constellation_upload_url="https://example.com" star_randomness_host="https://example.com" enable_hangout_services_extension=true enable_cdm_host_verification=false enable_pseudolocales=false skip_signing=true sparkle_dsa_private_key_file="" sparkle_eddsa_private_key="" sparkle_eddsa_public_key="" use_goma=false use_libfuzzer=false enable_updater=true enable_update_notifications=true rustc_version="rustc 1.70.0 (90c541806 2023-05-31) (Arch Linux rust 1:1.70.0-1)" custom_toolchain="//build/toolchain/linux/unbundle:default" host_toolchain="//build/toolchain/linux/unbundle:default" clang_base_path="/usr" clang_use_chrome_plugins=false rust_sysroot_absolute="/usr" symbol_level=0 chrome_pgo_phase=0 treat_warnings_as_errors=false blink_enable_generated_code_formatting=false rtc_use_pipewire=true link_pulseaudio=true use_gnome_keyring=false use_sysroot=false use_system_libffi=true use_custom_libcxx=false use_chromium_rust_toolchain=false icu_use_data_file=false cc_wrapper="/build/brave/src/brave-browser/src/out/redirect_cc/redirect_cc" use_vaapi=true is_lsan=false enable_brave_page_graph=true enable_brave_page_graph_webapi_probes=true
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ^----
The variable "use_chromium_rust_toolchain" was set as a build argument
but never appeared in a declare_args() block in any buildfile.

To view all possible args, run "gn args --list <out_dir>"

The build continued as if that argument was unspecified.

Done. Made 19205 targets from 3642 files in 5992ms
building brave (id=c89754b7-0930-4faf-a649-61a1257b8529) ...
-------------------------------
/build/brave/src/brave-browser/src
> autoninja -C /build/brave/src/brave-browser/src/out/Release brave -k 1 --offline
ninja: Entering directory `/build/brave/src/brave-browser/src/out/Release'
ninja: error: '../../brave/build/rustup/1.67.1/bin/cargo', needed by 'brave_rust/out/x64/x86_64-unknown-linux-gnu/release/libbrave_rust.a', missing and no known rule to make it
null
null

Note this is in a clean chroot builder using the current core and extra repositories to supply dependencies built using the same scripts official packages are built with on the same servers we use for offloading builds for official packages.

@YakoYakoYokuYoku
Copy link
Contributor Author

Seemingly, Brave uses another rustup configuration for its Rust modules too, what a pain in the foot.

@alerque
Copy link
Owner

alerque commented Jun 8, 2023

New failure paint:

<truncated>
[18390/57972] CXX obj/third_party/webrtc/media/stream_params/stream_params.o
[18391/57972] CXX obj/third_party/webrtc/logging/rtc_event_log_impl_encoder/rtc_event_log_encoder_v3.o
[18392/57972] ACTION //third_party/devtools-frontend/src/front_end/models/issues_manager:issues_manager-typescript(//build/toolchain/linux/unbundle:default)
[18393/57972] ACTION //third_party/devtools-frontend/src/front_end/entrypoints/lighthouse_worker:lighthouse_worker-typescript(//build/toolchain/linux/unbundle:default)
[18394/57972] CXX obj/third_party/webrtc/modules/audio_coding/ana_config_proto/config.pb.o
[18395/57972] ACTION //third_party/devtools-frontend/src/front_end/ui/legacy:devtools_entrypoint-bundle-bundle(//build/toolchain/linux/unbundle:default)
[18396/57972] CXX obj/third_party/tflite_support/tflite_support/image_classifier.o
[18397/57972] CXX obj/third_party/webrtc/logging/rtc_event_log_impl_encoder/rtc_event_log_encoder_legacy.o
[18398/57972] CXX obj/third_party/webrtc/media/media_channel_impl/media_channel_impl.o
In file included from ../../third_party/webrtc/media/base/media_channel_impl.cc:11:
In file included from ../../third_party/webrtc/media/base/media_channel_impl.h:30:
In file included from ../../third_party/webrtc/api/frame_transformer_interface.h:18:
In file included from ../../third_party/webrtc/api/video/encoded_frame.h:19:
In file included from ../../third_party/webrtc/modules/video_coding/encoded_frame.h:18:
../../third_party/webrtc/modules/video_coding/include/video_codec_interface.h:54:20: warning: 'is_pod<webrtc::CodecSpecificInfoVP8>' is deprecated: use 'is_standard_layout && is_trivial' instead [-Wdeprecated-declarations]
static_assert(std::is_pod<CodecSpecificInfoVP8>::value, "");
                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits:818:5: note: 'is_pod<webrtc::CodecSpecificInfoVP8>' has been explicitly marked deprecated here
    _GLIBCXX20_DEPRECATED_SUGGEST("is_standard_layout && is_trivial")
    ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:130:45: note: expanded from macro '_GLIBCXX20_DEPRECATED_SUGGEST'
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
                                            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:98:19: note: expanded from macro '_GLIBCXX_DEPRECATED_SUGGEST'
  __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
                  ^
In file included from ../../third_party/webrtc/media/base/media_channel_impl.cc:11:
In file included from ../../third_party/webrtc/media/base/media_channel_impl.h:30:
In file included from ../../third_party/webrtc/api/frame_transformer_interface.h:18:
In file included from ../../third_party/webrtc/api/video/encoded_frame.h:19:
In file included from ../../third_party/webrtc/modules/video_coding/encoded_frame.h:18:
../../third_party/webrtc/modules/video_coding/include/video_codec_interface.h:85:20: warning: 'is_pod<webrtc::CodecSpecificInfoVP9>' is deprecated: use 'is_standard_layout && is_trivial' instead [-Wdeprecated-declarations]
static_assert(std::is_pod<CodecSpecificInfoVP9>::value, "");
                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits:818:5: note: 'is_pod<webrtc::CodecSpecificInfoVP9>' has been explicitly marked deprecated here
    _GLIBCXX20_DEPRECATED_SUGGEST("is_standard_layout && is_trivial")
    ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:130:45: note: expanded from macro '_GLIBCXX20_DEPRECATED_SUGGEST'
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
                                            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:98:19: note: expanded from macro '_GLIBCXX_DEPRECATED_SUGGEST'
  __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
                  ^
In file included from ../../third_party/webrtc/media/base/media_channel_impl.cc:11:
In file included from ../../third_party/webrtc/media/base/media_channel_impl.h:30:
In file included from ../../third_party/webrtc/api/frame_transformer_interface.h:18:
In file included from ../../third_party/webrtc/api/video/encoded_frame.h:19:
In file included from ../../third_party/webrtc/modules/video_coding/encoded_frame.h:18:
../../third_party/webrtc/modules/video_coding/include/video_codec_interface.h:94:20: warning: 'is_pod<webrtc::CodecSpecificInfoH264>' is deprecated: use 'is_standard_layout && is_trivial' instead [-Wdeprecated-declarations]
static_assert(std::is_pod<CodecSpecificInfoH264>::value, "");
                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits:818:5: note: 'is_pod<webrtc::CodecSpecificInfoH264>' has been explicitly marked deprecated here
    _GLIBCXX20_DEPRECATED_SUGGEST("is_standard_layout && is_trivial")
    ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:130:45: note: expanded from macro '_GLIBCXX20_DEPRECATED_SUGGEST'
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
                                            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:98:19: note: expanded from macro '_GLIBCXX_DEPRECATED_SUGGEST'
  __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
                  ^
In file included from ../../third_party/webrtc/media/base/media_channel_impl.cc:11:
In file included from ../../third_party/webrtc/media/base/media_channel_impl.h:30:
In file included from ../../third_party/webrtc/api/frame_transformer_interface.h:18:
In file included from ../../third_party/webrtc/api/video/encoded_frame.h:19:
In file included from ../../third_party/webrtc/modules/video_coding/encoded_frame.h:18:
../../third_party/webrtc/modules/video_coding/include/video_codec_interface.h:101:20: warning: 'is_pod<webrtc::CodecSpecificInfoUnion>' is deprecated: use 'is_standard_layout && is_trivial' instead [-Wdeprecated-declarations]
static_assert(std::is_pod<CodecSpecificInfoUnion>::value, "");
                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits:818:5: note: 'is_pod<webrtc::CodecSpecificInfoUnion>' has been explicitly marked deprecated here
    _GLIBCXX20_DEPRECATED_SUGGEST("is_standard_layout && is_trivial")
    ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:130:45: note: expanded from macro '_GLIBCXX20_DEPRECATED_SUGGEST'
# define _GLIBCXX20_DEPRECATED_SUGGEST(ALT) _GLIBCXX_DEPRECATED_SUGGEST(ALT)
                                            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/x86_64-pc-linux-gnu/bits/c++config.h:98:19: note: expanded from macro '_GLIBCXX_DEPRECATED_SUGGEST'
  __attribute__ ((__deprecated__ ("use '" ALT "' instead")))
                  ^
4 warnings generated.
[18399/57972] CXX obj/third_party/webrtc/logging/rtc_event_log_impl_encoder/rtc_event_log_encoder_new_format.o
ninja: build stopped: subcommand failed.
null
null

@YakoYakoYokuYoku
Copy link
Contributor Author

Those seem to be warnings only, the error must be on that truncated part.

@alerque
Copy link
Owner

alerque commented Jun 9, 2023

You are correct, sorry I kind of skimmed over that. It turns out the error is way farther up in the build sequence:

<truncated>
[18327/57972] STAMP obj/chrome/browser/unexpire_flags.stamp
[18328/57972] STAMP obj/chrome/browser/enterprise/connectors/analysis/features.stamp
[18329/57972] STAMP obj/chrome/browser/enterprise/connectors/device_trust/features.stamp
[18330/57972] STAMP obj/chrome/browser/enterprise/connectors/device_trust/common/common.stamp
[18331/57972] STAMP obj/chrome/browser/enterprise/connectors/device_trust/signals/signals.stamp
[18332/57972] STAMP obj/chrome/browser/enterprise/platform_auth/features.stamp
[18333/57972] ACTION //third_party/devtools-frontend/src/front_end/models/logs:devtools_entrypoint-meta-bundle(//build/toolchain/linux/unbundle:default)
[18334/57972] AR obj/brave/third_party/bitcoin-core/libbitcoin-core.a
FAILED: obj/brave/third_party/bitcoin-core/libbitcoin-core.a
rm -f obj/brave/third_party/bitcoin-core/libbitcoin-core.a && "llvm-ar" -T -r -c -s -D obj/brave/third_party/bitcoin-core/libbitcoin-core.a @"obj/brave/third_party/bitcoin-core/libbitcoin-core.a.rsp"
llvm-ar: error: obj/brave/third_party/bitcoin-core/bitcoin-core/base58.o: No such file or directory
[18335/57972] ACTION //chrome/app/vector_icons:chrome_vector_icons(//build/toolchain/linux/unbundle:default)
[18336/57972] AR obj/brave/components/skus/browser/rs/cxx/libcxx.a
[18337/57972] AR obj/chrome/browser/image_editor/libimage_editor_component_util.a
[18338/57972] STAMP obj/chrome/browser/signin/identity_manager_provider.stamp
[18339/57972] STAMP obj/brave/browser/browser_process.stamp
[18340/57972] STAMP obj/chrome/common/ini_parser.stamp
[18341/57972] STAMP obj/brave/components/vector_icons/brave_components_vector_icons.stamp
[18342/57972] AR obj/chrome/common/libnon_code_constants.a
[18343/57972] AR obj/chrome/common/apps/platform_apps/api/libgenerated_api_json_strings.a
<truncated>

bitcoin-core?

@YakoYakoYokuYoku YakoYakoYokuYoku changed the title Update brave to v1.52.120 Update brave to v1.52.122 Jun 9, 2023
@alerque
Copy link
Owner

alerque commented Jun 9, 2023

[18469/57972] ACTION //third_party/devtools-frontend/src/front_end/panels/accessibility:devtools_entrypoint-legacy-bundle(//build/toolchain/linux/unbundle:default)
[18470/57972] ACTION //third_party/devtools-frontend/src/front_end/panels/web_audio:devtools_entrypoint-bundle-bundle(//build/toolchain/linux/unbundle:default)
[18471/57972] CXX obj/third_party/webrtc/api/transport/goog_cc/goog_cc_factory.o
[18472/57972] ACTION //third_party/devtools-frontend/src/front_end/models/persistence:devtools_entrypoint-bundle-tsconfig(//build/toolchain/linux/unbundle:default)
[18473/57972] AR obj/brave/components/brave_sync/libcrypto.a
FAILED: obj/brave/components/brave_sync/libcrypto.a
rm -f obj/brave/components/brave_sync/libcrypto.a && "llvm-ar" -T -r -c -s -D obj/brave/components/brave_sync/libcrypto.a @"obj/brave/components/brave_sync/libcrypto.a.rsp"
llvm-ar: error: obj/brave/components/brave_sync/crypto/crypto.o: No such file or directory
[18474/57972] STAMP obj/printing/native_drawing_context.stamp
[18475/57972] STAMP obj/sandbox/common.stamp
[18476/57972] AR obj/sandbox/linux/libsandbox_services.a
[18477/57972] AR obj/services/audio/public/cpp/libaudio_features.a

I'd try to be more helpful besides just sending this to build and passing errors, but I'm swamped trying to get stupid Electron stuff rebuilt for Arch! What an absolute crazy-pants exercise!

@alerque
Copy link
Owner

alerque commented Jun 9, 2023

FAILED: obj/brave/components/brave_rewards/core/libbrave_rewards_core.a
rm -f obj/brave/components/brave_rewards/core/libbrave_rewards_core.a && "llvm-ar" -T -r -c -s -D obj/brave/components/brave_rewards/core/libbrave_rewards_core.a @"obj/brave/components/brave_rewards/core/libbrave_rewards_core.a.rsp"
llvm-ar: error: obj/brave/components/brave_rewards/core/ledger/request_util.o: No such file or directory

@YakoYakoYokuYoku
Copy link
Contributor Author

I feel that I'm closer, but I'll have to admit that I don't know such a way to at least predict which component is going to fail at compile time, wish I could have that hability.

@alerque
Copy link
Owner

alerque commented Jun 10, 2023

I don't know how close we are either but surely each one we get past must be that much closer! From working on Electron the last few weeks I don't think there is any good way to catch everything in advance, it is a lot of trial and error especially working with gcc patches.

By the way how are you testing this on your end? Is it just a matter of disk space and processor time that means these aren't tested locally? Because you should be hitting exactly the same failures as I am. I'm kind of surprised your fixes have been working if you haven't been testing at all, and if you are testing I'm confused why you don't hit the next problems too. At this point you should be able to almost exactly replicate by builds with Arch's dev tooling, install devtools then run pkgctl build --repo extra in the directory with this package. I don't mind firing off builds but if that is not reporting the same errors then something else fishy is up and it would be nice to know what.

@YakoYakoYokuYoku
Copy link
Contributor Author

By the way how are you testing this on your end? Is it just a matter of disk space and processor time that means these aren't tested locally? Because you should be hitting exactly the same failures as I am. I'm kind of surprised your fixes have been working if you haven't been testing at all, and if you are testing I'm confused why you don't hit the next problems too. At this point you should be able to almost exactly replicate by builds with Arch's dev tooling, install devtools then run pkgctl build in the directory with this package. I don't mind firing off builds but if that is not reporting the same errors then something else fishy is up and it would be nice to know what.

I've been testing the build by running makepkg directly instead of under a chrooted environment, I haven't yet figured out an efficient way to do caching. Also I'm constrained with both an HDD and low RAM, 16GB for 16 threads, so it chokes really bad in parts like blink or v8. As of the testing of those failures I patch the sources and I build the target directly in PKGBUILD with npm run build -- --target obj/brave/component/libfoo.a while skipping prepare(). I initially thought that they've sorted many of the issues upstream but I was wrong. So when I have the time to properly test this I think I'll split the npm run build into smaller pieces, so I avoid thrashing my machine in one run, and then I'll submit those changes properly. Sorry for the inconveniences I've done from my side.

@alerque
Copy link
Owner

alerque commented Jun 10, 2023

FAILED: obj/brave/components/playlist/browser/libbrowser.a
rm -f obj/brave/components/playlist/browser/libbrowser.a && "llvm-ar" -T -r -c -s -D obj/brave/components/playlist/browser/libbrowser.a @"obj/brave/components/playlist/browser/libbrowser.a.rsp"
llvm-ar: error: obj/brave/components/playlist/browser/browser/playlist_download_request_manager.o: No such file or directory

upstream release

Signed-off-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
@YakoYakoYokuYoku
Copy link
Contributor Author

I have now built the monster, fully patched, and it works. For future reference I left a list of targets to build in certain order so it doesn't choke at least my machine. Hope it's helpful for someone else.

  npm run build ${_build_type} -- --target obj/base/libbase.a "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/ui/display/libdisplay.a "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/net/libnet.a "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/mojo/public/cpp/base/libmojo_base_lib.a "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/third_party/angle/angle.stamp "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/v8/v8.stamp --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/ui/views/libviews.a "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/third_party/blink/public/common/common.stamp --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/content/browser/browser.stamp --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/extensions/browser/browser.stamp --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/content/renderer/librenderer.a --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- --target obj/chrome/renderer/librenderer.a --ninja j:8 "${npm_args[@]}"
  npm run build ${_build_type} -- "${npm_args[@]}"

@YakoYakoYokuYoku YakoYakoYokuYoku marked this pull request as ready for review June 12, 2023 14:33
@YakoYakoYokuYoku
Copy link
Contributor Author

Another thing that I've recently discovered is that we can pass blink_symbol_level and v8_symbol_level (?) with the rest of GN args, although I haven't tested it yet, might help for building other Chromium-based projects.

@alerque alerque closed this in 6e08611 Jun 14, 2023
@alerque
Copy link
Owner

alerque commented Jun 14, 2023

This PR is merged, thanks again for all the effort. The package I generated is also hosted in my user repository.

Another thing that I've recently discovered is that we can pass blink_symbol_level and v8_symbol_level (?) with the rest of GN args, although I haven't tested it yet, might help for building other Chromium-based projects.

I'm happy to facilitate any useful changes applied to the Arch Chromium and Electron packages, but I don't know what those flags do. Do you have a link to where they are document or can you comment on how they would help?

@YakoYakoYokuYoku
Copy link
Contributor Author

This PR is merged, thanks again for all the effort. The package I generated is also hosted in my user repository.

You are welcome too.

I'm happy to facilitate any useful changes applied to the Arch Chromium and Electron packages, but I don't know what those flags do. Do you have a link to where they are document or can you comment on how they would help?

Those configs are pretty similar to GCC's/Clang's -g flag and both blink and v8 have symbol levels on their own, although the latter uses symbol_level by default.

@YakoYakoYokuYoku YakoYakoYokuYoku deleted the brave-yako branch June 14, 2023 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants