Skip to content
This repository has been archived by the owner on May 20, 2023. It is now read-only.
Permalink
packages/chrom…
Switch branches/tags

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?
Go to file
 
 
Cannot retrieve contributors at this time
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=chromium
pkgver=113.0.5672.126
pkgrel=1
_launcher_ver=8
_manual_clone=0
pkgdesc="A web browser built for speed, simplicity, and security"
arch=('x86_64')
url="https://www.chromium.org/Home"
license=('BSD')
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
'libffi' 'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
'qt5-base' 'java-runtime-headless' 'git')
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
'kdialog: support for native dialogs in Plasma'
'qt5-base: enable Qt5 with --enable-features=AllowQt'
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
'kwallet: support for storing passwords in KWallet on Plasma')
options=('!lto') # Chromium adds its own flags for ThinLTO
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz
https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz
add-cstring-for-std-strlen-in-web_view_impl.cc.patch
swiftshader-add-cstdint-for-uint64_t.patch
dawn-iwyu-add-cstdint-for-uint8_t.patch
iwyu-add-stdint.h-for-various-int-types-in-base.patch
iwyu-add-cstdint-for-uintptr_t-in-device.patch
iwyu-add-stdint.h-for-uint32_t-in-chrome_pdf.patch
iwyu-add-stdint.h-for-uint64_t-in-EncounteredSurface.patch
iwyu-add-stdint.h-for-integer-types-in-ui.patch
openscreen-iwyu-add-stdint.h.patch
pdfium-iwyu-add-stdint.h-for-uint32_t.patch
unbundle-do-not-use-ZipAnalyzer-traits-header.patch
iwyu-add-stdint.h-for-uint32_t-in-cc.patch
add-missing-includes-causing-build-errors.patch
iwyu-add-stdint.h-for-int-types-in-gpu_feature_info.patch
iwyu-add-stdint.h-for-various-int-types-in-comp.patch
iwyu-add-stdint.h-for-various-integer-types-in-net.patch
iwyu-add-cstdint-for-int-types-in-s2cellid.patch
download-bubble-typename.patch
webauthn-variant.patch
random-fixes-for-gcc13.patch
disable-GlobalMediaControlsCastStartStop.patch
use-oauth2-client-switches-as-default.patch)
sha256sums=('0def7cd594304d7675821d42a4207377af98e321a78a91ee5200aea55adc2d93'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
'5f868cba9e4d387499711738adc6fd87ab9f1ef61f464016bc682660ae59206a'
'208f2ebcef5c690207e6e798ffbf9e92214e9d35f415c2f6b93efebad831b7e2'
'94baaaa6fbec0af6ec2e967f0b7440b4261a927e853e212d84f0aeaf56ae53f0'
'0003e737072f4f1b22ff932221595e85dd9bf65720ccac36f840cccb8000e3e1'
'ffe499d63c9c1074cbc3995c188c89b748388dbb9dccf975ce28a434c723acf7'
'7af466e4b5985cc9f0b33df2f3cd2e458c7cbfd7190505d105aad4401c9d072b'
'727588a1b42f6cfe54acf4759a0c3ad3778590d5a5cefcdcb54b579ba16b09c8'
'0914be53b2205b34e4da96f5a94505ac2a01e3639ff433535a23be2d0d581fa7'
'8c9662bed23bfd66ae76d044541f316624386ca4b3baef57a47289feb3db58a9'
'890b6836cea4c31513166db720b210da20d20bcd97a713545268cceffd707af5'
'ffa23c6233b47e0b4d688e30a44a2550e1236bbd0dc57b996d33dc42266530af'
'f6a0e149ef5195883c56a875ae366ed92d9960652f2657bfb65b5408badafc65'
'3255477d02d49ef86d47c727b9369f46dc787319bb648bf267a68f37e2041e50'
'94995b4e37671dcd27968bd5a2ebcf50e67bd22659a4bb4a5d0a4f81ff54f471'
'88320e0f08cc7b53807961d0735e7c1bd455a6faf9d8a5d056b7ba7809e37355'
'5dfbfd073f78c887bbffca2b644116571cc9b1196867e44e8fc0cbb40afcf1bc'
'd97dc00f66fa5868584e4b6d5ef817911eab2dc8022a37c75a00d063f4dac483'
'd464eed4be4e9bf6187b4c40a759c523b7befefa25ba34ad6401b2a07649ca2a'
'590fabbb26270947cb477378b53a9dcd17855739076b4af9983e1e54dfcab6d7'
'ba4dd0a25a4fc3267ed19ccb39f28b28176ca3f97f53a4e9f5e9215280040ea0'
'7f3b1b22d6a271431c1f9fc92b6eb49c6d80b8b3f868bdee07a6a1a16630a302'
'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711')
if (( _manual_clone )); then
source[0]=fetch-chromium-release
makedepends+=('python-httplib2' 'python-pyparsing' 'python-six')
fi
# 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 # https://aomedia.googlesource.com/aom/+/706ee36dcc82
#[libavif]=libavif # https://github.com/AOMediaCodec/libavif/commit/4d2776a3
[libdrm]=
[libjpeg]=libjpeg
[libpng]=libpng
#[libvpx]=libvpx
[libwebp]=libwebp
[libxml]=libxml2
[libxslt]=libxslt
[opus]=opus
[re2]=re2
[snappy]=snappy
[woff2]=woff2
[zlib]=minizip
)
_unwanted_bundled_libs=(
$(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/')
)
depends+=(${_system_libs[@]})
# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys.
#
# Starting with Chromium 89 (2021-03-02) the OAuth2 credentials have been left
# out: https://archlinux.org/news/chromium-losing-sync-support-in-early-march/
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
prepare() {
if (( _manual_clone )); then
./fetch-chromium-release $pkgver
fi
cd chromium-$pkgver
# Allow building against system libraries in official builds
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
tools/generate_shim_headers/generate_shim_headers.py
# 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
# 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
# Upstream fixes
patch -Np1 -i ../add-cstring-for-std-strlen-in-web_view_impl.cc.patch
patch -Np1 -d third_party/swiftshader <../swiftshader-add-cstdint-for-uint64_t.patch
patch -Np1 -d third_party/dawn <../dawn-iwyu-add-cstdint-for-uint8_t.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-various-int-types-in-base.patch
patch -Np1 -i ../iwyu-add-cstdint-for-uintptr_t-in-device.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-uint32_t-in-chrome_pdf.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-uint64_t-in-EncounteredSurface.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-integer-types-in-ui.patch
patch -Np1 -d third_party/openscreen/src <../openscreen-iwyu-add-stdint.h.patch
patch -Np1 -d third_party/pdfium <../pdfium-iwyu-add-stdint.h-for-uint32_t.patch
patch -Np1 -i ../unbundle-do-not-use-ZipAnalyzer-traits-header.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-uint32_t-in-cc.patch
patch -Np1 -i ../add-missing-includes-causing-build-errors.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-int-types-in-gpu_feature_info.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-various-int-types-in-comp.patch
patch -Np1 -i ../iwyu-add-stdint.h-for-various-integer-types-in-net.patch
patch -Np1 -i ../iwyu-add-cstdint-for-int-types-in-s2cellid.patch
# Disable kGlobalMediaControlsCastStartStop by default
# https://crbug.com/1314342
patch -Np1 -i ../disable-GlobalMediaControlsCastStartStop.patch
# Build fixes
patch -Np1 -i ../download-bubble-typename.patch
patch -Np1 -i ../webauthn-variant.patch
patch -Np1 -i ../random-fixes-for-gcc13.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/
# 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[@]}"
}
build() {
make -C chromium-launcher-$_launcher_ver
cd chromium-$pkgver
export CC=clang
export CXX=clang++
export AR=ar
export NM=nm
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'
'is_official_build=true' # implies is_cfi=true on x86_64
'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_custom_libcxx=false'
'use_gnome_keyring=false'
'use_sysroot=false'
'use_system_libffi=true'
'enable_hangout_services_extension=true'
'enable_widevine=true'
'enable_nacl=false'
"google_api_key=\"$_google_api_key\""
)
if [[ -n ${_system_libs[icu]+set} ]]; then
_flags+=('icu_use_data_file=false')
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'
# 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}
gn gen out/Release --args="${_flags[*]}"
ninja -C out/Release chrome chrome_sandbox chromedriver.unstripped
}
package() {
cd chromium-launcher-$_launcher_ver
make PREFIX=/usr DESTDIR="$pkgdir" install
install -Dm644 LICENSE \
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher"
cd ../chromium-$pkgver
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium"
install -D out/Release/chromedriver.unstripped "$pkgdir/usr/bin/chromedriver"
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
install -Dm644 chrome/installer/linux/common/desktop.template \
"$pkgdir/usr/share/applications/chromium.desktop"
install -Dm644 chrome/app/resources/manpage.1.in \
"$pkgdir/usr/share/man/man1/chromium.1"
sed -i \
-e 's/@@MENUNAME@@/Chromium/g' \
-e 's/@@PACKAGE@@/chromium/g' \
-e 's/@@USR_BIN_SYMLINK_NAME@@/chromium/g' \
"$pkgdir/usr/share/applications/chromium.desktop" \
"$pkgdir/usr/share/man/man1/chromium.1"
install -Dm644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml \
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
sed -ni \
-e 's/chromium-browser\.desktop/chromium.desktop/' \
-e '/<update_contact>/d' \
-e '/<p>/N;/<p>\n.*\(We invite\|Chromium supports Vorbis\)/,/<\/p>/d' \
-e '/^<?xml/,$p' \
"$pkgdir/usr/share/metainfo/chromium.appdata.xml"
local toplevel_files=(
chrome_100_percent.pak
chrome_200_percent.pak
chrome_crashpad_handler
libqt5_shim.so
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/chromium/"
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak
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/chromium.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/chromium.png"
done
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE"
}
# vim:set ts=2 sw=2 et: