chromium-browser-stable-test/chromium-browser-stable.spec

653 lines
20 KiB
RPMSpec
Raw Normal View History

2018-04-24 14:28:44 +03:00
# This spec file is based on other spec files, ebuilds, PKGBUILDs available from
# [1] https://repos.fedorapeople.org/repos/spot/chromium/
# [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/
# [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
%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
# 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
# GOST patches and sources
2020-09-23 03:13:08 +03:00
%define chromium_gost_commit 6d10ff4bc437bda11dc2da2464cc463d7ce956d3
2020-09-20 14:44:26 +03:00
%define msspi_commit 10624dde20efaa083af2a4c9de4251eeceb9730a
%define _gostsourcedir %{_builddir}/chromium-gost
2020-07-17 20:27:23 +03:00
%define xcb_version 1.14
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
# 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-09-23 03:13:08 +03:00
Version: 85.0.4183.121
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
Source2: %{crname}.desktop
# 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
%if %{with gost}
2019-10-31 23:21:09 +03:00
Source1101: https://github.com/deemru/chromium-gost/archive/%{chromium_gost_commit}.tar.gz?/chromium-gost-%{chromium_gost_commit}.tar.gz
Source1102: https://github.com/deemru/msspi/archive/%{msspi_commit}.tar.gz?/msspi-%{msspi_commit}.tar.gz
%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
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
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-07-17 20:27:23 +03:00
# error: constexpr variable 'kMinDelta' must be initialized by a constant expression
Patch633: chromium-84.0.4147.89-clang8.patch
# Issue 1095962: Aw, Snap! in Chromium compiled with system ffmpeg 4.3
Patch634: chromium-84-mediaalloc.patch
2020-07-27 17:02:43 +03:00
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/chromium/patches/
Patch635: dont-use-ANGLE-by-default.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
BuildRequires: flex
2020-07-27 17:02:43 +03:00
%if %{with native_clang}
BuildRequires: cmake
BuildRequires: git
%endif
BuildRequires: gperf
BuildRequires: gyp
BuildRequires: ninja
2018-11-11 01:39:53 +03:00
BuildRequires: nodejs
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
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}
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
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)
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)
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
# 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)
%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
Conflicts: chromium-widevinecdm-plugin < 54
Obsoletes: chromium-widevinecdm-plugin < 54
Conflicts: %{crname}-beta
Conflicts: %{crname}-unstable
# 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
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
# Remove chromium-browser-install package if we have it installed
if [ "$(rpm -q %{crname}-install | wc -w)" = 1 ]
then
rpm -e %{crname}-install
fi
2015-06-22 21:51:15 +10:00
#----------------------------------------------------------------------------
%package -n chromedriver
2015-06-22 21:51:15 +10:00
Summary: WebDriver for Google Chrome/Chromium
Group: Development/Other
Requires: %{name} = %{EVRD}
%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.
2012-07-24 13:18:14 +04:00
%files -n chromedriver
2015-06-22 21:51:15 +10:00
%doc LICENSE AUTHORS
%{_bindir}/chromedriver
2015-06-22 21:51:15 +10:00
%{_crdir}/chromedriver
#----------------------------------------------------------------------------
2012-07-04 11:57:27 +04:00
%prep
%setup -qn chromium-%{version} -a 997 -a 999
2015-12-11 11:28:48 +03:00
%if %{with gost}
2019-12-19 17:29:31 +03:00
rm -rf %{_gostsourcedir}
mkdir -p %{_gostsourcedir}
tar -C %{_gostsourcedir} --strip 1 -xf %{SOURCE1101}
sed -i \
-e "s,^#include <../ssl/internal.h>,#include \"${PWD}/third_party/boringssl/src/ssl/internal.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
patch -p1 < %{_gostsourcedir}/patch/chromium.patch
2019-12-19 17:29:31 +03:00
%patch1 -p1 -R
( 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
%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
%patch22 -p1
2018-11-11 01:39:53 +03:00
%if 0%{jsoncpp}
%patch28 -p1
%endif
%if 0%{?ffmpeg}
%patch35 -p1
%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}
%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
2018-11-11 01:39:53 +03:00
%patch629 -p1
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-07-17 20:27:23 +03:00
%if %{mdvver} <= 201610
%patch633 -p1 -b .clang8
%endif
2020-07-27 17:02:43 +03:00
%endif
%patch634 -p1 -b .ffmpeg43
2020-09-23 03:13:08 +03:00
%if 0%{?libva}
2020-07-27 17:02:43 +03:00
#%%patch635 -p1
2020-09-23 03:13:08 +03:00
%endif
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
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 %{__python2} local_bin/python
export PATH="$PWD/local_bin:$PATH"
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
%build
2020-07-17 20:27:23 +03:00
# unpack a local copy of the xcb-proto bits
tar xf %{SOURCE20}
export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
2020-09-01 01:05:31 +03:00
%define system_gn_list ffmpeg
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
# v NO TABS IN HERE!
2018-05-28 14:04:45 +03:00
%define gn_config use_sysroot=false \
system_libdir="%{_lib}" \
icu_use_data_file=true \
2018-11-11 01:39:53 +03:00
enable_nacl=false \
is_nacl_glibc=false \
use_gold=%{use_gold} \
custom_toolchain="%{_sourcedir}:default" \
2018-11-11 01:39:53 +03:00
ffmpeg_branding="Chromium" \
proprietary_codecs=true \
2019-12-19 17:29:31 +03:00
enable_platform_ac3_eac3_audio = true \
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} \
pdf_enable_xfa=true \
use_pulseaudio=true \
use_allocator="none" \
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 \
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
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}clang"
export CXX="%{clang_path}clang++"
export AR="%{clang_path}llvm-ar"
export NM=nm
%endif
2019-12-19 17:29:31 +03:00
export CFLAGS="$CFLAGS -stdlib=libc++ -Wno-unused-command-line-argument"
export CXXFLAGS="$CXXFLAGS -stdlib=libc++ -Wno-unused-command-line-argument"
2018-11-11 01:39:53 +03:00
# flags to fix i586 builds
2019-12-19 17:29:31 +03:00
export LDFLAGS="$LDFLAGS -Wl,-z,notext -pthread -stdlib=libc++"
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 "$CFLAGS"|sed -e 's/-gdwarf-4//' -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//')
CXXFLAGS=$(echo "$CXXFLAGS"|sed -e 's/-gdwarf-4//' -e 's/-fvar-tracking-assignments//' -e 's/-frecord-gcc-switches//')
2020-02-21 13:03:09 +03:00
CFLAGS="$CFLAGS -Wno-error=pointer-to-int-cast -Wno-error=int-to-pointer-cast -fno-strict-aliasing"
CXXFLAGS="$CXXFLAGS -Wno-error=attributes -Wno-error=comment -Wno-error=unused-variable -Wno-error=strict-overflow -Wno-error=deprecated-declarations -fno-strict-aliasing"
2018-11-11 01:39:53 +03:00
%endif
2020-02-21 13:03:09 +03:00
%if %{mdvver} >= 201910
export PYTHON=%{__python2}
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
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
2018-11-11 01:39:53 +03:00
pushd out/Release
# widevinecdmadapter
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
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}/
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}
sed -i "s!@LIBDIR@!%{_libdir}!g" %{buildroot}%{_crdir}/chromium-wrapper
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}/
# 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 "*.nexe" -exec strip {} \;