-
-
Save graysky2/c90bd380f7ebf27df2bdc66ecf9d1547 to your computer and use it in GitHub Desktop.
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: 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-no-extras | |
_pkgname=chromium | |
pkgver=75.0.3770.90 | |
pkgrel=2 | |
_launcher_ver=6 | |
pkgdesc="Chromium without hangout services, widevine, pipewire" | |
arch=('x86_64') | |
url="https://www.chromium.org/Home" | |
license=('BSD') | |
provides=(chromium=$pkgver) | |
conflicts=(chromium=$pkgver) | |
depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' | |
'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' | |
'desktop-file-utils' 'hicolor-icon-theme') | |
makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' | |
'clang' 'lld' 'gn' 'java-runtime-headless') | |
optdepends=('pepper-flash: support for Flash content' | |
'kdialog: needed for file dialogs in KDE' | |
'gnome-keyring: for storing passwords in GNOME keyring' | |
'kwallet: for storing passwords in KWallet') | |
install=chromium.install | |
source=(https://commondatastorage.googleapis.com/chromium-browser-official/$_pkgname-$pkgver.tar.xz | |
chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz | |
chromium-system-icu.patch | |
libstdc-do-not-assume-unique_ptr-has-ostream-operator.patch | |
chromium-fix-window-flash-for-some-WMs.patch | |
chromium-widevine.patch | |
chromium-skia-harmony.patch) | |
sha256sums=('b1b59abbe19ecb88c17d99fa68f5c1c5585a5d66c100858f944aa3b93b943839' | |
'04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' | |
'e2d284311f49c529ea45083438a768db390bde52949995534034d2a814beab89' | |
'e309dfd9d790f32cb1d23103726ac25e405b6ae6757a1c957a8395667d753908' | |
'183d8cc712f0bcf1afcb01ce90c4c104a4c8d8070a06f94974a28b007d9e2ce4' | |
'd081f2ef8793544685aad35dea75a7e6264a2cb987ff3541e6377f4a3650a28b' | |
'5887f78b55c4ecbbcba5930f3f0bb7bc0117c2a41c2f761805fcf7f46f1ca2b3') | |
# 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 # https://crbug.com/752403#c10 | |
[libvpx]=libvpx | |
[libwebp]=libwebp | |
[libxml]=libxml2 | |
[libxslt]=libxslt | |
[opus]=opus | |
[re2]=re2 | |
[snappy]=snappy | |
[yasm]= | |
[zlib]=minizip | |
) | |
_unwanted_bundled_libs=( | |
${!_system_libs[@]} | |
${_system_libs[libjpeg]+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. | |
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM | |
_google_default_client_id=413772536636.apps.googleusercontent.com | |
_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4 | |
prepare() { | |
cd "$srcdir/$_pkgname-$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/libxml_utils.cc | |
# https://chromium-review.googlesource.com/1584292 | |
patch -Np1 -i ../libstdc-do-not-assume-unique_ptr-has-ostream-operator.patch | |
# https://crbug.com/956061 | |
patch -Np1 -i ../chromium-fix-window-flash-for-some-WMs.patch | |
# Load Widevine CDM if available | |
patch -Np1 -i ../chromium-widevine.patch | |
# https://crbug.com/skia/6663#c10 | |
patch -Np0 -i ../chromium-skia-harmony.patch | |
# https://bugs.gentoo.org/661880#c21 | |
patch -Np1 -i ../chromium-system-icu.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 | |
mkdir -p third_party/node/linux/node-linux-x64/bin | |
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/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/yasm/run_yasm.py' \ | |
\! -regex '.*\.\(gn\|gni\|isolate\)' \ | |
-delete | |
done | |
python2 build/linux/unbundle/replace_gn_files.py \ | |
--system-libraries "${!_system_libs[@]}" | |
} | |
build() { | |
make -C chromium-launcher-$_launcher_ver | |
cd "$srcdir/$_pkgname-$pkgver" | |
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 | |
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' | |
'fieldtrial_testing_like_official_build=true' | |
'ffmpeg_branding="Chrome"' | |
'proprietary_codecs=true' | |
'link_pulseaudio=true' | |
'use_gnome_keyring=false' | |
'use_sysroot=false' | |
'linux_use_bundled_binutils=false' | |
'use_custom_libcxx=false' | |
'enable_hangout_services_extension=false' | |
'enable_widevine=false' | |
'enable_nacl=false' | |
'enable_swiftshader=false' | |
"google_api_key=\"${_google_api_key}\"" | |
"google_default_client_id=\"${_google_default_client_id}\"" | |
"google_default_client_secret=\"${_google_default_client_secret}\"" | |
) | |
# 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__=' | |
if check_option strip y; then | |
_flags+=('symbol_level=0') | |
# Mimic exclude_unwind_tables=true | |
CFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' | |
CXXFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' | |
CPPFLAGS+=' -DNO_UNWIND_TABLES' | |
fi | |
gn gen out/Release --args="${_flags[*]}" --script-executable=/usr/bin/python2 | |
ninja -C out/Release chrome chrome_sandbox chromedriver | |
} | |
package() { | |
cd chromium-launcher-$_launcher_ver | |
make PREFIX=/usr DESTDIR="$pkgdir" install | |
install -Dm644 LICENSE \ | |
"$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" | |
cd "$srcdir/$_pkgname-$pkgver" | |
install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" | |
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" | |
ln -s /usr/lib/chromium/chromedriver "$pkgdir/usr/bin/chromedriver" | |
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" | |
cp \ | |
out/Release/{chrome_{100,200}_percent,resources}.pak \ | |
out/Release/{*.bin,chromedriver} \ | |
"$pkgdir/usr/lib/chromium/" | |
install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak | |
if [[ -z ${_system_libs[icu]+set} ]]; then | |
cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" | |
fi | |
for size in 22 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: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment