alerque / aur

Package sources for all the AUR packages I either maintain, co-maintain, or fork.
https://wiki.archlinux.org/index.php/Unofficial_user_repositories#alerque
48 stars 26 forks source link

Update brave to v1.52.122 #54

Closed YakoYakoYokuYoku closed 1 year ago

YakoYakoYokuYoku commented 1 year ago

This PR updates brave to 1.52.122.

Changes:

TODOs:

alerque commented 1 year ago

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

alerque commented 1 year ago

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 commented 1 year ago

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

alerque commented 1 year ago

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

alerque commented 1 year ago

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 commented 1 year ago

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

alerque commented 1 year ago

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)!

YakoYakoYokuYoku commented 1 year ago

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

alerque commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

alerque commented 1 year ago

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 commented 1 year ago

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

alerque commented 1 year ago

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?

alerque commented 1 year ago
[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 commented 1 year ago
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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago
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
YakoYakoYokuYoku commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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.