Skip to content

Commit

Permalink
Merge pull request #145 from mariux64/brave-browser-1.20.108
Browse files Browse the repository at this point in the history
brave-browser: jump from 0.66.101  to  1.20.103
  • Loading branch information
wwwutz authored Mar 1, 2021
2 parents cc9b9a3 + 82f4d2b commit b8c8f07
Showing 1 changed file with 367 additions and 0 deletions.
367 changes: 367 additions & 0 deletions brave-browser-1.20.108-0.build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,367 @@
#!/bin/bash
#
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=brave
#
PKG=brave-browser
VERSION=1.20.108
BUILD=0

PATH=/bin:/usr/bin:/usr/sbin:/usr/local/package/bin:/usr/local/bin

PREFIX=/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_


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=('git' 'npm<7.0.0' 'python' 'python2' 'icu' 'glibc' 'gperf' 'java-runtime-headless' 'clang' 'python2-setuptools')
optdepends=('cups: Printer support'
'libpipewire02: WebRTC desktop sharing under Wayland'
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
'kwallet: for storing passwords in KWallet on KDE desktops'
'sccache: For faster builds')
chromium_base_ver="88"
patchset="3"
patchset_name="chromium-${chromium_base_ver}-patchset-${patchset}"
_launcher_ver=6
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" "chromium-no-history2.patch")
arch_revision=bbf06a92e65eeccade2e484562ecd81b89756df0

[ -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 /pkg/brave-browser-1.20.108-0/build/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 chromium-no-history2.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 \
subpixel-anti-aliasing-in-FreeType-2.8.1.patch \
chromium-glibc-2.33.patch
do
[ -e ${P} ] || wget "https://git.archlinux.org/svntogit/packages.git/plain/trunk/${P}?h=packages/chromium&id=${arch_revision}" -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}"

echo "Prepare the environment..."
npm install
patch -Np1 -i ../chromium-no-history.patch||echo

git submodule init
git config submodule.depot_tools.url "${srcdir}"/depot_tools
git config submodule.brave-core.url "${srcdir}"/brave
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

patch -Np1 -i ../chromium-no-history2.patch

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 -d third_party/skia <../../subpixel-anti-aliasing-in-FreeType-2.8.1.patch
patch -Np1 -i ../../chromium-glibc-2.33.patch

# Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../../patches/chromium-87-openscreen-include.patch
patch -Np1 -i ../../patches/chromium-88-CompositorFrameReporter-dcheck.patch
patch -Np1 -i ../../patches/chromium-88-ideographicSpaceCharacter.patch
patch -Np1 -i ../../patches/chromium-88-AXTreeFormatter-include.patch

# Force script incompatible with Python 3 to use /usr/bin/python2
sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

# 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 "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

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() {
# 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"
}


# prepare

# build

package

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

0 comments on commit b8c8f07

Please sign in to comment.