Created
September 14, 2018 21:51
-
-
Save PlasmaPower/4466ff110b197259f3cc9dc09b9135a2 to your computer and use it in GitHub Desktop.
This file contains hidden or 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 <[email protected]> | |
| # Contributor: Pierre Schmitz <[email protected]> | |
| # Contributor: Jan "heftig" Steffens <[email protected]> | |
| # Contributor: Daniel J Griffiths <[email protected]> | |
| pkgname=chromium | |
| pkgver=69.0.3497.92 | |
| pkgrel=1 | |
| _launcher_ver=6 | |
| 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-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' | |
| 'desktop-file-utils' 'hicolor-icon-theme' 'ncurses5-compat-libs') | |
| makedepends=('python' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'nodejs' 'git' | |
| 'clang' 'lld' 'gn') | |
| 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') | |
| options=('!strip') | |
| 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 | |
| fix-cfi-icall-failure-with-use_system_libjpeg-true.patch | |
| only-disable-cfi-icall-when-use_system_libjpeg-true.patch | |
| chromium-widevine-r2.patch | |
| chromium-system-icu.patch | |
| chromium-skia-harmony.patch) | |
| sha256sums=('3bdda20b49953b025a788c5c992accfa43057310afaa02bce67c8d709eb5a019' | |
| '04917e3cd4307d8e31bfb0027a5dce6d086edb10ff8a716024fbb8bb0c7dccf1' | |
| '97b421bc60a4abdf37de2d88a51b973e9f68fb44d1eccd464adfb3d9f5d71478' | |
| '9cae9ded6497afd15ad72d963897425ab6c7f28941bb3c3948e7996610a0d180' | |
| '02c69bb3954087db599def7f5b6d65cf8f7cf2ed81dfbdaa4bb7b51863b4df15' | |
| 'c4f2d1bed9034c02b8806f00c2e8165df24de467803855904bff709ceaf11af5' | |
| 'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3') | |
| # 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 # NACL doesn't like this | |
| [libdrm]= | |
| [libjpeg]=libjpeg | |
| #[libpng]=libpng # https://crbug.com/752403#c10 | |
| #[libvpx]=libvpx # needs unreleased 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/866290 | |
| patch -Np1 -i ../fix-cfi-icall-failure-with-use_system_libjpeg-true.patch | |
| patch -Np1 -i ../only-disable-cfi-icall-when-use_system_libjpeg-true.patch | |
| # https://crbug.com/skia/6663#c10 | |
| patch -Np4 -i ../chromium-skia-harmony.patch | |
| # Fixes from Gentoo | |
| patch -Np1 -i ../chromium-widevine-r2.patch | |
| # https://bugs.gentoo.org/661880#c21 | |
| patch -Np1 -i ../chromium-system-icu.patch | |
| # Remove compiler flags not supported by our system clang | |
| sed -i \ | |
| -e '/"-Wno-ignored-pragma-optimize"/d' \ | |
| build/config/compiler/BUILD.gn | |
| # 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/ | |
| python2 build/download_nacl_toolchains.py \ | |
| --packages nacl_x86_newlib,pnacl_newlib,pnacl_translator \ | |
| sync --extract | |
| # 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[@]}" | |
| # Needed to build NACL | |
| mkdir -p third_party/llvm-build/Release+Asserts/bin | |
| ln -s /usr/bin/clang third_party/llvm-build/Release+Asserts/bin/clang | |
| ln -s /usr/bin/clang++ third_party/llvm-build/Release+Asserts/bin/clang++ | |
| ln -s /usr/bin/ar third_party/llvm-build/Release+Asserts/bin/ar | |
| ln -s /usr/bin/ar third_party/llvm-build/Release+Asserts/bin/llvm-ar | |
| ln -s /usr/bin/nm third_party/llvm-build/Release+Asserts/bin/nm | |
| ln -s /usr/bin/nm third_party/llvm-build/Release+Asserts/bin/llvm-nm | |
| } | |
| 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 | |
| export PNACLPYTHON=python2 | |
| 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 | |
| 'is_debug=false' | |
| 'treat_warnings_as_errors=false' | |
| 'fieldtrial_testing_like_official_build=true' | |
| 'remove_webcore_debug_symbols=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=true' | |
| 'enable_widevine=true' | |
| 'enable_nacl=true' | |
| 'enable_nacl_nonsfi=true' | |
| '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 | |
| # Manually strip binaries so that 'nacl_irt_*.nexe' is left intact | |
| strip $STRIP_BINARIES "$pkgdir/usr/lib/chromium/"{chromium,chrome-sandbox,chromedriver} | |
| cp out/Release/nacl_helper{,_bootstrap} out/Release/nacl_irt_*.nexe \ | |
| "$pkgdir/usr/lib/chromium/" | |
| strip $STRIP_BINARIES "$pkgdir/usr/lib/chromium/"nacl_helper{,_bootstrap} | |
| 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