summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorMartin Rodriguez Reboredo2022-09-30 18:00:54 -0300
committerCaleb Maclennan2022-12-12 20:52:51 +0300
commitc28d690ab7040a782c4dd77caa1ad1436574e2a6 (patch)
tree2b33d2a187f98036c3b499bb207d49ba3c73cc5c /PKGBUILD
parent87f40c12c21f05e5adcb77bafe52170f8f5c68fd (diff)
downloadaur-c28d690ab7040a782c4dd77caa1ad1436574e2a6.tar.gz
uppkg: brave 1.44.112
upstream release Signed-off-by: Caleb Maclennan <caleb@alerque.com>
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD749
1 files changed, 434 insertions, 315 deletions
diff --git a/PKGBUILD b/PKGBUILD
index cb391b4c9622..3d974e2706a8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,4 +1,5 @@
# Maintainer: Caleb Maclennana <caleb@alerque.com>
+# Contributor: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
# Contributor: Monarc <warcraft99@web.de>
# Contributor: Joan Figueras <ffigue at gmail dot com>
# Contributor: Jacek Szafarkiewicz <szafar@linux.pl>
@@ -23,93 +24,116 @@
## 2 -> static
## 3 -> debug
## 4 -> release with custom cflags and system libs
-: "${COMPONENT:=1}"
+: "${COMPONENT:=4}"
pkgname=brave
-pkgver=1.30.87
+pkgver=1.44.112
pkgrel=1
pkgdesc='A web browser that stops ads and trackers by default'
arch=(x86_64)
url='https://www.brave.com/download'
-license=(custom)
+license=(BSD MPL custom:chromium)
depends=(alsa-lib
+ dbus
+ desktop-file-utils
gtk3
- json-glib
+ hicolor-icon-theme
+ libcups
+ libgcrypt
+ libpulse
libva
libxss
nss
- ttf-font)
-makedepends=(clang
+ pciutils
+ systemd
+ ttf-liberation
+ xdg-utils)
+makedepends=(cargo-audit
+ cbindgen
+ clang
+ cxxbridge
git
- glibc
+ gn
gperf
- icu
java-runtime-headless
+ jq
+ lld
llvm
+ ninja
npm
pipewire
- python
python-protobuf)
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
'kdialog: support for native dialogs in Plasma'
- 'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
- 'kwallet: support for storing passwords in KWallet on Plasma'
- 'sccache: For faster builds')
-options=(!lto)
-_chromium_base_ver=94
-_patchset=3
-_patchset_name="chromium-$_chromium_base_ver-patchset-$_patchset"
+ 'org.freedesktop.secrets: password storage backend')
+_chromium_ver=106.0.5249.119
+_gcc_patchset=2
+_patchset_name="chromium-${_chromium_ver%%.*}-patchset-$_gcc_patchset"
_launcher_ver=8
+_brave_base_ver="1.28"
+_brave_patchset="1"
+_brave_patchset_name="brave-$_brave_base_ver-patches-$_brave_patchset"
source=("brave-browser::git+https://github.com/brave/brave-browser.git#tag=v$pkgver"
- 'chromium::git+https://github.com/chromium/chromium.git'
- 'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git'
- "git+https://github.com/brave/brave-core.git#tag=v$pkgver"
- 'git+https://github.com/brave/adblock-rust.git'
- brave-launcher
- brave-browser.desktop
- "chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz"
+ "brave::git+https://github.com/brave/brave-core.git#tag=v$pkgver"
+ "chromium::git+https://chromium.googlesource.com/chromium/src.git#tag=$_chromium_ver"
+ 'depot_tools::git+https://chromium.googlesource.com/chromium/tools/depot_tools.git'
+ "https://github.com/foutrelis/chromium-launcher/archive/refs/tags/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz"
"https://github.com/stha09/chromium-patches/releases/download/$_patchset_name/$_patchset_name.tar.xz"
- chromium-no-history.patch)
-_arch_revision=d1911c4fdd73fad51b38c5ff29e2457975312f1b
-_patches=(replace-blacklist-with-ignorelist.patch
- add-a-TODO-about-a-missing-pnacl-flag.patch
- use-ffile-compilation-dir.patch
- sql-make-VirtualCursor-standard-layout-type.patch
- chromium-93-ffmpeg-4.4.patch
- chromium-94-ffmpeg-roll.patch
- unexpire-accelerated-video-decode-flag.patch
- use-oauth2-client-switches-as-default.patch)
+ "https://gitlab.com/hadogenes/brave-patches/-/archive/$_brave_patchset_name/brave-patches-$_brave_patchset_name.zip"
+ chromium-launcher-electron-app.patch
+ rust-autocxx-use_sysroot.patch
+ system-rust-utils.patch
+ brave-1.43-bat-native-ads-hash_vectorizer_fix-cstring.patch
+ brave-1.43-bat-native-ads-vector_data_fix-cmath.patch
+ brave-1.43-bitcoin-core_remove-serialize.h.patch
+ brave-1.43-brave_today-base_utf_string_conversions.patch
+ brave-1.43-debounce-debounce_navigation_throttle_fix.patch
+ brave-1.43-ntp_background_images-std-size_t.patch)
+_arch_revision=bf2401407df5bcc938382eb03748fbef41e41c89
+_patches=(unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch
+ REVERT-enable-GlobalMediaControlsCastStartStop.patch
+ REVERT-roll-src-third_party-ffmpeg-m102.patch
+ REVERT-roll-src-third_party-ffmpeg-m106.patch
+ angle-wayland-include-protocol.patch)
for _patch in "${_patches[@]}"; do
- source+=("$_patch::https://raw.githubusercontent.com/archlinux/svntogit-packages/$_arch_revision/chromium/trunk/$_patch")
+ source+=("$_patch::https://raw.githubusercontent.com/archlinux/svntogit-packages/$_arch_revision/trunk/$_patch")
done
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
- 'SKIP'
- 'e4478c79e2eed500777117bb1d48f4be1866908dcda8d75003a5d055618dfdca'
- 'fa6ed4341e5fc092703535b8becaa3743cb33c72f683ef450edd3ef66f70d42d'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
- '22692bddaf2761c6ddf9ff0bc4722972bca4d4c5b2fd3e5dbdac7eb60d914320'
- 'ea3446500d22904493f41be69e54557e984a809213df56f3cdf63178d2afb49e'
- 'd3344ba39b8c6ed202334ba7f441c70d81ddf8cdb15af1aa8c16e9a3a75fbb35'
- 'd53da216538f2e741a6e048ed103964a91a98e9a3c10c27fdfa34d4692fdc455'
- '921010cd8fab5f30be76c68b68c9b39fac9e21f4c4133bb709879592bbdf606e'
- 'dd317f85e5abfdcfc89c6f23f4c8edbcdebdd5e083dcec770e5da49ee647d150'
- '1a9e074f417f8ffd78bcd6874d8e2e74a239905bf662f76a7755fa40dc476b57'
- '56acb6e743d2ab1ed9f3eb01700ade02521769978d03ac43226dec94659b3ace'
- '2a97b26c3d6821b15ef4ef1369905c6fa3e9c8da4877eb9af4361452a425290b'
- 'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711')
+ '2ad419439379d17385b7fd99039aca875ba36ca31b591b9cd4ccef84273be121'
+ 'c63c8eeac709293991418a09ac7d8c0adde10c151495876794e025bd2b0fb8fe'
+ '9235485adc4acbfaf303605f4428a6995a7b0b3b5a95181b185afbcb9f1f6ae5'
+ '8fc41a0d98b328a12b17d6b6702a65c13292332ed8a843e7f35392424e545913'
+ 'f4345b63200a8bcf00876fa2f6eba99c49c97af1b6253b159072fbfad8fefeef'
+ '754cecaf8bc6707f95265b5b0d56a3837e115f6583b6125c8e6b9ee37c4d6d8e'
+ '5c1e562b25d4fe614f3a77e00accc53001541b7b3f308fb7512cce1138878d7e'
+ '0b5764355b9201d201b1e08f700bbb5a7fa238bef127b95d36cbf8ce2afa73a6'
+ 'ca7f3edbf17aeca84ec595b0cedcca47fb098fa8600651dcea6b396af3af8d93'
+ '30a6a9ca2a6dd965cb2d9f02639079130948bf45d483f0c629f2cf8394a1c22f'
+ 'ea0cd714ccaa839baf7c71e9077264016aa19415600f16b77d5398fd49f5a70b'
+ 'b908f37c5a886e855953f69e4dd6b90baa35e79f5c74673f7425f2cdb642eb00'
+ '779fb13f2494209d3a7f1f23a823e59b9dded601866d3ab095937a1a04e19ac6'
+ '30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44'
+ '4c12d31d020799d31355faa7d1fe2a5a807f7458e7f0c374adf55edb37032152'
+ 'cd0d9d2a1d6a522d47c3c0891dabe4ad72eabbebc0fe5642b9e22efa3d5ee572')
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch
declare -gA _system_libs=(
+ [brotli]=brotli
+ [dav1d]=dav1d
[ffmpeg]=ffmpeg
[flac]=flac
[fontconfig]=fontconfig
[freetype]=freetype2
[harfbuzz-ng]=harfbuzz
[icu]=icu
+ [jsoncpp]=jsoncpp
+ [libaom]=aom
+ #[libavif]=libavif # needs https://github.com/AOMediaCodec/libavif/commit/d22d4de94120
[libdrm]=
[libjpeg]=libjpeg
[libpng]=libpng
@@ -120,284 +144,379 @@ declare -gA _system_libs=(
[opus]=opus
[re2]=re2
[snappy]=snappy
+ [woff2]=woff2
[zlib]=minizip
)
_unwanted_bundled_libs=(
- "$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')"
+ "$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')"
)
-# Add depends if user wants a release with custom cflags and system libs
-if [ "$COMPONENT" = "4" ]; then
- # echo "Build with system libs is disabled for now" && exit 1
- brave_base_ver="$(echo "$pkgver" | cut -d . -f 1-2)"
- brave_patchset="1"
- brave_patchset_name="brave-$brave_base_ver-patches-$brave_patchset"
- source+=("https://gitlab.com/hadogenes/brave-patches/-/archive/$brave_patchset_name/brave-patches-$brave_patchset_name.zip")
- sha256sums+=("c63c8eeac709293991418a09ac7d8c0adde10c151495876794e025bd2b0fb8fe")
-
- depends+=('libpulse' 'pciutils')
- depends+=("${_system_libs[@]}")
- makedepends+=('lld' 'libva' 'pipewire')
-else
- makedepends+=('ncurses5-compat-libs')
-fi
-
-_msg() {
- printf " -> %s" "$@"
-}
-
prepare() {
- cd brave-browser
-
- _msg "Prepare the environment..."
- npm install
- patch -Np1 -i ../chromium-no-history.patch
-
- git submodule init
- git config submodule.chromium.url "$srcdir"/chromium
- git config submodule.brave-core.url "$srcdir"/brave
- git config submodule.depot_tools.url "$srcdir"/depot_tools
- git config submodule.adblock-rust.url "$srcdir"/adblock-rust
- git submodule update
- cp -rT "$srcdir"/chromium src
- cp -rT "$srcdir"/brave-core src/brave
- cp -r "$srcdir"/depot_tools src/brave/vendor/
- cp -rT "$srcdir"/adblock-rust src/components/adblock_rust_ffi
-
- # checkout pgo profiles
- sed -i 's/"checkout_pgo_profiles": "%False%"/"checkout_pgo_profiles": "%True%"/g' src/brave/build/commands/lib/util.js
-
- _msg "Running \"npm run\""
- if [ -d src/out/Release ]; then
- npm run sync -- --force
- else
- npm run init
- fi
-
- _msg "Apply Chromium patches..."
- cd src/
-
- # https://crbug.com/893950
- sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
- third_party/blink/renderer/core/xml/*.cc \
- third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
- third_party/libxml/chromium/*.cc
-
- # Use the --oauth2-client-id= and --oauth2-client-secret= switches for
- # setting GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET at
- # runtime -- this allows signing into Chromium without baked-in values
- patch -Np1 -i ../../use-oauth2-client-switches-as-default.patch
-
- # Fix build with older ffmpeg
- patch -Np1 -i ../chromium-93-ffmpeg-4.4.patch
-
- # Revert change to custom function av_stream_get_first_dts; will need to
- # switch to bundled ffmpeg when we're no longer using ffmpeg 4.4 in Arch
- # Upstream commit that made first_dts internal causing Chromium to add a
- # custom function: https://github.com/FFmpeg/FFmpeg/commit/591b88e6787c4
- # https://crbug.com/1251779
- patch -Rp1 -i ../chromium-94-ffmpeg-roll.patch
-
- # https://crbug.com/1207478
- patch -Np0 -i ../../unexpire-accelerated-video-decode-flag.patch
-
- # Revert transition to -fsanitize-ignorelist (needs newer clang)
- patch -Rp1 -i ../../replace-blacklist-with-ignorelist.patch
-
- # Revert addition of -ffile-compilation-dir= (needs newer clang)
- patch -Rp1 -i ../../add-a-TODO-about-a-missing-pnacl-flag.patch
- patch -Rp1 -i ../../use-ffile-compilation-dir.patch
-
- # https://chromium-review.googlesource.com/c/chromium/src/+/2862724
- patch -Np1 -i ../../sql-make-VirtualCursor-standard-layout-type.patch
-
- # Fixes for building with libstdc++ instead of libc++
- patch -Np1 -i ../patches/chromium-90-ruy-include.patch
- patch -Np1 -i ../patches/chromium-94-CustomSpaces-include.patch
-
- # Link to system tools required by the build
- mkdir -p third_party/node/linux/node-linux-x64/bin
- ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
- ln -s /usr/bin/java third_party/jdk/current/bin/
-
-
- # Hacky patching
- sed -e 's/enable_distro_version_check = true/enable_distro_version_check = false/g' -i chrome/installer/linux/BUILD.gn
-
- # don't overwrite makepkg.conf RUSTFLAGS
- sed -i 's/= args.rust_flags/+= args.rust_flags/g' brave/script/cargo.py
-
- if [ "$COMPONENT" = "4" ]; then
- _msg "Add patches for custom build"
-
- # Allow building against system libraries in official builds
- sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
- tools/generate_shim_headers/generate_shim_headers.py
-
- # Remove bundled libraries for which we will use the system copies; this
- # *should* do what the remove_bundled_libraries.py script does, with the
- # added benefit of not having to list all the remaining libraries
- local _lib
- for _lib in "${_unwanted_bundled_libs[@]}"; do
- find "third_party/$_lib" -type f \
- \! -path "third_party/$_lib/chromium/*" \
- \! -path "third_party/$_lib/google/*" \
- \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
- \! -regex '.*\.\(gn\|gni\|isolate\)' \
- -delete
- done
-
- ./build/linux/unbundle/replace_gn_files.py \
- --system-libraries "${!_system_libs[@]}"
- fi
+ cd chromium-launcher-$_launcher_ver
+ patch -Np1 -i ../chromium-launcher-electron-app.patch
+
+ cd ../brave-browser
+
+ export DEPOT_TOOLS_UPDATE=0
+ export PATH="${PATH}:${srcdir:?}/depot_tools"
+
+ echo "Prepare the environment..."
+ npm install
+
+ cp -r ../brave src
+ cp -r ../depot_tools src/brave/vendor
+
+ cd src/brave || exit
+
+ if [ "$COMPONENT" = "4" ]; then
+ patch -Np1 -i "${srcdir}/system-rust-utils.patch"
+ fi
+
+ jq ".config.projects.chrome.repository.url = \"file://${srcdir}/chromium@${_chromium_ver}\"" package.json > tmp.json
+ mv {tmp,package}.json
+
+ npm install
+
+ cd ../..
+
+ echo "Running \"npm run\""
+ if [ -d src/out/Release ]; then
+ npm run sync -- --force --nohooks
+ else
+ npm run init -- --nohooks
+ fi
+
+ echo "Running hooks..."
+ # python "${srcdir}/depot_tools/gclient.py" runhooks
+ src/build/landmines.py
+ src/build/util/lastchange.py -o src/build/util/LASTCHANGE
+ src/build/util/lastchange.py -m GPU_LISTS_VERSION \
+ --revision-id-only --header src/gpu/config/gpu_lists_version.h
+ src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
+ -s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
+ src/build/util/lastchange.py -s src/third_party/dawn \
+ --revision src/gpu/webgpu/DAWN_VERSION
+ # Create sysmlink to system clang-format
+ ln -sf /usr/bin/clang-format src/buildtools/linux64
+ # Create sysmlink to system Node.js
+ mkdir -p src/third_party/node/linux/node-linux-x64/bin
+ ln -sf /usr/bin/node src/third_party/node/linux/node-linux-x64/bin
+ src/third_party/depot_tools/download_from_google_storage.py \
+ --no_resume --extract --no_auth --bucket chromium-nodejs \
+ -s src/third_party/node/node_modules.tar.gz.sha1
+ python src/tools/download_optimization_profile.py \
+ --newest_state=src/chrome/android/profiles/newest.txt \
+ --local_state=src/chrome/android/profiles/local.txt \
+ --output_name=src/chrome/android/profiles/afdo.prof \
+ --gs_url_base=chromeos-prebuilt/afdo-job/llvm
+ # ln -s /usr/bin/java third_party/jdk/current/bin
+
+ # Brave specific hooks
+ cd src/brave
+ # python script/bootstrap.py
+ echo > vendor/depot_tools/python3_bin_reldir.txt
+ ln -sf /usr/bin/python vendor/depot_tools/python3
+ npm install --no-save --yes
+ python script/web_discovery_project.py --install
+ python script/generate_licenses.py
+ cd ../..
+
+ echo "Apply Chromium patches..."
+ cd src
+
+ # https://crbug.com/893950
+ sed -i -e 's/\<xmlMalloc\>/malloc/' -e 's/\<xmlFree\>/free/' \
+ third_party/blink/renderer/core/xml/*.cc \
+ third_party/blink/renderer/core/xml/parser/xml_document_parser.cc \
+ third_party/libxml/chromium/*.cc \
+ third_party/maldoca/src/maldoca/ole/oss_utils.h
+
+ # Upstream fixes
+ patch -Np1 -i "${srcdir}/unbundle-jsoncpp-avoid-CFI-faults-with-is_cfi-true.patch"
+
+ # Revert kGlobalMediaControlsCastStartStop enabled by default
+ # https://crbug.com/1314342
+ patch -Rp1 -F3 -i "${srcdir}/REVERT-enable-GlobalMediaControlsCastStartStop.patch"
+
+ # Revert ffmpeg roll requiring new channel layout API support
+ # https://crbug.com/1325301
+ patch -Rp1 -i "${srcdir}/REVERT-roll-src-third_party-ffmpeg-m102.patch"
+ # Revert switch from AVFrame::pkt_duration to AVFrame::duration
+ patch -Rp1 -i "${srcdir}/REVERT-roll-src-third_party-ffmpeg-m106.patch"
+
+ # https://crbug.com/angleproject/7582
+ patch -Np0 -i "${srcdir}/angle-wayland-include-protocol.patch"
+
+ # Fixes for building with libstdc++ instead of libc++
+ patch -Np1 -i "${srcdir}/patches/chromium-103-VirtualCursor-std-layout.patch"
+ patch -Np1 -i "${srcdir}/patches/chromium-105-compiler.patch"
+ patch -Np1 -i "${srcdir}/patches/chromium-106-AutofillPopupControllerImpl-namespace.patch"
+
+ # Sysroot usage in autocxx for Rust
+ patch -Np1 -i "${srcdir}/rust-autocxx-use_sysroot.patch"
+
+ # Hacky patching
+ sed -e 's/\(enable_distro_version_check =\) true/\1 false/g' -i chrome/installer/linux/BUILD.gn
+
+ # Allow building against system libraries in official builds
+ if [ "$COMPONENT" = "4" ]; then
+ sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
+ tools/generate_shim_headers/generate_shim_headers.py
+
+ echo "Add patches for custom build"
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*logging*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*ads-dismissed*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*ads-hash*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*ads-vector*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*ads-ad*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*ads-eligible*.patch
+ rm "$srcdir/brave-patches-$_brave_patchset_name"/brave-*bitcoin*.patch
+ for _patch in "$srcdir/brave-patches-$_brave_patchset_name"/*.patch; do
+ patch -Np1 -i "$_patch"
+ done
+ for _patch in "$srcdir/brave"*.patch; do
+ patch -Np1 -i "$_patch"
+ done
+
+ # Remove bundled libraries for which we will use the system copies; this
+ # *should* do what the remove_bundled_libraries.py script does, with the
+ # added benefit of not having to list all the remaining libraries and
+ # preserving their git directories
+ local _lib
+ for _lib in ${_unwanted_bundled_libs[@]}; do
+ find "third_party/$_lib" -type f \
+ \! -path "third_party/$_lib/chromium/*" \
+ \! -path "third_party/$_lib/google/*" \
+ \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
+ \! -regex '.*\.\(git.*\|gn\|gni\|isolate\)' \
+ -delete
+ done
+
+ ./build/linux/unbundle/replace_gn_files.py \
+ --system-libraries "${!_system_libs[@]}"
+ fi
}
build() {
- cd "brave-browser"
-
- if check_buildoption ccache y; then
- # Avoid falling back to preprocessor mode when sources contain time macros
- export CCACHE_SLOPPINESS=time_macros
- fi
-
- export CC=clang
- export CXX=clang++
- export AR=llvm-ar
- export NM=llvm-nm
-
- if [ "$USE_SCCACHE" -eq "1" ]; then
- echo "sccache = /usr/bin/sccache" >> .npmrc
- fi
-
- echo 'brave_variations_server_url = https://variations.brave.com/seed' >> .npmrc
- echo 'brave_stats_updater_url = https://laptop-updates.brave.com' >> .npmrc
- echo 'brave_stats_api_key = fe033168-0ff8-4af6-9a7f-95e2cbfc' >> .npmrc
- echo 'brave_sync_endpoint = https://sync-v2.brave.com/v2' >> .npmrc
- echo "uphold_client_id = 6d8d9473ed20be627f71ed46e207f40c004c5b1a" >> .npmrc
- echo "uphold_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
- echo "uphold_staging_client_id = 4c2b665ca060d912fec5c735c734859a06118cc8" >> .npmrc
- echo "uphold_staging_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
- echo "gemini_api_url = https://api.gemini.com/v1" >> .npmrc
- echo "gemini_oauth_url = https://api.gemini.com/v1/oauth" >> .npmrc
- echo "gemini_wallet_client_id = 6d8d9473ed20be627f71ed46e207f40c004c5b1a" >> .npmrc
- echo "gemini_wallet_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
-
- npm_args=()
- if [ "$COMPONENT" = "4" ]; then
- local _flags=(
- 'custom_toolchain="//build/toolchain/linux/unbundle:default"'
- 'host_toolchain="//build/toolchain/linux/unbundle:default"'
- 'clang_use_chrome_plugins=false'
- 'is_official_build=true' # implies is_cfi=true on x86_64
- 'treat_warnings_as_errors=false'
- 'disable_fieldtrial_testing_config=true'
- 'blink_enable_generated_code_formatting=false'
- 'ffmpeg_branding="Chrome"'
- 'proprietary_codecs=true'
- 'rtc_use_pipewire=true'
- 'link_pulseaudio=true'
- 'use_gnome_keyring=false'
- 'use_sysroot=false'
- 'use_custom_libcxx=false'
- 'enable_hangout_services_extension=true'
- 'enable_widevine=true'
- 'enable_nacl=false'
- 'target_sysroot=/'
- 'use_vaapi=true'
- 'is_clang=true'
- 'use_lld=true'
- 'chrome_pgo_phase=2'
- )
-
- if [[ -n ${_system_libs[icu]+set} ]]; then
- _flags+=('icu_use_data_file=false')
- fi
-
- if check_option strip y; then
- _flags+=('symbol_level=0'
- 'blink_symbol_level=0')
- fi
-
- # Filter known bad flags
- CFLAGS=${CFLAGS/Ofast/O3}
- CXXFLAGS=${CXXFLAGS/Ofast/O3}
-
- # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
- CFLAGS+=' -Wno-builtin-macro-redefined'
- CXXFLAGS+=' -Wno-builtin-macro-redefined'
- CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
-
- # Do not warn about unknown warning options
- CFLAGS+=' -Wno-unknown-warning-option'
- CXXFLAGS+=' -Wno-unknown-warning-option'
-
- npm_args+=(
- "$(echo "${_flags[@]}" | tr ' ' '\n' | sed -e 's/=/:/' -e 's/^/--gn=/')"
- )
- fi
-
- ## See explanation on top to select your build
- case $COMPONENT in
- 0)
- _msg "Normal build (with debug)"
- npm run build
- ;;
- 2)
- _msg "Static build"
- npm run build -- Static
- ;;
- 3)
- _msg "Debug build"
- npm run build -- Debug
- ;;
- 4)
- _msg "Release custom build"
- npm run build Release -- "${npm_args[@]}"
- ;;
- 1|*)
- _msg "Release build"
- npm run build Release
- ;;
- esac
+ make CHROMIUM_APP=Brave CHROMIUM_NAME=brave -C chromium-launcher-$_launcher_ver
+
+ cd "brave-browser"
+
+ if check_buildoption ccache y; then
+ # Avoid falling back to preprocessor mode when sources contain time macros
+ export CCACHE_SLOPPINESS=time_macros
+ fi
+
+ export PATH="${PATH}:${srcdir:?}/brave-browser/src/brave/vendor/depot_tools"
+
+ export CC=clang
+ export CXX=clang++
+ export AR=llvm-ar
+ export NM=llvm-nm
+
+ if [ "$USE_SCCACHE" -eq "1" ]; then
+ echo "sccache = /usr/bin/sccache" >> .npmrc
+ fi
+
+ echo "brave_services_key = qjVKcxtUybh8WpKNoQ7EbgbkJTMu7omjDHKk=VrPApb8PwJyPE9eqchxedTsMEWg" > .npmrc
+ echo "brave_variations_server_url = https://variations.brave.com/seed" >> .npmrc
+ echo "brave_stats_updater_url = https://laptop-updates.brave.com" >> .npmrc
+ echo "brave_stats_api_key = fe033168-0ff8-4af6-9a7f-95e2cbfc" >> .npmrc
+ echo "brave_sync_endpoint = https://sync-v2.brave.com/v2" >> .npmrc
+ echo "updater_dev_endpoint = https://go-updater-dev.bravesoftware.com/extensions" >> .npmrc
+ echo "updater_prod_endpoint = https://go-updater.brave.com/extensions" >> .npmrc
+ echo "rewards_grant_dev_endpoint = https://grant.rewards.brave.com" >> .npmrc
+ echo "rewards_grant_staging_endpoint = https://grant.rewards.brave.com" >> .npmrc
+ echo "rewards_grant_prod_endpoint = https://grant.rewards.brave.com" >> .npmrc
+ echo "uphold_client_id = 6d8d9473ed20be627f71ed46e207f40c004c5b1a" >> .npmrc
+ echo "uphold_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
+ echo "uphold_staging_client_id = 4c2b665ca060d912fec5c735c734859a06118cc8" >> .npmrc
+ echo "uphold_staging_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
+ echo "gemini_api_url = https://api.gemini.com/v1" >> .npmrc
+ echo "gemini_oauth_url = https://api.gemini.com/v1/oauth" >> .npmrc
+ echo "gemini_wallet_client_id = 6d8d9473ed20be627f71ed46e207f40c004c5b1a" >> .npmrc
+ echo "gemini_wallet_client_secret = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" >> .npmrc
+ echo "sardine_client_id = 7ca8433c-7e61-4e25-b76e-25aa2da68df1" >> .npmrc
+ echo "sardine_client_secret = 7ca8433c-7e61-4e25-b76e-25aa2da68df1" >> .npmrc
+
+ npm_args=()
+ if [ "$COMPONENT" = "4" ]; then
+ local _flags=(
+ 'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+ 'host_toolchain="//build/toolchain/linux/unbundle:default"'
+ 'clang_base_path="/usr"'
+ 'clang_use_chrome_plugins=false'
+ 'symbol_level=0' # sufficient for backtraces on x86(_64)
+ 'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
+ 'treat_warnings_as_errors=false'
+ 'disable_fieldtrial_testing_config=true'
+ 'blink_enable_generated_code_formatting=false'
+ 'ffmpeg_branding="Chrome"'
+ 'proprietary_codecs=true'
+ 'rtc_use_pipewire=true'
+ 'link_pulseaudio=true'
+ 'use_gnome_keyring=false'
+ 'use_sysroot=false'
+ 'use_custom_libcxx=false'
+ 'enable_hangout_services_extension=true'
+ 'enable_widevine=true'
+ 'enable_nacl=false'
+ 'use_vaapi=true'
+ )
+ _flags+=("rustup_path=\"$HOME/.rustup\"" "cargo_path=\"$HOME/.cargo\"")
+
+ if [[ -n ${_system_libs[icu]+set} ]]; then
+ _flags+=('icu_use_data_file=false')
+ fi
+
+ # This specific tool requires to be built outside of an official build
+ echo "${_flags[@]}" | tr ' ' '\n' >> src/brave/tools/redirect_cc/args.gni
+
+ _flags+=('is_official_build=true') # implies is_cfi=true on x86_64
+
+ # Facilitate deterministic builds (taken from build/config/compiler/BUILD.gn)
+ CFLAGS+=' -Wno-builtin-macro-redefined'
+ CXXFLAGS+=' -Wno-builtin-macro-redefined'
+ CPPFLAGS+=' -D__DATE__= -D__TIME__= -D__TIMESTAMP__='
+
+ # Do not warn about unknown warning options
+ CFLAGS+=' -Wno-unknown-warning-option'
+ CXXFLAGS+=' -Wno-unknown-warning-option'
+
+ npm_args+=(
+ $(echo "${_flags[@]}" | tr ' ' '\n' | sed -e 's/=/:/' -e 's/^/--gn=/')
+ )
+ fi
+
+ # Let Chromium set its own symbol level
+ CFLAGS=${CFLAGS/-g }
+ CXXFLAGS=${CXXFLAGS/-g }
+
+ # https://github.com/ungoogled-software/ungoogled-chromium-archlinux/issues/123
+ CFLAGS=${CFLAGS/-fexceptions}
+ CFLAGS=${CFLAGS/-fcf-protection}
+ CXXFLAGS=${CXXFLAGS/-fexceptions}
+ CXXFLAGS=${CXXFLAGS/-fcf-protection}
+
+ # This appears to cause random segfaults when combined with ThinLTO
+ # https://bugs.archlinux.org/task/73518
+ CFLAGS=${CFLAGS/-fstack-clash-protection}
+ CXXFLAGS=${CXXFLAGS/-fstack-clash-protection}
+
+ # https://crbug.com/957519#c122
+ CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS}
+
+ ## See explanation on top to select your build
+ case $COMPONENT in
+ 0)
+ echo "Normal build (with debug)"
+ npm run build
+ npm run build -- --target chrome_sandbox
+ npm run build -- --target chromedriver.unstripped
+ ;;
+ 2)
+ echo "Static build"
+ npm run build Static
+ npm run build Static -- --target chrome_sandbox
+ npm run build Static -- --target chromedriver.unstripped
+ ;;
+ 3)
+ echo "Debug build"
+ npm run build Debug
+ npm run build Debug -- --target chrome_sandbox
+ npm run build Debug -- --target chromedriver.unstripped
+ ;;
+ 4)
+ echo "Release custom build"
+ npm run build Release -- "${npm_args[@]}"
+ npm run build Release -- --target chrome_sandbox "${npm_args[@]}"
+ npm run build Release -- --target chromedriver.unstripped "${npm_args[@]}"
+ ;;
+ 1|*)
+ echo "Release build"
+ npm run build Release
+ npm run build Release -- --target chrome_sandbox
+ npm run build Release -- --target chromedriver.unstripped
+ ;;
+ esac
}
package() {
- install -d -m0755 "$pkgdir/usr/lib/$pkgname/"{,swiftshader,locales,resources}
-
- # Copy necessary release files
- cd "brave-browser/src/out/Release"
- cp -a --reflink=auto \
- MEIPreload \
- brave \
- brave_*.pak \
- chrome_*.pak \
- resources.pak \
- v8_context_snapshot.bin \
- libGLESv2.so \
- libEGL.so \
- chrome_crashpad_handler \
- "$pkgdir/usr/lib/$pkgname/"
- cp -a --reflink=auto \
- swiftshader/libGLESv2.so \
- swiftshader/libEGL.so \
- "$pkgdir/usr/lib/$pkgname/swiftshader/"
- cp -a --reflink=auto \
- locales/*.pak \
- "$pkgdir/usr/lib/$pkgname/locales/"
- cp -a --reflink=auto \
- resources/brave_extension \
- resources/brave_rewards \
- "$pkgdir/usr/lib/$pkgname/resources/"
-
- if [ "$COMPONENT" != "4" ] || [[ -z ${_system_libs[icu]+set} ]]; then
- cp -a --reflink=auto \
- icudtl.dat \
- "$pkgdir/usr/lib/$pkgname/"
- fi
-
- cd "$srcdir"
- install -Dm0755 brave-launcher "$pkgdir/usr/bin/$pkgname"
- install -Dm0644 -t "$pkgdir/usr/share/applications/" brave-browser.desktop
- install -Dm0644 "brave-browser/src/brave/app/theme/brave/product_logo_128.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
- install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname" "brave-browser/LICENSE"
+ cd chromium-launcher-$_launcher_ver
+ make PREFIX=/usr DESTDIR="$pkgdir" CHROMIUM_NAME=brave install
+
+ install -Dm644 LICENSE \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE.launcher"
+
+ install -d -m0755 "$pkgdir/usr/lib/$pkgname/"{,locales,resources}
+
+ # Copy necessary release files
+ cd ../brave-browser/src
+
+ install -Dm755 out/Release/$pkgname "$pkgdir/usr/lib/$pkgname/$pkgname"
+ install -Dm755 out/Release/chromedriver.unstripped "$pkgdir/usr/bin/bravedriver"
+ install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/$pkgname/chrome-sandbox"
+ ln -s $pkgname "$pkgdir/usr/bin/$pkgname-browser"
+ ln -s $pkgname "$pkgdir/usr/lib/$pkgname/$pkgname-browser"
+
+ install -Dm644 chrome/installer/linux/common/desktop.template \
+ "$pkgdir/usr/share/applications/$pkgname-browser.desktop"
+ sed -i \
+ -e 's/@@MENUNAME@@/Brave/g' \
+ -e 's/@@PACKAGE@@/brave/g' \
+ -e 's/@@USR_BIN_SYMLINK_NAME@@/brave/g' \
+ "$pkgdir/usr/share/applications/$pkgname-browser.desktop"
+
+ install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
+ "$pkgdir/usr/share/metainfo/$pkgname-browser.appdata.xml"
+ sed -ni \
+ -e 's/chromium-browser\.desktop/brave-browser.desktop/' \
+ -e '/<update_contact>/d' \
+ -e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
+ -e '/^<?xml/,$p' \
+ "$pkgdir/usr/share/metainfo/$pkgname-browser.appdata.xml"
+
+ local toplevel_files=(
+ brave_100_percent.pak
+ brave_200_percent.pak
+ brave_resources.pak
+
+ # Chromium
+ chrome_100_percent.pak
+ chrome_200_percent.pak
+ chrome_crashpad_handler
+ resources.pak
+ v8_context_snapshot.bin
+
+ # ANGLE
+ libEGL.so
+ libGLESv2.so
+
+ # SwiftShader ICD
+ libvk_swiftshader.so
+ vk_swiftshader_icd.json
+ )
+
+ if [[ -z ${_system_libs[icu]+set} ]]; then
+ toplevel_files+=(icudtl.dat)
+ fi
+
+ cp "${toplevel_files[@]/#/out/Release/}" "$pkgdir/usr/lib/$pkgname/"
+ install -Dm644 -t "$pkgdir/usr/lib/$pkgname/locales" out/Release/locales/*.pak
+ install -Dm644 -t "$pkgdir/usr/lib/$pkgname/MEIPreload" out/Release/MEIPreload/*.*
+
+ cp -r out/Release/resources/brave_* "$pkgdir/usr/lib/$pkgname/resources/"
+
+ for size in 24 48 64 128 256; do
+ install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \
+ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/$pkgname.png"
+ done
+
+ for size in 16 32; do
+ install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \
+ "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/$pkgname.png"
+ done
+
+ install -Dm0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE.chromium"
+ install -Dm0644 brave/LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}