2018-04-24 14:28:44 +03:00
# This spec file is based on other spec files, ebuilds, PKGBUILDs available from
2020-10-22 17:33:11 +03:00
# [1] https://build.opensuse.org/package/show/openSUSE:Factory/chromium
2018-04-24 14:28:44 +03:00
# [2] https://copr.fedoraproject.org/coprs/churchyard/chromium-russianfedora-tested/
# [3] https://www.archlinux.org/packages/extra/x86_64/chromium/
# [4] https://src.fedoraproject.org/rpms/chromium/
# [5] https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/
2019-09-21 23:02:43 +03:00
# [6] https://packages.altlinux.org/ru/sisyphus/specfiles/chromium-gost
2018-04-24 14:28:44 +03:00
2018-11-11 01:39:53 +03:00
# Get the version number of latest stable version
# $ curl -s 'https://omahaproxy.appspot.com/all?os=linux&channel=stable' | sed 1d | cut -d , -f 3
2018-04-24 14:28:44 +03:00
2020-01-30 12:09:27 +00:00
%define debug_package %{nil}
2014-11-24 14:25:53 +03:00
%global _build_pkgcheck_set %{nil}
2020-03-23 21:24:20 +03:00
%ifarch x86_64 %ix86
2019-09-21 23:02:43 +03:00
%bcond_without gost
2020-03-23 21:24:20 +03:00
%else
%bcond_with gost
%endif
2014-11-24 10:50:36 +03:00
2015-11-11 18:16:42 +03:00
# eol 'fix' corrupts some .bin
%define dont_fix_eol 1
2016-02-25 12:05:16 +03:00
%define _disable_lto 1
2015-11-11 18:16:42 +03:00
2012-07-04 11:57:27 +04:00
%define crname chromium-browser
%define _crdir %{_libdir}/%{crname}
%define _src %{_topdir}/SOURCES
2018-11-11 01:39:53 +03:00
%define ffmpeg 1
2016-03-08 19:43:38 +03:00
%define icu 0
2020-09-20 14:44:26 +03:00
%define libva 1
2018-05-28 14:04:45 +03:00
%define jsoncpp 0
2020-09-01 01:05:31 +03:00
%bcond_without native_libpng
2020-02-21 13:03:09 +03:00
%bcond_without clang
2015-02-09 22:50:26 +03:00
2016-11-17 23:12:20 +10:00
# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys
2018-11-11 01:39:53 +03:00
# Note: these are for Mageia use ONLY.
# For your own builds, please get your own set of keys.
%define google_api_key AIzaSyDhhIHB_kQZodiWr8yDAm8E3GwEyiXmuDU
%define google_default_client_id 1039996407057-q599ngv7i6ni4sbkd2fsns30246r9s9v.apps.googleusercontent.com
%define google_default_client_secret mRHXPjlS4cLpp1beCiXoYbLZ
2016-11-17 23:12:20 +10:00
2019-09-21 23:02:43 +03:00
# GOST patches and sources
2020-10-22 17:33:11 +03:00
%define chromium_gost_ver 86.0.4240.111
%define msspi_ver 0.1.36
2019-09-21 23:02:43 +03:00
%define _gostsourcedir %{_builddir}/chromium-gost
2020-10-22 17:33:11 +03:00
%define xcb_version 1.14.1
2020-07-17 20:27:23 +03:00
2020-08-13 23:46:29 +03:00
%if %{mdvver} <= 201410
2020-07-27 17:02:43 +03:00
%bcond_without native_clang
%else
%bcond_with native_clang
%endif
2020-08-23 11:21:22 +03:00
# Verbose logging during build
%bcond_with verbose
2020-08-01 21:38:34 +03:00
%global __requires_exclude (^devel\\(|.*\\.so\\()
# Do not provide libEGL.so, libGLESv2.so
%global __provides_exclude_from ^%{_crdir} /.*\\.so$
2015-06-22 21:51:15 +10:00
Summary : A fast web browser based on the Blink engine
Name : chromium-browser-stable
2020-10-22 17:33:11 +03:00
Version : 86.0.4240.111
Release : 1
2015-06-22 21:51:15 +10:00
License : BSD, LGPL
Group : Networking/WWW
2017-01-31 10:51:58 +03:00
Url : https://www.chromium.org/Home
2015-06-22 21:51:15 +10:00
Source0 : https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{version} .tar.xz
Source1 : chromium-wrapper
2019-09-21 23:02:43 +03:00
Source2 : %{crname} .desktop
2016-11-17 23:12:20 +10:00
# Setup toolchain for rosa builds, from gentoo
# https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/toolchain/BUILD.gn
Source5 : BUILD.gn
Source10 : %{name} .rpmlintrc
2020-07-17 20:27:23 +03:00
# Bring xcb-proto with us (might need more than python on EPEL?)
Source20 : https://www.x.org/releases/individual/proto/xcb-proto-%{xcb_version} .tar.xz
2015-06-22 21:51:15 +10:00
Source30 : master_preferences
Source31 : default_bookmarks.html
Source32 : chromium.default
Source100 : icons.tar.bz2
Source997 : depot_tools.tar.xz
Source999 : new-system-icons.tar.xz
2019-09-21 23:02:43 +03:00
%if %{with gost}
2020-10-22 17:33:11 +03:00
Source1101 : https://github.com/deemru/chromium-gost/archive/%{chromium_gost_ver} .tar.gz?/chromium-gost-%{chromium_gost_ver} .tar.gz
Source1102 : https://github.com/deemru/msspi/archive/%{msspi_ver} .tar.gz?/msspi-%{msspi_ver} .tar.gz
2019-09-21 23:02:43 +03:00
%endif
2019-12-19 17:29:31 +03:00
# needs with gost
# https://github.com/deemru/chromium-gost/blob/master/patch/chromium.patch
Patch1 : chromium-79.0.3945.88-deleted-chromium-gost-info.patch
2018-11-11 01:39:53 +03:00
Patch4 : chromium-30.0.1599.66-master-prefs-path.patch
2019-04-13 22:52:15 +03:00
# (cjw) Recognize mimetypes for matroska (.mkv) and AVI (.avi) formats (video/x-matroska and audio/x-matroska, video/x-msvideo) + handle A52 "AC3" and DTS compressed audio.
Patch6 : chromium-55-extra-media.patch
# (cjw) [1/2] Recognize mimetypes for WMV (.wmv), FLV (.flv) and MPEG (.mpg) videos
Patch7 : chromium-40-wmvflvmpg.patch
# (cjw) [2/2] Handle more video codecs.
Patch8 : chromium-40-sorenson-spark.patch
2016-12-06 19:54:52 +03:00
2016-11-17 23:12:20 +10:00
Patch22 : chromium-54-proprietary-codecs-assert.patch
2018-11-11 01:39:53 +03:00
%if 0%{jsoncpp}
# (cjw) add missing unbundle gn files (1)
Patch28 : chromium-53-gn-system-icu-jsoncpp.patch
%endif
# (cjw) fix webrtc build with system ffmpeg
Patch35 : chromium-50-system-ffmpeg-3.patch
2017-08-09 15:04:16 +03:00
# (cjw) fix build with current glib...
Patch36 : chromium-58-glib.patch
2018-11-11 01:39:53 +03:00
# clang builtin subtract functions, scoped enum
Patch47 : chromium-61-gcc5.patch
2019-12-19 17:29:31 +03:00
# (cjw) fix gn bootstrapping with gcc
Patch190 : chromium-69-gn-bootstrap.patch
2019-02-21 00:25:57 +03:00
# (cjw) fix i586 build
Patch198 : chromium-72-i586.patch
2018-11-11 01:39:53 +03:00
# New from Debian
Patch500 : chromium-third-party-cookies-off-by-default.patch
2016-01-03 00:58:07 +03:00
# Google patched their bundled copy of icu 54 to include API functionality that wasn't added until 55.
2018-11-11 01:39:53 +03:00
# :P
2016-11-17 23:12:20 +10:00
Patch502 : chromium-45.0.2454.101-system-icu-54-does-not-have-detectHostTimeZone.patch
2018-11-11 01:39:53 +03:00
# Patch to fix build with use_system_libvpx
# Chromium bug #541273
2016-01-22 11:33:10 +03:00
# fix build with icu other than 54
2018-11-11 01:39:53 +03:00
Patch504 : chromium-system-icu-r0.patch
2018-01-23 08:13:40 +03:00
# https://aur.archlinux.org/packages/chromium-vaapi/
2019-04-13 22:52:15 +03:00
Patch508 : chromium-vaapi.patch
2018-11-11 01:39:53 +03:00
# ROSA Build
Patch600 : chromium-buildname-60.0.3112.90.patch
# Patch to fix build
2017-11-02 05:09:14 +03:00
Patch601 : chromium-62-include-cstdlib.patch
2018-11-11 01:39:53 +03:00
# https://github.com/RussianFedora/chromium/blob/fedora-stable/chromium-66.0.3359.81-system-clang.patch
Patch603 : chromium-66.0.3359.81-system-clang.patch
2019-09-13 00:11:53 +03:00
# https://mirror.yandex.ru/gentoo-portage/www-client/chromium/files/
2018-11-11 01:39:53 +03:00
Patch604 : chromium-compiler-r4.patch
# https://chromium.googlesource.com/chromium/src/+/40a8d84a54ac47d3299194c5377aebd71714f1f0%5E%21/
Patch607 : chromium-67.0.3396.87-fix-build-llvm-ar.patch
2018-09-22 00:11:52 +03:00
# Add "ROSA" to the user agent string
2018-11-11 01:39:53 +03:00
Patch627 : chromium-68.0.3440.106-rosa-user-agent.patch
# Do not prefix libpng functions
Patch629 : chromium-60.0.3112.78-no-libpng-prefix.patch
# Fix errors build in 69
Patch631 : chromium-69.0.3497.100-build-error-in-clang6.patch
2020-10-22 17:33:11 +03:00
# https://chromium-review.googlesource.com/c/chromium/src/+/2427349
Patch636 : remove-dead-reloc-in-nonalloc-LD-flags.patch
# Fix build /sandbox/policy/linux/bpf_gpu_policy_linux.cc
Patch637 : chromium-86.0.4240.80-fcntl-h.patch
2018-11-11 01:39:53 +03:00
2015-06-22 21:51:15 +10:00
BuildRequires : bison
2020-02-21 13:03:09 +03:00
%if %{with clang}
2018-04-24 14:28:44 +03:00
BuildRequires : clang
BuildRequires : lld
BuildRequires : libcxx-devel
BuildRequires : libcxxabi-devel
%endif
2018-09-22 00:11:52 +03:00
# gn needs these
2016-11-17 23:12:20 +10:00
BuildRequires : flex
2020-07-27 17:02:43 +03:00
%if %{with native_clang}
BuildRequires : cmake
BuildRequires : git
%endif
2016-11-17 23:12:20 +10:00
BuildRequires : gperf
BuildRequires : gyp
BuildRequires : ninja
2018-11-11 01:39:53 +03:00
BuildRequires : nodejs
2016-11-17 23:12:20 +10:00
BuildRequires : util-linux
BuildRequires : yasm
BuildRequires : atomic-devel
2015-06-22 21:51:15 +10:00
BuildRequires : bzip2-devel
BuildRequires : cap-devel
BuildRequires : cups-devel
BuildRequires : elfutils-devel
2020-01-30 02:07:07 +00:00
BuildRequires : multiarch-utils
2020-08-31 21:22:38 +03:00
BuildRequires : java-devel
2018-08-13 15:03:08 +03:00
BuildRequires : jpeg-devel
2018-05-28 14:04:45 +03:00
%if 0%{jsoncpp}
2016-11-17 23:12:20 +10:00
BuildRequires : jsoncpp-devel
2018-05-28 14:04:45 +03:00
%endif
2015-06-22 21:51:15 +10:00
BuildRequires : pam-devel
2018-11-11 01:39:53 +03:00
BuildRequires : snappy-devel
2016-11-17 23:12:20 +10:00
BuildRequires : speech-dispatcher-devel
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(alsa)
BuildRequires : pkgconfig(atk)
BuildRequires : pkgconfig(dbus-glib-1)
2020-03-23 21:24:20 +03:00
%if %rpm4
BuildRequires : pkgconfig(dri)
BuildRequires : pkgconfig(krb5)
BuildRequires : pkgconfig(krb5-gssapi)
%endif
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(expat)
2018-11-11 01:39:53 +03:00
%if 0%{?ffmpeg}
BuildRequires : pkgconfig(libavcodec) >= 4.0.2
%endif
BuildRequires : pkgconfig(flac)
2016-01-02 20:32:51 +03:00
BuildRequires : pkgconfig(fontconfig)
2017-08-09 15:04:16 +03:00
BuildRequires : pkgconfig(freetype2)
2020-05-13 12:24:25 +00:00
BuildRequires : pkgconfig(gbm)
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(gconf-2.0)
BuildRequires : pkgconfig(gl)
BuildRequires : pkgconfig(glib-2.0)
BuildRequires : pkgconfig(glu)
BuildRequires : pkgconfig(gnome-keyring-1)
BuildRequires : pkgconfig(gstreamer-plugins-base-1.0)
2016-03-08 19:51:23 +03:00
BuildRequires : pkgconfig(gtk+-3.0)
2018-11-11 01:39:53 +03:00
BuildRequires : pkgconfig(harfbuzz)
2016-03-08 19:43:38 +03:00
%if 0%{icu}
2016-01-02 20:32:51 +03:00
BuildRequires : pkgconfig(icu-i18n)
2016-03-08 19:43:38 +03:00
%endif
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(libexif)
BuildRequires : pkgconfig(libgcrypt)
BuildRequires : pkgconfig(libmtp)
2016-11-17 23:12:20 +10:00
BuildRequires : pkgconfig(libopenjp2)
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(libpci)
2020-09-01 01:10:38 +03:00
%if %{without native_libpng}
2018-11-11 01:39:53 +03:00
BuildRequires : pkgconfig(libpng)
2020-09-01 01:05:31 +03:00
%endif
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(libpulse)
2018-11-11 01:39:53 +03:00
BuildRequires : pkgconfig(libtiff-4)
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(libusb-1.0)
2016-01-10 21:49:52 +03:00
BuildRequires : pkgconfig(libxml-2.0)
2018-11-11 01:39:53 +03:00
BuildRequires : pkgconfig(libxslt)
%if 0%{?libva}
2016-01-21 16:07:13 +03:00
BuildRequires : pkgconfig(libva)
2018-11-11 01:39:53 +03:00
%endif
2019-02-21 00:25:57 +03:00
BuildRequires : pkgconfig(glesv2)
2015-06-22 21:51:15 +10:00
BuildRequires : pkgconfig(minizip)
BuildRequires : pkgconfig(nspr)
BuildRequires : pkgconfig(nss)
BuildRequires : pkgconfig(opus)
BuildRequires : pkgconfig(speex)
BuildRequires : pkgconfig(udev)
BuildRequires : pkgconfig(xscrnsaver)
BuildRequires : pkgconfig(xt)
BuildRequires : pkgconfig(xtst)
2018-11-11 01:39:53 +03:00
BuildRequires : pkgconfig(zlib)
2020-02-21 13:03:09 +03:00
%if %{mdvver} >= 201910
2020-04-12 23:14:10 +00:00
# no support python2
#BuildRequires: python2dist(beautifulsoup4)
2020-03-23 21:24:20 +03:00
BuildRequires : python2dist(html5lib)
2020-02-21 13:03:09 +03:00
%else
2018-09-22 00:11:52 +03:00
BuildRequires : pythonegg(beautifulsoup4)
BuildRequires : pythonegg(html5lib)
2020-02-21 13:03:09 +03:00
%endif
2020-06-21 18:05:58 +03:00
BuildRequires : pythonegg(setuptools)
2019-09-21 23:02:43 +03:00
%if %{with gost}
BuildRequires : chrpath
%endif
2015-09-02 15:09:51 +03:00
2020-01-06 23:28:40 +00:00
Recommends: chromium-browser-pepper-flash
2016-11-19 02:30:47 +10:00
Conflicts : chromium-widevinecdm-plugin < 54
Obsoletes : chromium-widevinecdm-plugin < 54
2019-09-21 23:02:43 +03:00
Conflicts : %{crname} -beta
Conflicts : %{crname} -unstable
2019-10-04 12:16:33 +00:00
# There was a dummy empty package chromium-browser
# which depended from chromium-browser-stable and nothing more.
# We decided to remove that package.
# chromium-browser SUBpackage had Epoch=1
2019-10-09 14:16:06 +00:00
Obsoletes : %{crname} < 1:%{version} -%{release}
Provides : %{crname} = 1:%{version} -%{release}
2019-10-31 23:21:09 +03:00
Obsoletes : chromium-gost-lib < 78.0.3904.70
%if %{with gost}
Provides : chromium-gost-lib = %{EVRD}
%endif
2015-06-22 21:51:15 +10:00
2012-07-04 11:57:27 +04:00
%description
Chromium is a browser that combines a minimal design with sophisticated
technology to make the web faster, safer, and easier.
This is the stable channel Chromium browser. It offers a rock solid
browser which is updated with features and fixes once they have been
2018-04-24 14:28:44 +03:00
thoroughly tested.
2012-07-04 11:57:27 +04:00
Note: If you are reverting from unstable to stable or beta channel, you may
experience tab crashes on startup. This crash only affects tabs restored
during the first launch due to a change in how tab state is stored.
See http://bugs.chromium.org/34688. It's always a good idea to back up
your profile before changing channels.
2015-06-22 21:51:15 +10:00
%files
%config %{_sysconfdir} /%{crname}
%config %{_sysconfdir} /default/%{crname}
%{_bindir} /%{crname}
%{_crdir} /chromium-wrapper
%{_crdir} /chrome
%{_crdir} /chrome-sandbox
2016-03-08 19:43:38 +03:00
%{_crdir} /icudtl.dat
2015-06-22 21:51:15 +10:00
%{_crdir} /locales
2017-03-11 21:09:25 +03:00
%{_crdir} /*.pak
2015-06-22 21:51:15 +10:00
%{_crdir} /resources
%{_crdir} /themes
2018-01-23 08:13:40 +03:00
%{_crdir} /swiftshader
2020-09-23 03:13:08 +03:00
%{_crdir} /libEGL.so*
%{_crdir} /libGLESv2.so*
2015-06-22 21:51:15 +10:00
%dir %{_crdir} /pepper
%{_datadir} /applications/*.desktop
%{_iconsdir} /hicolor/*/apps/chromium*
2017-07-29 03:30:57 +03:00
%post
2017-07-28 19:13:43 +03:00
# Remove chromium-browser-install package if we have it installed
2019-09-21 23:02:43 +03:00
if [ " $ ( r p m - q %{crname} - i n s t a l l | w c - w ) " = 1 ]
2017-07-28 19:13:43 +03:00
then
2019-09-21 23:02:43 +03:00
rpm -e %{crname} -install
2017-07-28 19:13:43 +03:00
fi
2015-06-22 21:51:15 +10:00
#----------------------------------------------------------------------------
2019-09-22 14:11:43 +03:00
%package -n chromedriver
2015-06-22 21:51:15 +10:00
Summary : WebDriver for Google Chrome/Chromium
Group : Development/Other
2019-09-22 14:11:43 +03:00
Requires : %{name} = %{EVRD}
2013-01-25 15:10:50 +04:00
2019-09-22 14:11:43 +03:00
%description -n chromedriver
2013-01-25 15:10:50 +04:00
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.
2012-07-24 13:18:14 +04:00
2019-09-22 14:11:43 +03:00
%files -n chromedriver
2015-06-22 21:51:15 +10:00
%doc LICENSE AUTHORS
2019-09-22 14:11:43 +03:00
%{_bindir} /chromedriver
2015-06-22 21:51:15 +10:00
%{_crdir} /chromedriver
#----------------------------------------------------------------------------
2012-07-04 11:57:27 +04:00
%prep
2016-11-17 23:12:20 +10:00
%setup -qn chromium-%{version} -a 997 -a 999
2015-12-11 11:28:48 +03:00
2019-09-21 23:02:43 +03:00
%if %{with gost}
2019-12-19 17:29:31 +03:00
rm -rf %{_gostsourcedir}
2019-09-21 23:02:43 +03:00
mkdir -p %{_gostsourcedir}
tar -C %{_gostsourcedir} --strip 1 -xf %{SOURCE1101}
sed -i \
-e " s , ^ # i n c l u d e < . . / s s l / i n t e r n a l . h > , # i n c l u d e \" $ { P W D } / t h i r d _ p a r t y / b o r i n g s s l / s r c / s s l / i n t e r n a l . h \" , g " \
%{_gostsourcedir} /src/gostssl.cpp
tar -C %{_gostsourcedir} /src/msspi --strip 1 -xf %{SOURCE1102}
2019-12-19 17:29:31 +03:00
sed -i 's/ (Chromium GOST) / /g' %{_gostsourcedir} /patch/chromium.patch
2019-10-31 23:21:09 +03:00
sed -i 's/Chromium GOST/Chromium/g' %{_gostsourcedir} /patch/chromium.patch
2019-09-21 23:02:43 +03:00
patch -p1 < %{_gostsourcedir} /patch/chromium.patch
2019-12-19 17:29:31 +03:00
%patch1 -p1 -R
2019-09-21 23:02:43 +03:00
( cd ./third_party/boringssl/src
patch -p1 < %{_gostsourcedir} /patch/boringssl.patch )
2019-10-31 23:21:09 +03:00
cp -f %{_gostsourcedir} /src/gostssl.cpp third_party/boringssl/gostssl.cpp
cp -f %{_gostsourcedir} /src/msspi/src/* third_party/boringssl
cp -f %{_gostsourcedir} /src/msspi/third_party/cprocsp/include/* third_party/boringssl/src/include
2019-09-21 23:02:43 +03:00
%endif
2012-07-24 16:01:58 +04:00
%patch4 -p1 -b .prefs
2019-04-13 22:52:15 +03:00
%patch6 -p1
%patch7 -p1
%patch8 -p1
2016-11-17 23:12:20 +10:00
%patch22 -p1
2018-11-11 01:39:53 +03:00
%if 0%{jsoncpp}
%patch28 -p1
%endif
%if 0%{?ffmpeg}
%patch35 -p1
2018-10-30 17:30:34 +03:00
%endif
2018-11-11 01:39:53 +03:00
%patch36 -p1
%patch47 -p1
2019-12-19 17:29:31 +03:00
%patch190 -p1
2019-02-21 00:25:57 +03:00
%patch198 -p1
2018-11-11 01:39:53 +03:00
# new from debian
%patch500 -p1
2015-09-07 09:49:47 +03:00
2016-03-08 19:43:38 +03:00
%if 0%{icu}
2016-01-29 18:38:34 +03:00
%patch502 -p1 -b .system-icu
%patch504 -p0 -b .icu-ver
2016-03-08 19:43:38 +03:00
%endif
2016-03-08 19:46:48 +03:00
%if 0%{?libva}
2020-09-20 14:44:26 +03:00
#%%patch508 -p1 -b .vaapi
2016-03-08 19:46:48 +03:00
%endif
2018-11-11 01:39:53 +03:00
%patch600 -p1
2017-09-19 14:51:35 +03:00
%patch601 -p1
2018-11-11 01:39:53 +03:00
2020-07-27 17:02:43 +03:00
%if %{without native_clang}
2018-11-11 01:39:53 +03:00
%patch603 -p1
2020-07-27 17:02:43 +03:00
%endif
2018-11-11 01:39:53 +03:00
%patch604 -p1
%patch607 -p1
2018-09-22 00:11:52 +03:00
%patch627 -p1
2020-09-24 13:33:10 +03:00
%if %{without native_libpng}
2018-11-11 01:39:53 +03:00
%patch629 -p1
2020-09-24 13:33:10 +03:00
%endif
2020-07-27 17:02:43 +03:00
%if %{without native_clang}
2018-11-11 01:39:53 +03:00
%patch631 -p1 -b .clang6
2020-09-23 03:13:08 +03:00
%endif
2020-10-22 17:33:11 +03:00
%patch636 -p1
%patch637 -p1 -b .fcntl
2018-11-11 01:39:53 +03:00
2020-07-27 17:02:43 +03:00
# fatal error: 'fuzzer/FuzzedDataProvider.h' file not found
# (Available in Clang10)
%if %{without native_clang}
2018-04-24 14:28:44 +03:00
mkdir -p third_party/llvm-build/Release+Asserts/bin
pushd third_party/llvm-build/Release+Asserts/bin
2018-11-11 01:39:53 +03:00
ln -sf /usr/bin/clang clang
ln -sf /usr/bin/clang++ clang++
2018-04-24 14:28:44 +03:00
popd
2020-07-27 17:02:43 +03:00
%endif
2017-03-29 01:04:37 +03:00
2012-07-04 11:57:27 +04:00
# Hard code extra version
2015-10-22 13:02:58 +03:00
FILE=chrome/common/channel_info_posix.cc
2012-07-04 11:57:27 +04:00
sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"%{product_vendor} %{product_version}"/' $FILE
cmp $FILE $FILE.orig && exit 1
2018-12-16 01:01:23 +03:00
# Remove compiler flags not supported by our system clang
sed -i \
-e '/"-Wno-defaulted-function-deleted"/d' \
build/config/compiler/BUILD.gn
2020-02-21 13:03:09 +03:00
%if %{mdvver} >= 201910
# gn is rather convoluted and not python3 friendly -- let's make
# sure it sees python2 when it calls python
ln -s %{_bindir} /python2 python
2020-08-23 12:17:05 +03:00
find . -type f -name '*.py' -exec sed -i 's,#!/usr/bin/env python,#!/usr/bin/env python2,g' {} \;
2020-03-23 21:24:20 +03:00
mkdir -p local_bin
ln -s %{__python 2} local_bin/python
export PATH=" $ P W D / l o c a l _ b i n : $ P A T H "
2020-02-21 13:03:09 +03:00
%endif
2017-04-22 13:40:30 +03:00
# setup node
mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/node
2018-10-31 10:02:21 +03:00
2018-10-17 16:13:17 +03:00
%build
2020-07-17 20:27:23 +03:00
# unpack a local copy of the xcb-proto bits
tar xf %{SOURCE20}
export PYTHONPATH=" . . / . . / t h i r d _ p a r t y / p y j s o n 5 / s r c : . . / . . / x c b - p r o t o - %{xcb_version} "
2019-09-21 23:02:43 +03:00
2020-10-22 17:33:11 +03:00
%if 0%{?ffmpeg}
2020-09-01 01:05:31 +03:00
%define system_gn_list ffmpeg
2020-10-22 17:33:11 +03:00
%endif
2020-08-31 20:16:56 +00:00
# flac libxslt snappy yasm zlib
2018-11-11 01:39:53 +03:00
# opus
# icu
# libevent
# libvpx
# libwebp
# System libxml must be built with icu support to be used in Chromium
# libxml
# handled by upstream regular build scripts? : freetype harfbuzz-ng
# jsoncpp
2020-02-21 13:03:09 +03:00
%if %{with clang}
2018-11-11 01:39:53 +03:00
%define is_clang true
%else
%define is_clang false
%endif
2018-04-24 14:28:44 +03:00
2018-08-13 15:03:08 +03:00
# widevinecdmadapter
2018-09-26 00:21:20 +03:00
# Build error with widevinecdmadapter in 67.0.3396.62 (fixed)
2018-08-13 15:03:08 +03:00
%define widevine 1
2018-09-22 16:40:06 +03:00
%if 0%{widevine}
2018-08-13 15:03:08 +03:00
%define is_widevine true
%else
%define is_widevine false
%endif
2019-02-21 00:32:14 +03:00
%define lld 1
2018-11-11 01:39:53 +03:00
%if 0%{lld}
%define is_lld true
%define use_gold false
%else
%define is_lld false
%define use_gold true
%endif
2018-09-26 00:21:20 +03:00
%if 0%{?libva}
%define is_vaapi true
%else
%define is_vaapi false
2018-09-22 16:40:06 +03:00
%endif
2020-09-01 01:05:31 +03:00
%if %{without native_libpng}
%define is_libpng true
%else
%define is_libpng false
%endif
2020-07-27 17:02:43 +03:00
%if %{without native_clang}
%define clang_use_chrome_plugins clang_use_chrome_plugins=false
%else
%define clang_use_chrome_plugins clang_use_chrome_plugins=true
%endif
2016-11-17 23:12:20 +10:00
# v NO TABS IN HERE!
2018-05-28 14:04:45 +03:00
%define gn_config use_sysroot=false \
2016-11-17 23:12:20 +10:00
system_libdir=" % { _ l i b } " \
icu_use_data_file=true \
2018-11-11 01:39:53 +03:00
enable_nacl=false \
is_nacl_glibc=false \
use_gold=%{use_gold} \
2016-11-17 23:12:20 +10:00
custom_toolchain=" %{_sourcedir} : d e f a u l t " \
2018-11-11 01:39:53 +03:00
ffmpeg_branding=" C h r o m i u m " \
2016-11-17 23:12:20 +10:00
proprietary_codecs=true \
2019-12-19 17:29:31 +03:00
enable_platform_ac3_eac3_audio = true \
2016-11-17 23:12:20 +10:00
enable_mse_mpeg2ts_stream_parser=true \
2019-12-19 17:29:31 +03:00
enable_platform_hevc=true \
2018-11-11 01:39:53 +03:00
use_system_libjpeg=true \
use_libjpeg_turbo=false \
2018-08-13 15:03:08 +03:00
enable_widevine=%{is_widevine} \
2016-11-17 23:12:20 +10:00
use_pulseaudio=true \
use_allocator=" n o n e " \
treat_warnings_as_errors=false \
2018-11-11 01:39:53 +03:00
fatal_linker_warnings=false \
2016-11-19 02:16:30 +10:00
use_aura=true \
2018-11-11 01:39:53 +03:00
use_libpci = true \
2020-01-30 12:09:27 +00:00
is_debug=false \
2019-02-21 00:25:57 +03:00
gtk_version=3 \
2018-04-24 14:28:44 +03:00
is_clang=%{is_clang} \
2020-07-27 17:02:43 +03:00
%{?clang_use_chrome_plugins} \
2018-11-11 01:39:53 +03:00
use_lld=%{is_lld} \
2020-09-10 16:39:03 +03:00
use_system_freetype=false \
2018-11-11 01:39:53 +03:00
use_system_harfbuzz=false \
2020-09-01 01:05:31 +03:00
use_system_libpng=%{is_libpng} \
2018-09-26 00:21:20 +03:00
use_vaapi=%{is_vaapi} \
2019-12-19 17:29:31 +03:00
enable_dav1d_decoder=true enable_libaom_decoder=false \
2018-05-28 14:04:45 +03:00
v8_use_external_startup_data=false \
2016-11-17 23:12:20 +10:00
google_api_key=" %{google_api_key} " \
google_default_client_id=" %{google_default_client_id} " \
2018-11-11 01:39:53 +03:00
google_default_client_secret=" %{google_default_client_secret} "
2020-07-27 17:02:43 +03:00
#clang_base_path="//third_party/llvm-build/Release+Asserts" \
2020-03-23 21:24:20 +03:00
python2 build/linux/unbundle/replace_gn_files.py --system-libraries %{system_gn_list}
python2 third_party/libaddressinput/chromium/tools/update-strings.py
2016-11-17 23:12:20 +10:00
2020-07-27 17:02:43 +03:00
%if %{with native_clang}
# Build clang from Google
# python2 tools/clang/scripts/build.py \
# --without-android \
# --without-fuchsia \
# --use-system-cmake \
# --gcc-toolchain=%{_prefix}
python2 tools/clang/scripts/update.py
%endif
2020-02-21 13:03:09 +03:00
%if %{with clang}
2020-07-27 17:02:43 +03:00
%if %{without native_clang}
2018-11-11 01:39:53 +03:00
export CC=clang
export CXX=clang++
export AR=ar
export NM=nm
2020-07-27 17:02:43 +03:00
%else
%define clang_path "%{_builddir}/chromium-%{version}/third_party/llvm-build/Release+Asserts/bin/"
export CC=" %{clang_path} c l a n g "
export CXX=" %{clang_path} c l a n g + + "
export AR=" %{clang_path} l l v m - a r "
export NM=nm
%endif
2019-12-19 17:29:31 +03:00
export CFLAGS=" $ C F L A G S - s t d l i b = l i b c + + - W n o - u n u s e d - c o m m a n d - l i n e - a r g u m e n t "
export CXXFLAGS=" $ C X X F L A G S - s t d l i b = l i b c + + - W n o - u n u s e d - c o m m a n d - l i n e - a r g u m e n t "
2018-11-11 01:39:53 +03:00
# flags to fix i586 builds
2019-12-19 17:29:31 +03:00
export LDFLAGS=" $ L D F L A G S - W l , - z , n o t e x t - p t h r e a d - s t d l i b = l i b c + + "
2018-11-11 01:39:53 +03:00
%else
2020-01-13 14:35:45 +03:00
%setup _compile_flags
2018-11-11 01:39:53 +03:00
CC=%{__cc} ; export CC
CXX=%{__cxx} ; export CXX
AR=%{__ar} ; export AR
NM=%{__nm} ; export NM
LD=%{__cxx} ; export LD
# filter out some flags to fix i586 builds
CFLAGS=$(echo " $ C F L A G S " |sed -e 's/-gdwarf-4//' -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//' )
CXXFLAGS=$(echo " $ C X X F L A G S " |sed -e 's/-gdwarf-4//' -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//' )
2020-02-21 13:03:09 +03:00
CFLAGS=" $ C F L A G S - W n o - e r r o r = p o i n t e r - t o - i n t - c a s t - W n o - e r r o r = i n t - t o - p o i n t e r - c a s t - f n o - s t r i c t - a l i a s i n g "
CXXFLAGS=" $ C X X F L A G S - W n o - e r r o r = a t t r i b u t e s - W n o - e r r o r = c o m m e n t - W n o - e r r o r = u n u s e d - v a r i a b l e - W n o - e r r o r = s t r i c t - o v e r f l o w - W n o - e r r o r = d e p r e c a t e d - d e c l a r a t i o n s - f n o - s t r i c t - a l i a s i n g "
2018-11-11 01:39:53 +03:00
%endif
2020-02-21 13:03:09 +03:00
%if %{mdvver} >= 201910
export PYTHON=%{__python 2}
python2 tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
out/Release/gn gen --script-executable=/usr/bin/python2 --args='%{gn_config}' out/Release
%else
2016-11-17 23:12:20 +10:00
python tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
out/Release/gn gen --args='%{gn_config}' out/Release
2020-02-21 13:03:09 +03:00
%endif
2016-11-17 23:12:20 +10:00
2018-11-11 01:39:53 +03:00
pushd out/Release
# widevinecdmadapter
2020-08-23 11:21:22 +03:00
ninja %{_smp_mflags} %{?_with_verbose:--verbose} chrome chrome_sandbox chromedriver
2018-11-11 01:39:53 +03:00
popd
2012-07-04 11:57:27 +04:00
%install
mkdir -p %{buildroot} %{_bindir}
mkdir -p %{buildroot} %{_crdir} /locales
mkdir -p %{buildroot} %{_crdir} /themes
2016-12-06 19:54:52 +03:00
install -m 755 %{SOURCE1} %{buildroot} %{_crdir} /chromium-wrapper
2012-07-04 11:57:27 +04:00
install -m 755 out/Release/chrome %{buildroot} %{_crdir} /
install -m 4755 out/Release/chrome_sandbox %{buildroot} %{_crdir} /chrome-sandbox
2013-01-25 15:10:50 +04:00
cp -a out/Release/chromedriver %{buildroot} %{_crdir} /chromedriver
2014-04-10 12:38:43 +04:00
install -m 644 out/Release/*.pak %{buildroot} %{_crdir} /
2016-03-08 19:43:38 +03:00
install -m 644 out/Release/icudtl.dat %{buildroot} %{_crdir} /
2015-02-09 22:50:26 +03:00
2012-07-04 11:57:27 +04:00
install -m 644 out/Release/locales/*.pak %{buildroot} %{_crdir} /locales/
install -m 644 out/Release/resources.pak %{buildroot} %{_crdir} /
ln -s %{_crdir} /chromium-wrapper %{buildroot} %{_bindir} /%{crname}
2014-05-14 17:35:50 +04:00
sed -i " s ! @ L I B D I R @ ! %{_libdir} ! g " %{buildroot} %{_crdir} /chromium-wrapper
2013-01-25 15:10:50 +04:00
ln -s %{_crdir} /chromedriver %{buildroot} %{_bindir} /chromedriver
2012-07-04 11:57:27 +04:00
2018-01-23 08:13:40 +03:00
cp -r out/Release/swiftshader %{buildroot} %{_crdir}
2020-09-23 03:13:08 +03:00
# This is ANGLE, not to be confused with the similarly named files under swiftshader/
install -m 644 out/Release/libEGL.so* %{buildroot} %{_crdir} /
install -m 644 out/Release/libGLESv2.so* %{buildroot} %{_crdir} /
2014-05-14 17:35:50 +04:00
# create global config file
mkdir -p %{buildroot} %{_sysconfdir} /default
install -m644 %{SOURCE32} %{buildroot} %{_sysconfdir} /default/%{crname}
# create pepper dir. talkplugin works fine only if sylinks in pepper
mkdir -p %{buildroot} %{_crdir} /pepper
2012-07-04 11:57:27 +04:00
find out/Release/resources/ -name " * . d " -exec rm {} \;
cp -r out/Release/resources %{buildroot} %{_crdir}
# desktop file
mkdir -p %{buildroot} %{_datadir} /applications
2017-01-16 16:04:48 +03:00
install -m 644 %{SOURCE2} %{buildroot} %{_datadir} /applications/
2012-07-04 11:57:27 +04:00
# icon
2014-05-29 12:59:28 +04:00
mkdir -p %{buildroot} %{_iconsdir} /hicolor/
tar xjf %{SOURCE100} -C %{buildroot} %{_iconsdir} /hicolor/
2012-07-04 11:57:27 +04:00
2012-07-24 16:01:58 +04:00
mkdir -p %{buildroot} %{_sysconfdir} /%{crname}
install -m 0644 %{SOURCE30} %{buildroot} %{_sysconfdir} /%{crname} /
install -m 0644 %{SOURCE31} %{buildroot} %{_sysconfdir} /%{crname} /
2012-10-23 15:04:10 +04:00
find %{buildroot} -name " * . n e x e " -exec strip {} \;