-
-
Save Tooney712/797c0888466822791e2b9cc9ecd24d3a to your computer and use it in GitHub Desktop.
Customized Brave 1.26.77 PKGBUILD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Maintainer: Joan Figueras <ffigue at gmail dot com> | |
# Contributor: Jacek Szafarkiewicz <szafar@linux.pl> | |
# Contributor: Maxim Baz <$pkgname at maximbaz dot com> | |
# Alterations done at the recommendation of figue by: Tooney | |
## This particular PKGBUILD is trying to apply a patch that subsitutes brave's rust package dependencies | |
## with a newer version (from 0.1.6 to 0.1.7). When I ran it, it failed to get the correct version, | |
## so I'm no longer sure if I'm just stupid or it's brave itself... | |
## | |
## The following variables can be customized at build time. Use env or export to change at your wish | |
## | |
## Example: env USE_SCCACHE=1 COMPONENT=1 makepkg -sc | |
## | |
## sccache for faster builds - https://github.com/brave/brave-browser/wiki/sccache-for-faster-builds | |
## Valid numbers between: 0 and 1 | |
## Default is: 0 => not use sccache | |
if [ -z ${USE_SCCACHE+x} ]; then | |
USE_SCCACHE=0 | |
fi | |
## | |
## COMPONENT variable | |
## 0 -> build normal (with debug symbols) | |
## 1 -> release (default) | |
## 2 -> static | |
## 3 -> debug | |
## 4 -> release with custom cflags and system libs | |
## https://github.com/brave/brave-browser/wiki#clone-and-initialize-the-repo | |
if [ -z ${COMPONENT+x} ]; then | |
COMPONENT=1 | |
fi | |
## | |
pkgname=brave | |
pkgver=1.26.77 | |
pkgrel=1 | |
pkgdesc='A web browser that stops ads and trackers by default' | |
arch=('x86_64') | |
url='https://www.brave.com/download' | |
license=('custom') | |
depends=('gtk3' 'nss' 'alsa-lib' 'libxss' 'ttf-font' 'libva' 'json-glib') | |
makedepends=('git' 'npm' 'python' 'python2' 'icu' 'glibc' 'gperf' 'java-runtime-headless' 'clang' 'pipewire') | |
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') | |
chromium_base_ver="91" | |
patchset="5" | |
patchset_name="chromium-${chromium_base_ver}-patchset-${patchset}" | |
_launcher_ver=7 | |
# Added patch to sources | |
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" | |
"https://github.com/stha09/chromium-patches/releases/download/${patchset_name}/${patchset_name}.tar.xz" | |
"chromium-no-history.patch" | |
"https://github.com/brave/brave-core/commit/dd4bfdd0c173cbc35153496de0dd6896129cc896.patch") | |
arch_revision=3cd421c2e8ea04eacf49253ea8b40957ef5d3524 | |
Patches=" | |
fix-crash-in-ThemeService.patch | |
unbundle-use-char16_t-as-UCHAR_TYPE.patch | |
make-dom-distiller-protoc-plugin-call-py2.7.patch | |
extend-enable-accelerated-video-decode-flag.patch | |
sql-make-VirtualCursor-standard-layout-type.patch | |
" | |
for arch_patch in $Patches | |
do | |
source+=("${arch_patch}::https://raw.githubusercontent.com/archlinux/svntogit-packages/${arch_revision}/chromium/trunk/${arch_patch}") | |
done | |
# added patch's sum where it was being checked for | |
sha256sums=('SKIP' | |
'SKIP' | |
'SKIP' | |
'SKIP' | |
'SKIP' | |
'e4478c79e2eed500777117bb1d48f4be1866908dcda8d75003a5d055618dfdca' | |
'fa6ed4341e5fc092703535b8becaa3743cb33c72f683ef450edd3ef66f70d42d' | |
'86859c11cfc8ba106a3826479c0bc759324a62150b271dd35d1a0f96e890f52f' | |
'171525009003a9ed1182cfcb6f407d7169d9a731a474304e263029376719f55a' | |
'ea3446500d22904493f41be69e54557e984a809213df56f3cdf63178d2afb49e' | |
'a955dfdeb01fe756e8a4e0b104c8e3725bd5bab9832c86b7ee824376f6b203c4' | |
'3cfe46e181cb9d337c454b5b5adbf5297052f29cd617cdee4380eeb1943825d8' | |
'59a59a60a08b335fe8647fdf0f9d2288d236ebf2cc9626396d0c4d032fd2b25d' | |
'76ceebd14c9a6f1ea6a05b1613e64d1e2aca595e0f0b3e9497e3eeee33ed756c' | |
'66db9132d6f5e06aa26e5de0924f814224a76a9bdf4b61afce161fb1d7643b22' | |
'dd317f85e5abfdcfc89c6f23f4c8edbcdebdd5e083dcec770e5da49ee647d150') | |
# 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=( | |
[ffmpeg]=ffmpeg | |
[flac]=flac | |
[fontconfig]=fontconfig | |
[freetype]=freetype2 | |
[harfbuzz-ng]=harfbuzz | |
[icu]=icu | |
[libdrm]= | |
[libjpeg]=libjpeg | |
[libpng]=libpng | |
#[libvpx]=libvpx | |
[libwebp]=libwebp | |
[libxml]=libxml2 | |
[libxslt]=libxslt | |
[opus]=opus | |
[re2]=re2 | |
[snappy]=snappy | |
[zlib]=minizip | |
) | |
_unwanted_bundled_libs=( | |
$(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+=("04a4f1e3c54b5f76873e9d178124a016028fae10374abb2b35bac822337d5dde") | |
depends+=('libpulse' 'pciutils') | |
depends+=(${_system_libs[@]}) | |
makedepends+=('lld' 'libva' 'pipewire' 'python2-xcb-proto') | |
else | |
makedepends+=('ncurses5-compat-libs') | |
fi | |
prepare() { | |
cd "brave-browser" | |
# Hack to prioritize python2 in PATH | |
mkdir -p "${srcdir}/bin" | |
ln -sf /usr/bin/python2 "${srcdir}/bin/python" | |
ln -sf /usr/bin/python2-config "${srcdir}/bin/python-config" | |
export PATH="${srcdir}/bin:${PATH}" | |
msg2 "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 | |
msg2 "Running \"npm run\"" | |
if [ -d src/out/Release ]; then | |
npm run sync -- --force | |
else | |
npm run init | |
fi | |
msg2 "Apply Chromium patches..." | |
cd src/ | |
# applying patch here | |
patch -Np1 -i ../../dd4bfdd0c173cbc35153496de0dd6896129cc896.patch | |
# 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 | |
# Upstream fixes | |
patch -Np1 -i ../../fix-crash-in-ThemeService.patch | |
patch -Np1 -i ../../unbundle-use-char16_t-as-UCHAR_TYPE.patch | |
patch -Np1 -i ../../make-dom-distiller-protoc-plugin-call-py2.7.patch | |
patch -Np1 -i ../../extend-enable-accelerated-video-decode-flag.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 | |
# Hacky patching | |
sed -e 's/enable_distro_version_check = true/enable_distro_version_check = 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 | |
msg2 "Add patches for custom build" | |
for _patch in "$srcdir/brave-patches-$brave_patchset_name"/*.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 | |
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 | |
} | |
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=ar | |
export NM=nm | |
# Hack to prioritize python2 in PATH | |
mkdir -p "${srcdir}/bin" | |
ln -sf /usr/bin/python2 "${srcdir}/bin/python" | |
ln -sf /usr/bin/python2-config "${srcdir}/bin/python-config" | |
export PATH="${srcdir}/bin:${PATH}" | |
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 | |
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' | |
'treat_warnings_as_errors=false' | |
'fieldtrial_testing_like_official_build=true' | |
'proprietary_codecs=true' | |
'rtc_use_pipewire=true' | |
'link_pulseaudio=true' | |
'use_gnome_keyring=false' | |
'use_sysroot=false' | |
'use_custom_libcxx=false' | |
'use_vaapi=true' | |
) | |
if [[ -n ${_system_libs[icu]+set} ]]; then | |
_flags+=('icu_use_data_file=false') | |
fi | |
if check_option strip y; then | |
_flags+=('symbol_level=0') | |
fi | |
# 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) | |
msg2 "Normal build (with debug)" | |
npm run build | |
;; | |
2) | |
msg2 "Static build" | |
npm run build -- Static | |
;; | |
3) | |
msg2 "Debug build" | |
npm run build -- Debug | |
;; | |
4) | |
msg2 "Release custom build" | |
npm run build Release -- "${npm_args[@]}" | |
;; | |
*) | |
msg2 "Release build" | |
npm run build Release | |
;; | |
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 \ | |
"${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" | |
} | |
# vim:set ts=4 sw=4 et: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment