PKGBUILDs/extra/chromium/PKGBUILD
2016-08-17 12:31:59 +00:00

244 lines
8.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# $Id: PKGBUILD 160354 2012-06-01 12:58:14Z dreisner $
# 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>
# Building for x86_64 requires lib32-glibc & lib32-zlib from [multilib]. These
# libraries are linked from the NaCl toolchain, and are only needed during
# build time.
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - removed NaCl, not for ARM
# - adjusted gyp flags for v7/aarch64
# - makeflags to -j4 on v7, RAM constraints
# - Gentoo patch to remove lingering built-in ffmpeg code
# - upstream patches to fix AArch64
buildarch=12
highmem=1
pkgname=chromium
pkgver=52.0.2743.116
pkgrel=1
_launcher_ver=3
pkgdesc="The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser"
arch=('armv6h' 'armv7h')
url="http://www.chromium.org/"
license=('BSD')
depends=('gtk2' 'nss' 'alsa-lib' 'xdg-utils' 'bzip2' 'libevent' 'libxss'
'libexif' 'libgcrypt' 'ttf-font' 'systemd' 'dbus' 'flac' 'snappy'
'speech-dispatcher' 'pciutils' 'libpulse' 'harfbuzz' 'libsecret'
'libvpx' 'perl' 'perl-file-basedir' 'desktop-file-utils'
'hicolor-icon-theme' 'ffmpeg')
makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja')
optdepends=('kdebase-kdialog: needed for file dialogs in KDE'
'gnome-keyring: for storing passwords in GNOME keyring'
'kwallet: for storing passwords in KWallet')
provides=('chromium-browser')
conflicts=('chromium-browser')
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.desktop
chromium-widevine.patch
PNGImageDecoder.patch
chromium-52.0.2743.116-unset-madv_free.patch
0001-system-ffmpeg-fixes.patch
0002-Linux-Sandbox-whitelist-arm64-syscalls.patch)
sha256sums=('a194ae1edb041024b3d4b6ba438f32fefdb6f1ecb24a96c50248a486b237a101'
'8b01fb4efe58146279858a754d90b49e5a38c9a0b36a1f84cbb7d12f92b84c28'
'028a748a5c275de9b8f776f97909f999a8583a4b77fd1cd600b4fc5c0c3e91e9'
'd6fdcb922e5a7fbe15759d39ccc8ea4225821c44d98054ce0f23f9d1f00c9808'
'd9fd982ba6d50edb7743db6122b975ad1d3da5a9ad907c8ab7cf574395b186cd'
'3b3aa9e28f29e6f539ed1c7832e79463b13128863a02e9c6fecd16c30d61c227'
'2c9f39c04397898711ba9d5e008cf11e909d479e9af0627d4534206051cc77ef'
'b2d301f48f603bd7b9ae5802aa9211a6a7991ea94e0e725b4c4272bdfd6c35db')
# Google API keys (see http://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. Feel free to contact foutrelis@archlinux.org for
# more information.
# - Arch Linux ARM has obtained permission to use the Arch Linux keys.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
_google_default_client_id=413772536636.apps.googleusercontent.com
_google_default_client_secret=0ZChLK6AxeA3Isu96MkwqDR4
prepare() {
cd "$srcdir/$pkgname-$pkgver"
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion
touch chrome/test/data/webui/i18n_process_css_test.html
# Enable support for the Widevine CDM plugin
# libwidevinecdm.so is not included, but can be copied over from Chrome
# (Version string doesn't seem to matter so let's go with "Pinkie Pie")
sed "s/@WIDEVINE_VERSION@/Pinkie Pie/" ../chromium-widevine.patch |
patch -Np1
# Chromium 51 won't build without this patch. Not reported upstream yet AFAIK.
patch -p1 -i "$srcdir"/PNGImageDecoder.patch
# Fix building with system ffmpeg
patch -Np1 -i ../0001-system-ffmpeg-fixes.patch
# AArch64 fix
patch -Np1 -i ../0002-Linux-Sandbox-whitelist-arm64-syscalls.patch
# Commentception use bundled ICU due to build failures (50.0.2661.75)
# See https://crbug.com/584920 and https://crbug.com/592268
# ---
## Remove bundled ICU; its header files appear to get picked up instead of
## the system ones, leading to errors during the final link stage.
## https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/BNGvJc08B6Q
#find third_party/icu -type f \! -regex '.*\.\(gyp\|gypi\|isolate\)' -delete
# Disable MADV_FREE (if set by glibc)
# https://bugzilla.redhat.com/show_bug.cgi?id=1361157
patch -p1 -i "$srcdir"/chromium-52.0.2743.116-unset-madv_free.patch
[[ $CARCH == "armv7h" ]] && MAKEFLAGS=-j4
# Use Python 2
find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} +
# There are still a lot of relative calls which need a workaround
mkdir -p "$srcdir/python2-path"
ln -sf /usr/bin/python2 "$srcdir/python2-path/python"
}
build() {
cd "$srcdir/chromium-launcher-$_launcher_ver"
make PREFIX=/usr
cd "$srcdir/$pkgname-$pkgver"
export PATH="$srcdir/python2-path:$PATH"
CFLAGS=`echo $CFLAGS | sed -e 's/vfpv3-d16/neon/'` && CXXFLAGS="$CFLAGS"
# CFLAGS are passed through release_extra_cflags below
export -n CFLAGS CXXFLAGS
# Work around bug in v8 in which GCC 6 optimizes away null pointer checks
# https://bugs.chromium.org/p/v8/issues/detail?id=3782
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69234
CFLAGS+=' -fno-delete-null-pointer-checks'
local _chromium_conf=(
-Dgoogle_api_key=$_google_api_key
-Dgoogle_default_client_id=$_google_default_client_id
-Dgoogle_default_client_secret=$_google_default_client_secret
-Dwerror=
-Dclang=0
-Dpython_ver=2.7
-Dlinux_link_gsettings=1
-Dlinux_link_libpci=1
-Dlinux_link_libspeechd=1
-Dlinux_link_pulseaudio=1
-Dlinux_strip_binary=1
-Dlinux_use_bundled_binutils=0
-Dlinux_use_bundled_gold=0
-Dlinux_use_gold_flags=0
-Dicu_use_data_file_flag=1
-Dlogging_like_official_build=1
-Dtracing_like_official_build=1
-Dfieldtrial_testing_like_official_build=1
-Drelease_extra_cflags="$CFLAGS -DUSE_EABI_HARDFLOAT"
-Dlibspeechd_h_prefix=speech-dispatcher/
-Dffmpeg_branding=Chrome
-Dproprietary_codecs=1
-Duse_gnome_keyring=0
-Duse_system_bzip2=1
-Duse_system_flac=1
-Duse_system_ffmpeg=1
-Duse_system_harfbuzz=1
-Duse_system_icu=0
-Duse_system_libevent=1
-Duse_system_libjpeg=1
-Duse_system_libpng=1
-Duse_system_libvpx=1
-Duse_system_libxml=0
-Duse_system_snappy=1
-Duse_system_ssl=1
-Duse_system_xdg_utils=1
-Duse_system_yasm=1
-Duse_system_zlib=0
-Dusb_ids_path=/usr/share/hwdata/usb.ids
-Duse_mojo=0
-Duse_gconf=0
-Denable_hangout_services_extension=1
-Denable_widevine=1
-Ddisable_fatal_linker_warnings=1
-Ddisable_glibc=1
-Ddisable_sse2=1
-Ddisable_nacl=1
-Ddisable_pnacl=1
-Dsysroot=)
[[ $CARCH == "armv7h" ]] && _chromium_conf+=(
-Dtarget_arch=arm
-Darm_neon=1
-Dv8_use_arm_eabi_hardfloat=true
-Darm_float_abi=hard
-Darmv7=1
-Darm_fpu=neon)
[[ $CARCH == "aarch64" ]] && _chromium_conf+=(
-Dtarget_arch=arm64
-Darm_neon=0
-Duse_allocator=none)
# Re-configure bundled ffmpeg.
#pushd third_party/ffmpeg > /dev/null || exit 1
#python2 chromium/scripts/build_ffmpeg.py linux arm --config-only || exit 1
#chromium/scripts/copy_config.sh || exit 1
#popd > /dev/null || exit 1
build/linux/unbundle/replace_gyp_files.py "${_chromium_conf[@]}"
build/gyp_chromium --depth=. "${_chromium_conf[@]}"
ninja -C out/Release chrome chrome_sandbox
}
package() {
cd "$srcdir/chromium-launcher-$_launcher_ver"
make PREFIX=/usr DESTDIR="$pkgdir" install-strip
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"
cp out/Release/{*.pak,*.bin,libwidevinecdmadapter.so} \
"$pkgdir/usr/lib/chromium/"
strip $STRIP_SHARED "$pkgdir/usr/lib/chromium/libwidevinecdmadapter.so"
cp -a out/Release/locales "$pkgdir/usr/lib/chromium/"
install -Dm644 out/Release/chrome.1 "$pkgdir/usr/share/man/man1/chromium.1"
install -Dm644 "$srcdir/chromium.desktop" \
"$pkgdir/usr/share/applications/chromium.desktop"
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"
install -Dm644 out/Release/icudtl.dat "${pkgdir}/usr/lib/chromium/icudtl.dat"
}