Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
pkg-scripts/brave-browser-1.29.79-0.build.sh
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
420 lines (344 sloc)
13.1 KB
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
#!/bin/bash | |
# | |
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=brave | |
# | |
PKG=brave-browser | |
VERSION=1.29.79 | |
BUILD=0 | |
PATH=/bin:/usr/bin:/usr/sbin:/usr/local/package/bin:/usr/local/bin | |
PREFIX=/pkg/$PKG-$VERSION-$BUILD | |
# PREFIX=/scratch/local2/pkg/$PKG-$VERSION-$BUILD | |
set -xev | |
umask 022 | |
BUILD_TMPDIR=/scratch/local2/$PKG-$VERSION-$BUILD.build.tmp | |
test -d $BUILD_TMPDIR && chmod -R u+rwx $BUILD_TMPDIR && rm -rf $BUILD_TMPDIR | |
mkdir -p $BUILD_TMPDIR/home | |
export TMPDIR=$BUILD_TMPDIR | |
export HOME=$BUILD_TMPDIR/home | |
exec </dev/null | |
mkdir -p $PREFIX | |
cat >$PREFIX/profile <<-EOF | |
PATH=$PREFIX/bin:\$PATH | |
if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi | |
EOF | |
. $PREFIX/profile | |
export MAKEFLAGS="-j $(nproc)" | |
# export MAKEFLAGS="-j 1" | |
# | |
# burn python to v2 | |
# dont symlink so we can debug | |
# | |
#mkdir -p $PREFIX/bin | |
#cat >$PREFIX/bin/python <<'EOF' | |
##! /bin/bash | |
#prun python2 $(basename "$0") "$@" | |
#EOF | |
#chmod 755 $PREFIX/bin/python | |
cat >>${HOME}/.wgetrc <<'_EOW_' | |
http_proxy = beehive:3128 | |
https_proxy = beehive:3128 | |
ftp_proxy = beehive:3128 | |
check-certificate = quiet | |
_EOW_ | |
# | |
# | |
# | |
rm ${HOME}/.wgetrc | |
# | |
# | |
# | |
BUILDDIR=$PREFIX/build | |
set -ex | |
mkdir -p $BUILDDIR | |
cd $BUILDDIR | |
S=brave-browser-${VERSION} | |
#git config --global http.proxy http://beehive:3128 | |
#git config --global https.proxy https://beehive.molgen.mpg.de:3128 | |
git config --global advice.detachedHead false | |
git config --global http.sslVerify false | |
git config --global pack.threads 24 | |
srcdir=${BUILDDIR} | |
pkgname=brave | |
pkgver=${VERSION} | |
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=(clang git glibc gperf icu java-runtime-headless llvm npm pipewire python python-protobuf python2) | |
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="93" | |
patchset="6" | |
patchset_name="chromium-${chromium_base_ver}-patchset-${patchset}" | |
_launcher_ver=8 | |
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) | |
_arch_revision=4b878998bab64f599eb2dd14e27e7fe42f69a1f2 | |
_patches=(extend-enable-accelerated-video-decode-flag.patch | |
linux-sandbox-syscall-broker-use-struct-kernel_stat.patch | |
linux-sandbox-fix-fstatat-crash.patch | |
sql-make-VirtualCursor-standard-layout-type.patch | |
chromium-freetype-2.11.patch) | |
for _patch in "${_patches[@]}"; do | |
source+=("$_patch::https://raw.githubusercontent.com/archlinux/svntogit-packages/$_arch_revision/chromium/trunk/$_patch") | |
done | |
[ -d brave-browser ] || git clone https://github.com/brave/brave-browser --branch v${pkgver} | |
umask | |
[ -d chromium ] || git clone https://github.com/chromium/chromium.git | |
ls -la ${BUILDDIR}/chromium/.git/objects/pack/ | |
[ -d depot_tools ] || git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git | |
[ -d brave-core ] || git clone https://github.com/brave/brave-core.git --branch v${pkgver} | |
[ -d adblock-rust ] || git clone https://github.com/brave/adblock-rust.git | |
[ -d brave-aur ] || git clone https://aur.archlinux.org/brave.git brave-aur | |
for aur in brave-launcher brave-browser.desktop chromium-no-history.patch; do | |
[ -e ${aur} ] || ln -s brave-aur/${aur} | |
done | |
[ -e ${patchset_name}.tar.xz ] || wget "https://github.com/stha09/chromium-patches/releases/download/${patchset_name}/${patchset_name}.tar.xz" | |
[ -d patches ] || tar xf ${patchset_name}.tar.xz | |
[ -e chromium-launcher-$_launcher_ver.tar.gz ] || wget https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz -O chromium-launcher-$_launcher_ver.tar.gz | |
for P in "${_patches[@]}"; | |
do | |
[ -e ${P} ] || wget "https://raw.githubusercontent.com/archlinux/svntogit-packages/$_arch_revision/chromium/trunk/${P}" -O ${P} | |
done | |
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}" | |
# https://www.chromium.org/developers/how-tos/depottools/ | |
# - The gclient and git-cl scripts are actually wrapper scripts that will, by default, always update the depot_tools to the latest versions | |
export DEPOT_TOOLS_UPDATE=0 | |
echo "Prepare the environment..." | |
npm install | |
patch -Np1 -i ../chromium-no-history.patch||echo | |
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 | |
[ -d src ] && rm -rf src | |
cp -rlT "${srcdir}"/chromium src | |
cp -rlT "${srcdir}"/brave-core src/brave | |
cp -rl "${srcdir}"/depot_tools src/brave/vendor/ | |
cp -rlT "${srcdir}"/adblock-rust src/brave/vendor/adblock_rust_ffi | |
cat >src/brave/vendor/adblock_rust_ffi/README.chromium <<__EOT__ | |
Name: adblock_rust_ffi | |
URL: https://github.com/brave/adblock-rust-ffi | |
License: Mozilla Public License 2.0 | |
License File: LICENSE | |
__EOT__ | |
echo "Running \"npm run\"" | |
if [ -d src/out/Release ]; then | |
npm run sync -- --force | |
else | |
npm run init | |
fi | |
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 | |
# Upstream fixes | |
# patch -Np1 -i ../../extend-enable-accelerated-video-decode-flag.patch | |
patch -Np1 -i ../../linux-sandbox-syscall-broker-use-struct-kernel_stat.patch | |
patch -Np1 -i ../../linux-sandbox-fix-fstatat-crash.patch | |
# https://chromium-review.googlesource.com/c/chromium/src/+/2862724 | |
patch -Np1 -i ../../sql-make-VirtualCursor-standard-layout-type.patch | |
# Fix build with FreeType 2.11 (patch from Gentoo) | |
# patch -Np1 -i ../../chromium-freetype-2.11.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 | |
echo "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 | |
python2 build/linux/unbundle/replace_gn_files.py \ | |
--system-libraries "${!_system_libs[@]}" | |
fi | |
} | |
build() { | |
cd $BUILDDIR | |
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 | |
# 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 | |
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' | |
'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) | |
echo "Normal build (with debug)" | |
npm run build | |
;; | |
2) | |
echo "Static build" | |
npm run build -- Static | |
;; | |
3) | |
echo "Debug build" | |
npm run build -- Debug | |
;; | |
4) | |
echo "Release custom build" | |
npm run build Release -- "${npm_args[@]}" | |
;; | |
*) | |
echo "Release build" | |
npm run build Release | |
;; | |
esac | |
} | |
package() { | |
cd $BUILDDIR | |
# install -d -m0755 "${pkgdir}/usr/lib/${pkgname}/"{,swiftshader,locales,resources} | |
DESTDIR="${PREFIX}/Release" | |
install -d -m0755 "${DESTDIR}/"{,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 \ | |
"${DESTDIR}/" | |
cp -a --reflink=auto \ | |
swiftshader/libGLESv2.so \ | |
swiftshader/libEGL.so \ | |
"${DESTDIR}/swiftshader/" | |
cp -a --reflink=auto \ | |
locales/*.pak \ | |
"${DESTDIR}/locales/" | |
cp -a --reflink=auto \ | |
resources/brave_extension \ | |
resources/brave_rewards \ | |
"${DESTDIR}/resources/" | |
if [ "$COMPONENT" != "4" ] || [[ -z ${_system_libs[icu]+set} ]]; then | |
cp -a --reflink=auto \ | |
icudtl.dat \ | |
"${DESTDIR}/" | |
fi | |
cd "${srcdir}" | |
install -Dm0755 brave-launcher "${DESTDIR}" | |
install -Dm0644 -t "${DESTDIR}" brave-browser.desktop | |
install -Dm0644 "brave-browser/src/brave/app/theme/brave/product_logo_128.png" "${DESTDIR}/brave-browser.png" | |
install -Dm0644 -t "${DESTDIR}" "brave-browser/LICENSE" | |
} | |
export CARGO_NET_GIT_FETCH_WITH_CLI=true | |
pwd | |
prepare | |
pwd | |
build | |
pwd | |
package | |
pwd | |
mkdir -p ${PREFIX}/bin | |
cat >${PREFIX}/bin/brave <<__EOS__ | |
#!/bin/sh | |
export CHROME_LOG_FILE=chrome_debug.log | |
exec ${PREFIX}/Release/brave \ | |
--enable-logging \ | |
--v=0 \ | |
--disable-brave-update --disable-chrome-google-url-tracking-client \ | |
\$@ | |
__EOS__ | |
chmod 755 ${PREFIX}/bin/brave | |
# | |
# 552 sudo -u build touch /scratch/local2/pkg/brave-browser-1.29.79-0/build/brave-browser/src/brave/components/brave_new_tab_ui/data/LICENSE | |
# 561 sudo -u build touch /scratch/local2/pkg/brave-browser-1.29.79-0/build/brave-browser/src/brave/components/third_party/adblock/LICENSE | |
# touch /scratch/local2/pkg/brave-browser-1.29.79-0/build/brave-browser/src/brave/vendor/adblock_rust_ffi/README.chromium | |