* CVE-2019-5828: Use after free in ServiceWorker * CVE-2019-5829: Use after free in Download Manager * CVE-2019-5830: Incorrectly credentialed requests in CORS * CVE-2019-5831: Incorrect map processing in V8 * CVE-2019-5832: Incorrect CORS handling in XHR * CVE-2019-5833: Inconsistent security UI placemen * CVE-2019-5835: Out of bounds read in Swiftshader * CVE-2019-5836: Heap buffer overflow in Angle * CVE-2019-5837: Cross-origin resources size disclosure in Appcache * CVE-2019-5838: Overly permissive tab access in Extensions * CVE-2019-5839: Incorrect handling of certain code points in Blink * CVE-2019-5840: Popup blocker bypass * Various fixes from internal audits, fuzzing and other initiatives * CVE-2019-5834: URL spoof in Omnibox on iOS - Remove merged patchsets: * 00-basevalue.patch * 01-basevalue.patch * 02-basevalue.patch * 03-basevalue.patch * 04-basevalue.patch * 05-basevalue.patch * 06-basevalue.patch * chromium-fix-crc32-for-aarch64.patch * quic.patch - Update patches: * chromium-gcc.patch * chromium-non-void-return.patch * chromium-vaapi.patch * old-libva.patch OBS-URL: https://build.opensuse.org/package/show/network:chromium/chromium?expand=0&rev=1259
795 lines
25 KiB
RPMSpec
795 lines
25 KiB
RPMSpec
#
|
|
# spec file for package chromium
|
|
#
|
|
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%define rname chromium
|
|
# bsc#1108175
|
|
%define __provides_exclude ^lib.*\\.so.*$
|
|
# This is just overall condition to contain everything we can't provide on SLE12
|
|
%if 0%{?suse_version} >= 1320 || 0%{?is_opensuse}
|
|
%bcond_with sle_bundles
|
|
%else
|
|
%bcond_without sle_bundles
|
|
%endif
|
|
%if 0%{?suse_version} >= 1550
|
|
%bcond_without system_icu
|
|
%bcond_without system_harfbuzz
|
|
%bcond_without pipewire
|
|
%else
|
|
%bcond_with system_icu
|
|
%bcond_with system_harfbuzz
|
|
%bcond_with pipewire
|
|
%endif
|
|
%if 0%{?suse_version} >= 1500
|
|
%bcond_without system_libxml
|
|
%else
|
|
%bcond_with system_libxml
|
|
%endif
|
|
%ifarch %{arm} aarch64
|
|
%bcond_with swiftshader
|
|
%else
|
|
%bcond_without swiftshader
|
|
%endif
|
|
%bcond_with system_vpx
|
|
%bcond_with clang
|
|
%bcond_with wayland
|
|
Name: chromium
|
|
Version: 75.0.3770.80
|
|
Release: 0
|
|
Summary: Google's open source browser project
|
|
License: BSD-3-Clause AND LGPL-2.1-or-later
|
|
Group: Productivity/Networking/Web/Browsers
|
|
URL: https://www.chromium.org/
|
|
Source0: https://commondatastorage.googleapis.com/chromium-browser-official/%{rname}-%{version}.tar.xz
|
|
# Toolchain definitions
|
|
Source1: BUILD.gn
|
|
Source30: master_preferences
|
|
Source100: chromium-browser.sh
|
|
Source101: chromium-browser.desktop
|
|
Source102: chromium-browser.xml
|
|
Source103: chromium.default
|
|
Source104: chromium-icons.tar.bz2
|
|
# PATCH-FEATURE-UPSTREAM https://bugs.chromium.org/p/chromium/issues/detail?id=654190
|
|
Source105: chromium-browser.appdata.xml
|
|
Patch0: chromium-libusb_interrupt_event_handler.patch
|
|
# PATCH-FIX-OPENSUSE Make the 1-click-install ymp file always download [bnc#836059]
|
|
Patch1: exclude_ymp.patch
|
|
# PATCH-FIX-OPENSUSE enables reading of the master preference
|
|
Patch2: chromium-master-prefs-path.patch
|
|
# PATCH-FIX-OPENSUSE fix_building_widevinecdm_with_chromium.patch - Enable WideVine plugin
|
|
Patch3: fix_building_widevinecdm_with_chromium.patch
|
|
Patch4: chromium-dma-buf.patch
|
|
Patch5: chromium-buildname.patch
|
|
Patch6: chromium-non-void-return.patch
|
|
Patch7: chromium-drm.patch
|
|
Patch8: chromium-sandbox-pie.patch
|
|
Patch9: chromium-system-icu.patch
|
|
Patch10: chromium-system-libusb.patch
|
|
Patch11: chromium-old-glibc.patch
|
|
Patch12: chromium-skia-aarch64-buildfix.patch
|
|
Patch13: chromium-gcc.patch
|
|
# Google seem not too keen on merging this but GPU accel is quite important
|
|
# https://chromium-review.googlesource.com/c/chromium/src/+/532294
|
|
# https://github.com/saiarcot895/chromium-ubuntu-build/tree/master/debian/patches
|
|
# Recreated from scratch to be smaller and use system the orginal switches
|
|
# (default on) compared to the PR
|
|
Patch100: chromium-vaapi.patch
|
|
Patch101: old-libva.patch
|
|
# Google does not care much about system libs here
|
|
# https://bugs.chromium.org/p/skia/issues/detail?id=6663
|
|
Patch102: chromium-skia-system-fontconfig.patch
|
|
# PATCH-FIX-SUSE: allow prop codecs to be set with chromium branding
|
|
Patch202: chromium-prop-codecs.patch
|
|
BuildRequires: SDL-devel
|
|
BuildRequires: binutils-gold
|
|
BuildRequires: bison
|
|
BuildRequires: cups-devel
|
|
BuildRequires: desktop-file-utils
|
|
BuildRequires: fdupes
|
|
BuildRequires: flex
|
|
BuildRequires: gn
|
|
BuildRequires: gperf
|
|
BuildRequires: hicolor-icon-theme
|
|
# Java used during build
|
|
BuildRequires: java-openjdk-headless
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libdc1394
|
|
BuildRequires: libgcrypt-devel
|
|
BuildRequires: libgsm-devel
|
|
BuildRequires: libjpeg-devel >= 8.1
|
|
BuildRequires: libpng-devel
|
|
BuildRequires: memory-constraints
|
|
BuildRequires: nasm
|
|
BuildRequires: ncurses-devel
|
|
BuildRequires: ninja >= 1.7.2
|
|
BuildRequires: nodejs >= 8.0
|
|
BuildRequires: pam-devel
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: python
|
|
BuildRequires: snappy-devel
|
|
BuildRequires: update-desktop-files
|
|
BuildRequires: util-linux
|
|
BuildRequires: wdiff
|
|
BuildRequires: yasm
|
|
BuildRequires: perl(Switch)
|
|
BuildRequires: pkgconfig(alsa)
|
|
BuildRequires: pkgconfig(bzip2)
|
|
BuildRequires: pkgconfig(cairo) >= 1.6
|
|
BuildRequires: pkgconfig(dbus-1)
|
|
BuildRequires: pkgconfig(dirac) >= 1.0.0
|
|
BuildRequires: pkgconfig(dri)
|
|
BuildRequires: pkgconfig(expat)
|
|
BuildRequires: pkgconfig(flac++)
|
|
BuildRequires: pkgconfig(freetype2)
|
|
BuildRequires: pkgconfig(glib-2.0)
|
|
BuildRequires: pkgconfig(gtk+-2.0)
|
|
BuildRequires: pkgconfig(gtk+-3.0)
|
|
BuildRequires: pkgconfig(hunspell)
|
|
BuildRequires: pkgconfig(imlib2)
|
|
BuildRequires: pkgconfig(jack)
|
|
BuildRequires: pkgconfig(kadm-client)
|
|
BuildRequires: pkgconfig(kdb)
|
|
BuildRequires: pkgconfig(krb5)
|
|
BuildRequires: pkgconfig(libavcodec)
|
|
BuildRequires: pkgconfig(libavfilter)
|
|
BuildRequires: pkgconfig(libavformat) >= 58
|
|
BuildRequires: pkgconfig(libavutil)
|
|
BuildRequires: pkgconfig(libcrypto)
|
|
BuildRequires: pkgconfig(libdc1394-2)
|
|
BuildRequires: pkgconfig(libdrm)
|
|
BuildRequires: pkgconfig(libelf)
|
|
BuildRequires: pkgconfig(libevent)
|
|
BuildRequires: pkgconfig(libexif)
|
|
BuildRequires: pkgconfig(libffi)
|
|
BuildRequires: pkgconfig(liboil-0.3) >= 0.3.15
|
|
BuildRequires: pkgconfig(libpci)
|
|
BuildRequires: pkgconfig(libpulse)
|
|
BuildRequires: pkgconfig(libssl)
|
|
BuildRequires: pkgconfig(libudev)
|
|
BuildRequires: pkgconfig(libusb-1.0)
|
|
BuildRequires: pkgconfig(libxslt)
|
|
BuildRequires: pkgconfig(minizip)
|
|
BuildRequires: pkgconfig(nspr) >= 4.9.5
|
|
BuildRequires: pkgconfig(nss) >= 3.26
|
|
BuildRequires: pkgconfig(ogg)
|
|
BuildRequires: pkgconfig(openssl)
|
|
BuildRequires: pkgconfig(opus)
|
|
BuildRequires: pkgconfig(python)
|
|
BuildRequires: pkgconfig(re2)
|
|
BuildRequires: pkgconfig(schroedinger-1.0)
|
|
BuildRequires: pkgconfig(slang)
|
|
BuildRequires: pkgconfig(sqlite3)
|
|
BuildRequires: pkgconfig(theora) >= 1.1
|
|
BuildRequires: pkgconfig(vdpau)
|
|
BuildRequires: pkgconfig(vorbis)
|
|
BuildRequires: pkgconfig(x11)
|
|
BuildRequires: pkgconfig(xcomposite)
|
|
BuildRequires: pkgconfig(xcursor)
|
|
BuildRequires: pkgconfig(xdamage)
|
|
BuildRequires: pkgconfig(xext)
|
|
BuildRequires: pkgconfig(xfixes)
|
|
BuildRequires: pkgconfig(xi)
|
|
BuildRequires: pkgconfig(xrandr)
|
|
BuildRequires: pkgconfig(xrender)
|
|
BuildRequires: pkgconfig(xscrnsaver)
|
|
BuildRequires: pkgconfig(xt)
|
|
BuildRequires: pkgconfig(xtst)
|
|
Requires: hicolor-icon-theme
|
|
Requires: xdg-utils
|
|
Requires(pre): permissions
|
|
Recommends: noto-coloremoji-fonts
|
|
Conflicts: chromium-browser
|
|
Provides: chromium-based-browser = %{version}
|
|
Provides: chromium-browser = %{version}
|
|
Provides: web_browser
|
|
Obsoletes: %{name}-suid-helper < %{version}
|
|
Obsoletes: chromium-browser < %{version}
|
|
Provides: %{name}-suid-helper = %{version}
|
|
Obsoletes: chromium-beta-desktop-gnome
|
|
Obsoletes: chromium-beta-desktop-kde
|
|
Obsoletes: chromium-desktop-gnome
|
|
Obsoletes: chromium-desktop-kde
|
|
Obsoletes: chromium-dev-desktop-gnome
|
|
Obsoletes: chromium-dev-desktop-kde
|
|
Obsoletes: chromium-ffmpeg
|
|
Obsoletes: chromium-ffmpegsumo
|
|
# no 32bit supported and it takes ages to build
|
|
ExcludeArch: %{ix86} %{arm} ppc ppc64 ppc64le s390 s390x
|
|
%if %{with pipewire}
|
|
BuildRequires: pkgconfig(libpipewire-0.2)
|
|
%endif
|
|
%if %{with wayland}
|
|
BuildRequires: pkgconfig(gbm)
|
|
BuildRequires: pkgconfig(wayland-client)
|
|
BuildRequires: pkgconfig(wayland-cursor)
|
|
BuildRequires: pkgconfig(wayland-scanner)
|
|
BuildRequires: pkgconfig(wayland-server)
|
|
%else
|
|
BuildRequires: pkgconfig(libva)
|
|
%endif
|
|
%ifnarch aarch64
|
|
# Current tcmalloc does not support AArch64
|
|
BuildRequires: pkgconfig(libtcmalloc)
|
|
%endif
|
|
%if %{with system_harfbuzz}
|
|
BuildRequires: pkgconfig(harfbuzz) > 2.3.0
|
|
%endif
|
|
%if %{with system_libxml}
|
|
BuildRequires: pkgconfig(libxml-2.0) >= 2.9.5
|
|
%endif
|
|
%if !%{with sle_bundles}
|
|
BuildRequires: python-beautifulsoup4
|
|
BuildRequires: python-html5lib
|
|
BuildRequires: python-simplejson
|
|
BuildRequires: python-xml
|
|
BuildRequires: yasm-devel
|
|
BuildRequires: pkgconfig(libwebp)
|
|
BuildRequires: pkgconfig(zlib)
|
|
%endif
|
|
%if %{with system_icu}
|
|
BuildRequires: pkgconfig(icu-i18n) >= 63.0
|
|
%endif
|
|
%if %{with system_vpx}
|
|
BuildRequires: pkgconfig(vpx) >= 1.6.1
|
|
%endif
|
|
%if %{with clang}
|
|
BuildRequires: clang >= 5.0.0
|
|
%else
|
|
%if %{?suse_version} > 1500
|
|
BuildRequires: gcc >= 8
|
|
BuildRequires: gcc-c++ >= 8
|
|
%else
|
|
BuildRequires: gcc8
|
|
BuildRequires: gcc8-c++
|
|
%endif
|
|
%endif
|
|
|
|
%description
|
|
Chromium is the open-source project behind Google Chrome. We invite you to join us in our effort to help build a safer, faster, and more stable way for all Internet users to experience the web, and to create a powerful platform for developing a new generation of web applications.
|
|
|
|
%package -n chromedriver
|
|
Summary: WebDriver for Google Chrome/Chromium
|
|
License: BSD-3-Clause
|
|
Group: Development/Tools/Other
|
|
Requires: %{name} = %{version}
|
|
|
|
%description -n chromedriver
|
|
WebDriver is an open source tool for automated testing of webapps across many browsers. It provides capabilities for navigating to web pages, user input, JavaScript execution, and more. ChromeDriver is a standalone server which implements WebDriver's wire protocol for Chromium. It is being developed by members of the Chromium and WebDriver teams.
|
|
|
|
%prep
|
|
%setup -q -n %{rname}-%{version}
|
|
%autopatch -p1
|
|
|
|
# Copy the toolchain settings
|
|
mkdir toolchain
|
|
cp %{SOURCE1} toolchain/BUILD.gn
|
|
|
|
# Fix the path to nodejs binary
|
|
mkdir -p third_party/node/linux/node-linux-x64/bin
|
|
ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
|
|
|
|
# Remove bundled libs
|
|
keeplibs=(
|
|
base/third_party/dmg_fp
|
|
base/third_party/dynamic_annotations
|
|
base/third_party/nspr
|
|
base/third_party/icu
|
|
base/third_party/superfasthash
|
|
base/third_party/symbolize
|
|
base/third_party/valgrind
|
|
base/third_party/xdg_mime
|
|
base/third_party/xdg_user_dirs
|
|
buildtools/third_party/libc++
|
|
buildtools/third_party/libc++abi
|
|
buildtools/third_party/libunwind
|
|
chrome/third_party/mozilla_security_manager
|
|
courgette/third_party
|
|
net/third_party/mozilla_security_manager
|
|
net/third_party/nss
|
|
net/third_party/quic
|
|
net/third_party/uri_template
|
|
third_party/abseil-cpp
|
|
third_party/angle
|
|
third_party/angle/src/common/third_party/base
|
|
third_party/angle/src/common/third_party/smhasher
|
|
third_party/angle/src/common/third_party/xxhash
|
|
third_party/angle/src/third_party/compiler
|
|
third_party/angle/src/third_party/libXNVCtrl
|
|
third_party/angle/src/third_party/trace_event
|
|
third_party/angle/third_party/glslang
|
|
third_party/angle/third_party/spirv-headers
|
|
third_party/angle/third_party/spirv-tools
|
|
third_party/angle/third_party/vulkan-headers
|
|
third_party/angle/third_party/vulkan-loader
|
|
third_party/angle/third_party/vulkan-tools
|
|
third_party/angle/third_party/vulkan-validation-layers
|
|
third_party/apple_apsl
|
|
third_party/axe-core
|
|
third_party/blink
|
|
third_party/boringssl
|
|
third_party/boringssl/src/third_party/fiat
|
|
third_party/breakpad
|
|
third_party/breakpad/breakpad/src/third_party/curl
|
|
third_party/brotli
|
|
third_party/cacheinvalidation
|
|
third_party/catapult
|
|
third_party/catapult/third_party/polymer
|
|
third_party/catapult/common/py_vulcanize/third_party/rcssmin
|
|
third_party/catapult/common/py_vulcanize/third_party/rjsmin
|
|
third_party/catapult/tracing/third_party/d3
|
|
third_party/catapult/tracing/third_party/gl-matrix
|
|
third_party/catapult/tracing/third_party/jszip
|
|
third_party/catapult/tracing/third_party/mannwhitneyu
|
|
third_party/catapult/tracing/third_party/oboe
|
|
third_party/catapult/tracing/third_party/pako
|
|
third_party/ced
|
|
third_party/cld_3
|
|
third_party/crashpad
|
|
third_party/closure_compiler
|
|
third_party/crashpad/crashpad/third_party/zlib
|
|
third_party/crashpad/crashpad/third_party/lss
|
|
third_party/crc32c
|
|
third_party/cros_system_api
|
|
third_party/dav1d
|
|
third_party/dawn
|
|
third_party/devscripts
|
|
third_party/dom_distiller_js
|
|
third_party/emoji-segmenter
|
|
third_party/flatbuffers
|
|
third_party/flot
|
|
third_party/glslang
|
|
third_party/google_input_tools
|
|
third_party/google_input_tools/third_party/closure_library
|
|
third_party/google_input_tools/third_party/closure_library/third_party/closure
|
|
third_party/googletest
|
|
third_party/hunspell
|
|
third_party/iccjpeg
|
|
third_party/inspector_protocol
|
|
third_party/jinja2
|
|
third_party/jsoncpp
|
|
third_party/jstemplate
|
|
third_party/khronos
|
|
third_party/leveldatabase
|
|
third_party/libXNVCtrl
|
|
third_party/libaddressinput
|
|
third_party/libaom
|
|
third_party/libaom/source/libaom/third_party/vector
|
|
third_party/libaom/source/libaom/third_party/x86inc
|
|
third_party/libjingle
|
|
third_party/libphonenumber
|
|
third_party/libsecret
|
|
third_party/libsrtp
|
|
third_party/libsync
|
|
third_party/libudev
|
|
third_party/libusb
|
|
third_party/libwebm
|
|
third_party/libxml/chromium
|
|
third_party/libyuv
|
|
third_party/lss
|
|
third_party/lzma_sdk
|
|
third_party/markupsafe
|
|
third_party/mesa
|
|
third_party/metrics_proto
|
|
third_party/minigbm
|
|
third_party/modp_b64
|
|
third_party/nasm
|
|
third_party/node
|
|
third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2
|
|
third_party/openh264
|
|
third_party/openmax_dl
|
|
third_party/ots
|
|
third_party/perfetto
|
|
third_party/pdfium
|
|
third_party/pdfium/third_party/agg23
|
|
third_party/pdfium/third_party/base
|
|
third_party/pdfium/third_party/bigint
|
|
third_party/pdfium/third_party/eu-strip
|
|
third_party/pdfium/third_party/freetype
|
|
third_party/pdfium/third_party/lcms
|
|
third_party/pdfium/third_party/libopenjpeg20
|
|
third_party/pdfium/third_party/libpng16
|
|
third_party/pdfium/third_party/libtiff
|
|
third_party/pdfium/third_party/skia_shared
|
|
third_party/perfetto
|
|
third_party/pffft
|
|
third_party/ply
|
|
third_party/pffft
|
|
third_party/polymer
|
|
third_party/protobuf
|
|
third_party/protobuf/third_party/six
|
|
third_party/pyjson5
|
|
third_party/qcms
|
|
third_party/rnnoise
|
|
third_party/s2cellid
|
|
third_party/sfntly
|
|
third_party/skia
|
|
third_party/skia/third_party/gif
|
|
third_party/skia/third_party/skcms
|
|
third_party/skia/third_party/vulkan
|
|
third_party/skia/include/third_party/vulkan/
|
|
third_party/smhasher
|
|
third_party/spirv-headers
|
|
third_party/SPIRV-Tools
|
|
third_party/sqlite
|
|
third_party/swiftshader
|
|
third_party/swiftshader/third_party/llvm-7.0
|
|
third_party/swiftshader/third_party/llvm-subzero
|
|
third_party/swiftshader/third_party/subzero
|
|
third_party/tcmalloc
|
|
third_party/unrar
|
|
third_party/usrsctp
|
|
third_party/vulkan
|
|
third_party/wayland
|
|
third_party/wayland-protocols
|
|
third_party/web-animations-js
|
|
third_party/webdriver
|
|
third_party/webrtc
|
|
third_party/webrtc/common_audio/third_party/fft4g
|
|
third_party/webrtc/common_audio/third_party/spl_sqrt_floor
|
|
third_party/webrtc/modules/third_party/fft
|
|
third_party/webrtc/modules/third_party/g711
|
|
third_party/webrtc/modules/third_party/g722
|
|
third_party/webrtc/rtc_base/third_party/base64
|
|
third_party/webrtc/rtc_base/third_party/sigslot
|
|
third_party/widevine
|
|
third_party/woff2
|
|
third_party/zlib/google
|
|
url/third_party/mozilla
|
|
v8/src/third_party/siphash
|
|
v8/src/third_party/valgrind
|
|
v8/src/third_party/utf8-decoder
|
|
v8/third_party/inspector_protocol
|
|
v8/third_party/v8/builtins
|
|
)
|
|
%if %{with sle_bundles}
|
|
keeplibs+=(
|
|
third_party/libwebp
|
|
third_party/yasm
|
|
third_party/simplejson
|
|
third_party/catapult/third_party/beautifulsoup4
|
|
third_party/catapult/third_party/html5lib-python
|
|
third_party/catapult/third_party/six
|
|
third_party/zlib
|
|
)
|
|
%endif
|
|
%if !%{with system_harfbuzz}
|
|
keeplibs+=(
|
|
third_party/freetype
|
|
third_party/harfbuzz-ng
|
|
)
|
|
%endif
|
|
%if !%{with system_icu}
|
|
keeplibs+=( third_party/icu )
|
|
%endif
|
|
%if !%{with system_libxml}
|
|
keeplibs+=( third_party/libxml )
|
|
%endif
|
|
%if !%{with system_vpx}
|
|
keeplibs+=(
|
|
third_party/libvpx
|
|
third_party/libvpx/source/libvpx/third_party/x86inc
|
|
)
|
|
%endif
|
|
# needed due to bugs in GN
|
|
keeplibs+=(
|
|
base/third_party/libevent
|
|
third_party/adobe
|
|
third_party/speech-dispatcher
|
|
third_party/usb_ids
|
|
third_party/xdg-utils
|
|
third_party/yasm/run_yasm.py
|
|
)
|
|
build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove
|
|
|
|
# hack for libusb stuff
|
|
rm -rf third_party/libusb/src/libusb/libusb.h
|
|
cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
|
|
|
|
%build
|
|
%if %{with clang}
|
|
export CC=clang
|
|
export CXX=clang++
|
|
%else
|
|
# REDUCE DEBUG as it gets TOO large
|
|
ARCH_FLAGS="`echo %{optflags} | sed -e 's/^-g / /g' -e 's/ -g / /g' -e 's/ -g$//g'`"
|
|
export CFLAGS="${ARCH_FLAGS} -fpermissive"
|
|
export CXXFLAGS="${ARCH_FLAGS} -fpermissive"
|
|
export CC=gcc
|
|
export CXX=g++
|
|
%if 0%{?suse_version} <= 1500
|
|
export CC=gcc-8
|
|
export CXX=g++-8
|
|
# some still call gcc/g++
|
|
mkdir -p "$HOME/bin/"
|
|
ln -sfn %{_bindir}/$CC $HOME/bin/gcc
|
|
ln -sfn %{_bindir}/$CXX $HOME/bin/g++
|
|
export PATH="$HOME/bin/:$PATH"
|
|
%endif
|
|
%endif
|
|
# do not eat all memory
|
|
%limit_build -m 2600
|
|
|
|
# Set system libraries to be used
|
|
gn_system_libraries=(
|
|
ffmpeg
|
|
flac
|
|
fontconfig
|
|
libdrm
|
|
libjpeg
|
|
libpng
|
|
libxslt
|
|
libusb
|
|
opus
|
|
re2
|
|
snappy
|
|
)
|
|
%if %{with system_harfbuzz}
|
|
gn_system_libraries+=(
|
|
harfbuzz-ng
|
|
freetype
|
|
)
|
|
%endif
|
|
%if !%{with sle_bundles}
|
|
gn_system_libraries+=(
|
|
libwebp
|
|
yasm
|
|
zlib
|
|
)
|
|
%endif
|
|
%if %{with system_icu}
|
|
gn_system_libraries+=( icu )
|
|
%endif
|
|
%if %{with system_vpx}
|
|
gn_system_libraries+=( libvpx )
|
|
%endif
|
|
%if %{with system_libxml}
|
|
gn_system_libraries+=( libxml )
|
|
%endif
|
|
build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries[@]}
|
|
|
|
# Create the configuration for GN
|
|
# Available options: out/Release/gn args --list out/Release/
|
|
myconf_gn=""
|
|
myconf_gn+=" custom_toolchain=\"./toolchain:default\""
|
|
myconf_gn+=" linux_use_bundled_binutils=false"
|
|
myconf_gn+=" use_custom_libcxx=false"
|
|
myconf_gn+=" is_debug=false"
|
|
myconf_gn+=" enable_nacl=false"
|
|
%if %{with swiftshader}
|
|
myconf_gn+=" use_swiftshader_with_subzero=true"
|
|
%endif
|
|
myconf_gn+=" is_component_ffmpeg=true"
|
|
myconf_gn+=" use_cups=true"
|
|
myconf_gn+=" use_aura=true"
|
|
myconf_gn+=" use_jumbo_build=true"
|
|
%ifarch %{arm} aarch64
|
|
# Limit number to avoid OOM errors
|
|
myconf_gn+=" jumbo_file_merge_limit=5"
|
|
%else
|
|
myconf_gn+=" jumbo_file_merge_limit=8"
|
|
%endif
|
|
myconf_gn+=" concurrent_links=1"
|
|
myconf_gn+=" symbol_level=1"
|
|
myconf_gn+=" blink_symbol_level=0"
|
|
myconf_gn+=" use_kerberos=true"
|
|
myconf_gn+=" enable_vr=false"
|
|
myconf_gn+=" optimize_webui=false"
|
|
myconf_gn+=" enable_reading_list=false"
|
|
myconf_gn+=" use_pulseaudio=true link_pulseaudio=true"
|
|
myconf_gn+=" is_component_build=false"
|
|
myconf_gn+=" use_sysroot=false"
|
|
myconf_gn+=" fatal_linker_warnings=false"
|
|
%ifnarch aarch64
|
|
# Current tcmalloc does not support AArch64
|
|
myconf_gn+=" use_allocator=\"tcmalloc\""
|
|
%endif
|
|
myconf_gn+=" fieldtrial_testing_like_official_build=true"
|
|
myconf_gn+=" use_gold=true"
|
|
myconf_gn+=" use_gnome_keyring=false"
|
|
myconf_gn+=" use_unofficial_version_number=false"
|
|
myconf_gn+=" use_lld=false"
|
|
myconf_gn+=" use_vaapi=true"
|
|
myconf_gn+=" use_sysroot=false"
|
|
myconf_gn+=" treat_warnings_as_errors=false"
|
|
myconf_gn+=" enable_widevine=true"
|
|
# See dependency logic in third_party/BUILD.gn
|
|
%if %{with system_harfbuzz}
|
|
myconf_gn+=" use_system_harfbuzz=true"
|
|
myconf_gn+=" use_system_freetype=true"
|
|
%endif
|
|
myconf_gn+=" enable_hangout_services_extension=true"
|
|
myconf_gn+=" enable_vulkan=true"
|
|
myconf_gn+=" enable_hevc_demuxing=true"
|
|
%if %{with pipewire}
|
|
myconf_gn+=" rtc_use_pipewire=true rtc_link_pipewire=true"
|
|
%endif
|
|
# ozone stuff
|
|
%if %{with wayland}
|
|
myconf_gn+=" use_ozone=true use_xkbcommon=true use_system_minigbm=true use_v4lplugin=true use_v4l2_codec=true use_linux_v4l2_only=true"
|
|
%else
|
|
myconf_gn+=" use_vaapi=true"
|
|
%endif
|
|
myconf_gn+=" enable_mus=true"
|
|
%if %{with clang}
|
|
myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false"
|
|
%else
|
|
myconf_gn+=" is_clang=false"
|
|
%endif
|
|
|
|
# The proprietary codecs just force the chromium to say they can use it and
|
|
# offload the actual computation to the ffmpeg, otherwise the chromium
|
|
# won't be able to load the codec even if the library can handle it
|
|
myconf_gn+=" proprietary_codecs=true"
|
|
myconf_gn+=" ffmpeg_branding=\"Chrome\""
|
|
|
|
%ifarch %{arm}
|
|
myconf_gn+=" target_cpu=\"arm\""
|
|
myconf_gn+=" arm_float_abi=\"hard\""
|
|
%ifarch armv6l armv6hl
|
|
myconf_gn+=" arm_version=6"
|
|
%else
|
|
myconf_gn+=" arm_version=7"
|
|
# Setting arm_use_neon to false breaks build
|
|
myconf_gn+=" arm_use_neon=true"
|
|
myconf_gn+=" arm_optionally_use_neon=true"
|
|
%endif
|
|
myconf_gn+=" arm_use_thumb=true"
|
|
%endif
|
|
|
|
%ifarch %{arm}
|
|
# We don't need to cross compile while building on an arm system.
|
|
sed -i 's|arm-linux-gnu-||g' build/toolchain/linux/BUILD.gn
|
|
sed -i 's|arm-linux-gnueabihf-||g' build/toolchain/linux/BUILD.gn
|
|
%endif
|
|
|
|
%ifarch aarch64
|
|
myconf_gn+=" target_cpu=\"arm64\""
|
|
%endif
|
|
|
|
%ifarch aarch64
|
|
# We don't need to cross compile while building on an aarch64 system.
|
|
sed -i 's|aarch64-linux-gnu-||g' build/toolchain/linux/BUILD.gn
|
|
%endif
|
|
|
|
# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys
|
|
# Note: these are for the openSUSE Chromium builds ONLY. For your own distribution,
|
|
# please get your own set of keys.
|
|
google_api_key="AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q"
|
|
google_default_client_id="4139804441.apps.googleusercontent.com"
|
|
google_default_client_secret="KDTRKEZk2jwT_7CDpcmMA--P"
|
|
|
|
myconf_gn+=" google_api_key=\"${google_api_key}\""
|
|
myconf_gn+=" google_default_client_id=\"${google_default_client_id}\""
|
|
myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\""
|
|
|
|
# GN does not support passing cflags:
|
|
# https://bugs.chromium.org/p/chromium/issues/detail?id=642016
|
|
gn gen --args="${myconf_gn}" out/Release
|
|
|
|
ninja -v %{?_smp_mflags} -C out/Release chrome chrome_sandbox chromedriver
|
|
|
|
%install
|
|
mkdir -p %{buildroot}%{_libdir}/chromium
|
|
mkdir -p %{buildroot}%{_libexecdir}/
|
|
mkdir -p %{buildroot}%{_bindir}
|
|
install -m 755 %{SOURCE100} %{buildroot}%{_bindir}/chromium
|
|
|
|
# x86_64 capable systems need this
|
|
sed -i "s|%{_libexecdir}/chromium|%{_libdir}/chromium|g" %{buildroot}%{_bindir}/chromium
|
|
|
|
mkdir -p %{buildroot}%{_mandir}/man1/
|
|
pushd out/Release
|
|
|
|
# Install the file %{_sysconfdir}/default/chromium which defines the chromium flags
|
|
mkdir -p %{buildroot}%{_sysconfdir}/default
|
|
install -m 644 %{SOURCE103} %{buildroot}%{_sysconfdir}/default/chromium
|
|
|
|
# Recent Chromium builds now wants to have the sandbox in the same directory. So let's create a symlink to the one in %{_prefix}/lib
|
|
cp -a chrome_sandbox %{buildroot}%{_libexecdir}/
|
|
ln -s -f %{_libexecdir}/chrome_sandbox %{buildroot}/%{_libdir}/chromium/chrome-sandbox
|
|
|
|
cp -a *.bin *.pak locales xdg-mime %{buildroot}%{_libdir}/chromium/
|
|
%if !%{with system_icu}
|
|
cp -a icudtl.dat %{buildroot}%{_libdir}/chromium/
|
|
%endif
|
|
|
|
%if %{with swiftshader}
|
|
mkdir -p %{buildroot}%{_libdir}/chromium/swiftshader
|
|
cp -a swiftshader/*.so %{buildroot}%{_libdir}/chromium/swiftshader/
|
|
%endif
|
|
|
|
# chromedriver
|
|
cp -a chromedriver %{buildroot}%{_libdir}/chromium/
|
|
|
|
# Patch xdg-settings to use the chromium version of xdg-mime as that the system one is not KDE4 compatible
|
|
sed "s|xdg-mime|%{_libdir}/chromium/xdg-mime|g" xdg-settings > %{buildroot}%{_libdir}/chromium/xdg-settings
|
|
|
|
cp -a resources.pak %{buildroot}%{_libdir}/chromium/
|
|
cp -a chrome %{buildroot}%{_libdir}/chromium/chromium
|
|
popd
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/icons/
|
|
pushd %{buildroot}%{_datadir}/icons/
|
|
tar -xjf %{SOURCE104}
|
|
mv oxygen hicolor
|
|
popd
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/applications/
|
|
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE101}
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/appdata/
|
|
cp -a %{SOURCE105} %{buildroot}%{_datadir}/appdata/
|
|
|
|
mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
|
|
cp -a %{SOURCE102} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
|
|
|
|
# link to browser plugin path. Plugin patch doesn't work. Why?
|
|
mkdir -p %{buildroot}%{_libdir}/browser-plugins
|
|
pushd %{buildroot}%{_libdir}/chromium
|
|
ln -s ../browser-plugins plugins
|
|
|
|
# Install the master_preferences file
|
|
mkdir -p %{buildroot}%{_sysconfdir}/chromium
|
|
install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/chromium
|
|
|
|
# Set the right attributes
|
|
chmod 755 %{buildroot}%{_libdir}/chromium/xdg-settings
|
|
chmod 755 %{buildroot}%{_libdir}/chromium/xdg-mime
|
|
|
|
%fdupes %{buildroot}
|
|
|
|
%verifyscript
|
|
%verify_permissions -e %{_libexecdir}/chrome_sandbox
|
|
|
|
%post
|
|
%icon_theme_cache_post
|
|
%desktop_database_post
|
|
%set_permissions %{_libexecdir}/chrome_sandbox
|
|
/sbin/ldconfig %{_libdir}/chromium
|
|
|
|
%postun
|
|
%icon_theme_cache_postun
|
|
%desktop_database_postun
|
|
/sbin/ldconfig %{_libdir}/chromium
|
|
|
|
%files
|
|
%verify(not mode) %{_libexecdir}/chrome_sandbox
|
|
%license LICENSE
|
|
%doc AUTHORS
|
|
%config %{_sysconfdir}/chromium
|
|
%config(noreplace) %{_sysconfdir}/default/chromium
|
|
%dir %{_datadir}/gnome-control-center
|
|
%dir %{_datadir}/gnome-control-center/default-apps
|
|
%{_libdir}/chromium/
|
|
%if %{with swiftshader}
|
|
%dir %{_libdir}/chromium/swiftshader/
|
|
%{_libdir}/chromium/swiftshader/*.so
|
|
%endif
|
|
%{_datadir}/applications/*.desktop
|
|
%dir %{_datadir}/appdata/
|
|
%{_datadir}/appdata/chromium-browser.appdata.xml
|
|
%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
|
|
%{_datadir}/icons/hicolor/
|
|
%{_libexecdir}/chrome_sandbox
|
|
%exclude %{_libdir}/chromium/chromedriver
|
|
%{_bindir}/chromium
|
|
|
|
%files -n chromedriver
|
|
%{_libdir}/chromium/chromedriver
|
|
|
|
%changelog
|