This repository has been archived by the owner on May 20, 2023. It is now read-only.
Permalink
Cannot retrieve contributors at this time
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?
svntogit-packages/trunk/PKGBUILD
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
331 lines (291 sloc)
13.4 KB
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 | |
| 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: |