mirror of
https://abf.rosa.ru/djam/chromium-browser-stable.git
synced 2025-02-23 22:52:49 +00:00
843 lines
28 KiB
RPMSpec
843 lines
28 KiB
RPMSpec
# 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
|
|
|
|
# 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
|
|
|
|
%global _build_pkgcheck_set %{nil}
|
|
%bcond_without gost
|
|
|
|
# eol 'fix' corrupts some .bin
|
|
%define dont_fix_eol 1
|
|
%define _disable_lto 1
|
|
|
|
%define crname chromium-browser
|
|
%define _crdir %{_libdir}/%{crname}
|
|
%define _src %{_topdir}/SOURCES
|
|
|
|
%define ffmpeg 1
|
|
%define icu 0
|
|
%define libva 0
|
|
%define clang 1
|
|
%define jsoncpp 0
|
|
|
|
# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys
|
|
# 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
|
|
%define chromium_gost_commit 7b09253b0112b1bb7b4e89a9134cf078f4084c85
|
|
%define msspi_commit 0e5911974e2d76d68e24eac4599c7248d0018589
|
|
%define _gostsourcedir %{_builddir}/chromium-gost
|
|
|
|
%if %{with gost}
|
|
# When building libgostssl.so, we make empty fake libcapi10.so* and libcapi20.so*
|
|
# to emulate linking with proprietary CryptoPro libraries; at runtime Chromium
|
|
# tries to dlopen libgostssl.so and, if libcapi* libs are missing, it will simply
|
|
# not load this library and will not fail with an error. So, we don't need to depend
|
|
# from these libraries, especially because we can't put them into the repository.
|
|
%define __noautoreq 'libcapi.*\.so\.*'
|
|
%endif
|
|
|
|
Summary: A fast web browser based on the Blink engine
|
|
Name: chromium-browser-stable
|
|
Version: 79.0.3945.88
|
|
Release: 1
|
|
License: BSD, LGPL
|
|
Group: Networking/WWW
|
|
Url: https://www.chromium.org/Home
|
|
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
|
|
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}
|
|
Source1100: Makefile.gost
|
|
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
|
|
|
|
# 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
|
|
|
|
Patch4: chromium-30.0.1599.66-master-prefs-path.patch
|
|
# (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
|
|
|
|
Patch22: chromium-54-proprietary-codecs-assert.patch
|
|
%if 0%{jsoncpp}
|
|
# (cjw) add missing unbundle gn files (1)
|
|
Patch28: chromium-53-gn-system-icu-jsoncpp.patch
|
|
%endif
|
|
# (cjw) build pdfium with system libtiff and libpng
|
|
# (cjw) fix webrtc build with system ffmpeg
|
|
Patch35: chromium-50-system-ffmpeg-3.patch
|
|
# (cjw) fix build with current glib...
|
|
Patch36: chromium-58-glib.patch
|
|
# clang builtin subtract functions, scoped enum
|
|
Patch47: chromium-61-gcc5.patch
|
|
# (cjw) fix gn bootstrapping with gcc
|
|
Patch190: chromium-69-gn-bootstrap.patch
|
|
# (cjw) fix i586 build
|
|
Patch198: chromium-72-i586.patch
|
|
|
|
# New from Debian
|
|
Patch500: chromium-third-party-cookies-off-by-default.patch
|
|
Patch501: chromium-ps-print.patch
|
|
|
|
# Google patched their bundled copy of icu 54 to include API functionality that wasn't added until 55.
|
|
# :P
|
|
Patch502: chromium-45.0.2454.101-system-icu-54-does-not-have-detectHostTimeZone.patch
|
|
# Patch to fix build with use_system_libvpx
|
|
# Chromium bug #541273
|
|
# fix build with icu other than 54
|
|
Patch504: chromium-system-icu-r0.patch
|
|
|
|
# https://aur.archlinux.org/packages/chromium-vaapi/
|
|
Patch508: chromium-vaapi.patch
|
|
|
|
# ROSA Build
|
|
Patch600: chromium-buildname-60.0.3112.90.patch
|
|
# Patch to fix build
|
|
Patch601: chromium-62-include-cstdlib.patch
|
|
|
|
# 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
|
|
# https://mirror.yandex.ru/gentoo-portage/www-client/chromium/files/
|
|
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
|
|
|
|
# Add "ROSA" to the user agent string
|
|
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
|
|
|
|
# Disable fontconfig cache magic that breaks remoting
|
|
Patch717: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch
|
|
|
|
BuildRequires: bison
|
|
%if 0%{?clang}
|
|
BuildRequires: clang
|
|
BuildRequires: lld
|
|
BuildRequires: libcxx-devel
|
|
BuildRequires: libcxxabi-devel
|
|
%endif
|
|
# gn needs these
|
|
BuildRequires: libstdc++-static-devel
|
|
BuildRequires: flex
|
|
BuildRequires: git
|
|
BuildRequires: gperf
|
|
BuildRequires: gyp
|
|
BuildRequires: ninja
|
|
BuildRequires: nodejs
|
|
BuildRequires: util-linux
|
|
BuildRequires: yasm
|
|
BuildRequires: atomic-devel
|
|
BuildRequires: bzip2-devel
|
|
BuildRequires: cap-devel
|
|
#BuildRequires: closure-compiler
|
|
BuildRequires: cups-devel
|
|
BuildRequires: elfutils-devel
|
|
BuildRequires: jpeg-devel
|
|
%if 0%{jsoncpp}
|
|
BuildRequires: jsoncpp-devel
|
|
%endif
|
|
BuildRequires: pam-devel
|
|
BuildRequires: snappy-devel
|
|
BuildRequires: speech-dispatcher-devel
|
|
BuildRequires: pkgconfig(alsa)
|
|
BuildRequires: pkgconfig(atk)
|
|
BuildRequires: pkgconfig(dbus-glib-1)
|
|
BuildRequires: pkgconfig(expat)
|
|
%if 0%{?ffmpeg}
|
|
BuildRequires: pkgconfig(libavcodec) >= 4.0.2
|
|
%endif
|
|
BuildRequires: pkgconfig(flac)
|
|
BuildRequires: pkgconfig(fontconfig)
|
|
BuildRequires: pkgconfig(freetype2)
|
|
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)
|
|
#BuildRequires: pkgconfig(gtk+-2.0)
|
|
BuildRequires: pkgconfig(gtk+-3.0)
|
|
BuildRequires: pkgconfig(harfbuzz)
|
|
%if 0%{icu}
|
|
BuildRequires: pkgconfig(icu-i18n)
|
|
%endif
|
|
BuildRequires: pkgconfig(libexif)
|
|
BuildRequires: pkgconfig(libgcrypt)
|
|
BuildRequires: pkgconfig(libgpsd)
|
|
BuildRequires: pkgconfig(libmtp)
|
|
BuildRequires: pkgconfig(libopenjp2)
|
|
BuildRequires: pkgconfig(libpci)
|
|
BuildRequires: pkgconfig(libpng)
|
|
BuildRequires: pkgconfig(libpulse)
|
|
BuildRequires: pkgconfig(libtiff-4)
|
|
BuildRequires: pkgconfig(libusb-1.0)
|
|
BuildRequires: pkgconfig(libxml-2.0)
|
|
BuildRequires: pkgconfig(libxslt)
|
|
%if 0%{?libva}
|
|
BuildRequires: pkgconfig(libva)
|
|
%endif
|
|
BuildRequires: pkgconfig(glesv2)
|
|
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)
|
|
BuildRequires: pkgconfig(zlib)
|
|
BuildRequires: pythonegg(beautifulsoup4)
|
|
BuildRequires: pythonegg(html5lib)
|
|
%if %{with gost}
|
|
BuildRequires: chrpath
|
|
%endif
|
|
|
|
Suggests: 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}
|
|
Obsoletes: chromium-gost-lib < 78.0.3904.70
|
|
%if %{with gost}
|
|
Provides: chromium-gost-lib = %{EVRD}
|
|
%endif
|
|
|
|
%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
|
|
thoroughly tested.
|
|
|
|
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.
|
|
|
|
%files
|
|
%config %{_sysconfdir}/%{crname}
|
|
%config %{_sysconfdir}/default/%{crname}
|
|
%{_bindir}/%{crname}
|
|
%{_crdir}/chromium-wrapper
|
|
%{_crdir}/chrome
|
|
%{_crdir}/chrome-sandbox
|
|
%{_crdir}/icudtl.dat
|
|
%{_crdir}/locales
|
|
%{_crdir}/*.pak
|
|
%{_crdir}/resources
|
|
%{_crdir}/themes
|
|
%{_crdir}/default_apps
|
|
%{_crdir}/swiftshader
|
|
%{_crdir}/libEGL.so
|
|
%{_crdir}/libGLESv2.so
|
|
%dir %{_crdir}/pepper
|
|
%{_datadir}/applications/*.desktop
|
|
%{_iconsdir}/hicolor/*/apps/chromium*
|
|
|
|
%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
|
|
|
|
#----------------------------------------------------------------------------
|
|
%if %{with gost}
|
|
# %package -n chromium-gost-lib
|
|
# Summary: Library to enable GOST TLS in Chromium browser via CryptoPro
|
|
# Group: System/Libraries
|
|
# Requires: %{name} = %{EVRD}
|
|
#
|
|
# %description -n chromium-gost-lib
|
|
# If you need to make TLS work with GOST cryptography in Chromium browser,
|
|
# install this package and proprietary CryptoPro packages.
|
|
#
|
|
# Chromium looks for libgostssl.so from this package, if it finds it,
|
|
# then it dlopens it. CryptoPro's libcapi10.so and libcapi20.so are
|
|
# loaded by libgostssl.so. All this allows to use GOST TLS encryption
|
|
# via CryptoPro libraries which implement GOST TLS.
|
|
#
|
|
# %files -n chromium-gost-lib
|
|
# %{_crdir}/libgostssl.so
|
|
# %{_crdir}/gostssl.so
|
|
# Symlink to chromium-browser
|
|
# Disabled to prevent conflicts with chromium-gost RPMs
|
|
#%%{_bindir}/chromium-gost
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package -n chromedriver
|
|
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.
|
|
|
|
%files -n chromedriver
|
|
%doc LICENSE AUTHORS
|
|
%{_bindir}/chromedriver
|
|
%{_crdir}/chromedriver
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%prep
|
|
%setup -qn chromium-%{version} -a 997 -a 999
|
|
|
|
%if %{with gost}
|
|
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}
|
|
sed -i 's/ (Chromium GOST) / /g' %{_gostsourcedir}/patch/chromium.patch
|
|
sed -i 's/Chromium GOST/Chromium/g' %{_gostsourcedir}/patch/chromium.patch
|
|
patch -p1 < %{_gostsourcedir}/patch/chromium.patch
|
|
%patch1 -p1 -R
|
|
( cd ./third_party/boringssl/src
|
|
patch -p1 < %{_gostsourcedir}/patch/boringssl.patch )
|
|
#( cd %{_gostsourcedir}
|
|
# Canonical library naming requires to prefix their names with "lib"
|
|
# We make a symlink later
|
|
#grep -rIl gostssl.so . | xargs sed -i 's/gostssl.so/libgostssl.so/g' )
|
|
|
|
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
|
|
|
|
%patch4 -p1 -b .prefs
|
|
%patch6 -p1
|
|
%patch7 -p1
|
|
%patch8 -p1
|
|
%patch22 -p1
|
|
%if 0%{jsoncpp}
|
|
%patch28 -p1
|
|
%endif
|
|
%if 0%{?ffmpeg}
|
|
%patch35 -p1
|
|
%endif
|
|
%patch36 -p1
|
|
%patch47 -p1
|
|
%patch190 -p1
|
|
%patch198 -p1
|
|
|
|
# new from debian
|
|
%patch500 -p1
|
|
%patch501 -p1
|
|
|
|
%if 0%{icu}
|
|
%patch502 -p1 -b .system-icu
|
|
%patch504 -p0 -b .icu-ver
|
|
%endif
|
|
|
|
%if 0%{?libva}
|
|
%patch508 -p1 -b .vaapi
|
|
%endif
|
|
|
|
%patch600 -p1
|
|
%patch601 -p1
|
|
|
|
%patch603 -p1
|
|
%patch604 -p1
|
|
|
|
%patch607 -p1
|
|
|
|
%patch627 -p1
|
|
%patch629 -p1
|
|
|
|
%patch631 -p1 -b .clang6
|
|
|
|
%patch717 -p1
|
|
|
|
mkdir -p third_party/llvm-build/Release+Asserts/bin
|
|
pushd third_party/llvm-build/Release+Asserts/bin
|
|
ln -sf /usr/bin/clang clang
|
|
ln -sf /usr/bin/clang++ clang++
|
|
popd
|
|
|
|
# Remove most of the bundled libraries. Libraries specified below (taken from
|
|
# Gentoo's Chromium ebuild) are the libraries that needs to be preserved.
|
|
build/linux/unbundle/remove_bundled_libraries.py \
|
|
'buildtools/third_party/libc++' \
|
|
'buildtools/third_party/libc++abi' \
|
|
'base/third_party/cityhash' \
|
|
'base/third_party/double_conversion' \
|
|
'base/third_party/dynamic_annotations' \
|
|
'base/third_party/icu' \
|
|
'base/third_party/libevent' \
|
|
'base/third_party/nspr' \
|
|
'base/third_party/superfasthash' \
|
|
'base/third_party/symbolize' \
|
|
'base/third_party/valgrind' \
|
|
'base/third_party/xdg_mime' \
|
|
'base/third_party/xdg_user_dirs' \
|
|
'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/adobe' \
|
|
'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/blanketjs' \
|
|
'third_party/blink' \
|
|
'third_party/boringssl' \
|
|
'third_party/boringssl/src/third_party/fiat' \
|
|
'third_party/boringssl/src/third_party/sike' \
|
|
'third_party/boringssl/linux-aarch64/crypto/third_party/sike' \
|
|
'third_party/boringssl/linux-x86_64/crypto/third_party/sike' \
|
|
'third_party/breakpad' \
|
|
'third_party/breakpad/breakpad/src/third_party/curl' \
|
|
'third_party/brotli' \
|
|
'third_party/cacheinvalidation' \
|
|
'third_party/catapult' \
|
|
'third_party/catapult/common/py_vulcanize/third_party/rcssmin' \
|
|
'third_party/catapult/common/py_vulcanize/third_party/rjsmin' \
|
|
'third_party/catapult/third_party/beautifulsoup4' \
|
|
'third_party/catapult/third_party/html5lib-python' \
|
|
'third_party/catapult/third_party/polymer' \
|
|
'third_party/catapult/third_party/six' \
|
|
'third_party/catapult/tracing/third_party/d3' \
|
|
'third_party/catapult/tracing/third_party/gl-matrix' \
|
|
'third_party/catapult/tracing/third_party/jpeg-js' \
|
|
'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/closure_compiler' \
|
|
'third_party/crashpad' \
|
|
'third_party/crashpad/crashpad/third_party/lss' \
|
|
'third_party/crashpad/crashpad/third_party/zlib' \
|
|
'third_party/crc32c' \
|
|
'third_party/cros_system_api' \
|
|
'third_party/dav1d' \
|
|
'third_party/dawn' \
|
|
'third_party/depot_tools' \
|
|
'third_party/devscripts' \
|
|
'third_party/dom_distiller_js' \
|
|
'third_party/emoji-segmenter' \
|
|
'third_party/expat' \
|
|
'third_party/ffmpeg' \
|
|
'third_party/flac' \
|
|
'third_party/flatbuffers' \
|
|
'third_party/flot' \
|
|
'third_party/fontconfig' \
|
|
'third_party/freetype' \
|
|
'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/harfbuzz-ng' \
|
|
'third_party/hunspell' \
|
|
'third_party/iccjpeg' \
|
|
'third_party/icu' \
|
|
'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/libdrm' \
|
|
'third_party/libjingle' \
|
|
'third_party/libjpeg_turbo' \
|
|
'third_party/libphonenumber' \
|
|
'third_party/libpng' \
|
|
'third_party/libsecret' \
|
|
'third_party/libsrtp' \
|
|
'third_party/libsync' \
|
|
'third_party/libudev' \
|
|
'third_party/libusb' \
|
|
'third_party/libvpx' \
|
|
'third_party/libvpx/source/libvpx/third_party/x86inc' \
|
|
'third_party/libxml' \
|
|
'third_party/libxml/chromium' \
|
|
'third_party/libxslt' \
|
|
'third_party/libwebm' \
|
|
'third_party/libwebp' \
|
|
'third_party/libyuv' \
|
|
'third_party/llvm-build' \
|
|
'third_party/lss' \
|
|
'third_party/lzma_sdk' \
|
|
'third_party/markupsafe' \
|
|
'third_party/mesa' \
|
|
'third_party/metrics_proto' \
|
|
'third_party/modp_b64' \
|
|
'third_party/nasm' \
|
|
'third_party/node' \
|
|
'third_party/node/linux' \
|
|
'third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2' \
|
|
'third_party/one_euro_filter' \
|
|
'third_party/openh264' \
|
|
'third_party/openscreen' \
|
|
'third_party/openscreen/src/third_party/tinycbor/src/src' \
|
|
'third_party/opus' \
|
|
'third_party/ots' \
|
|
'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/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/polymer' \
|
|
'third_party/private-join-and-compute' \
|
|
'third_party/protobuf' \
|
|
'third_party/protobuf/third_party/six' \
|
|
'third_party/pyjson5' \
|
|
'third_party/qcms' \
|
|
'third_party/qunit' \
|
|
'third_party/re2' \
|
|
'third_party/rnnoise' \
|
|
'third_party/s2cellid' \
|
|
'third_party/sfntly' \
|
|
'third_party/simplejson' \
|
|
'third_party/sinonjs' \
|
|
'third_party/skia' \
|
|
'third_party/skia/include/third_party/skcms' \
|
|
'third_party/skia/include/third_party/vulkan' \
|
|
'third_party/skia/third_party/gif' \
|
|
'third_party/skia/third_party/skcms' \
|
|
'third_party/skia/third_party/vulkan' \
|
|
'third_party/smhasher' \
|
|
'third_party/snappy' \
|
|
'third_party/speech-dispatcher' \
|
|
'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/marl' \
|
|
'third_party/swiftshader/third_party/subzero' \
|
|
'third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1' \
|
|
'third_party/tcmalloc' \
|
|
'third_party/test_fonts' \
|
|
'third_party/unrar' \
|
|
'third_party/usb_ids' \
|
|
'third_party/usrsctp' \
|
|
'third_party/vulkan' \
|
|
'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/xdg-utils' \
|
|
'third_party/yasm' \
|
|
'third_party/zlib' \
|
|
'third_party/zlib/google' \
|
|
'tools/gn/base/third_party/icu' \
|
|
'url/third_party/mozilla' \
|
|
'v8/src/third_party/siphash' \
|
|
'v8/src/third_party/utf8-decoder' \
|
|
'v8/src/third_party/valgrind' \
|
|
'v8/third_party/inspector_protocol' \
|
|
'v8/third_party/v8' \
|
|
--do-remove
|
|
|
|
# Remove bundled ICU; its header files appear to get picked up instead of
|
|
# the system ones, leading to errors during the final link stage.
|
|
# https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/BNGvJc08B6Q
|
|
#find third_party/icu -type f \! -regex '.*\.\(gn\|gni\|isolate\)' -delete
|
|
|
|
# Hard code extra version
|
|
FILE=chrome/common/channel_info_posix.cc
|
|
sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"%{product_vendor} %{product_version}"/' $FILE
|
|
cmp $FILE $FILE.orig && exit 1
|
|
|
|
# Remove compiler flags not supported by our system clang
|
|
sed -i \
|
|
-e '/"-Wno-defaulted-function-deleted"/d' \
|
|
build/config/compiler/BUILD.gn
|
|
|
|
# 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
|
|
|
|
%build
|
|
|
|
# %if %{with gost}
|
|
# make --file %{SOURCE1100} \
|
|
# SDIR="%{_gostsourcedir}" \
|
|
# OUTDIR="%{_gostsourcedir}" \
|
|
# CC="%{__cc}" \
|
|
# CXX="%{__cxx}" \
|
|
# CFLAGS="%{optflags} -Wno-error=attributes"
|
|
# %endif
|
|
|
|
%define system_gn_list ffmpeg
|
|
# flac libxslt snappy yasm libpng zlib
|
|
# 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
|
|
|
|
%if 0%{clang}
|
|
%define is_clang true
|
|
%else
|
|
%define is_clang false
|
|
%endif
|
|
|
|
# widevinecdmadapter
|
|
# Build error with widevinecdmadapter in 67.0.3396.62 (fixed)
|
|
%define widevine 1
|
|
%if 0%{widevine}
|
|
%define is_widevine true
|
|
%else
|
|
%define is_widevine false
|
|
%endif
|
|
|
|
%define lld 1
|
|
%if 0%{lld}
|
|
%define is_lld true
|
|
%define use_gold false
|
|
%else
|
|
%define is_lld false
|
|
%define use_gold true
|
|
%endif
|
|
|
|
%if 0%{?libva}
|
|
%define is_vaapi true
|
|
%else
|
|
%define is_vaapi false
|
|
%endif
|
|
|
|
# v NO TABS IN HERE!
|
|
%define gn_config use_sysroot=false \
|
|
system_libdir="%{_lib}" \
|
|
icu_use_data_file=true \
|
|
enable_nacl=false \
|
|
is_nacl_glibc=false \
|
|
binutils_path="%{_bindir}" \
|
|
linux_use_bundled_binutils=false \
|
|
use_gold=%{use_gold} \
|
|
custom_toolchain="%{_sourcedir}:default" \
|
|
ffmpeg_branding="Chromium" \
|
|
proprietary_codecs=true \
|
|
enable_platform_ac3_eac3_audio = true \
|
|
enable_mse_mpeg2ts_stream_parser=true \
|
|
enable_platform_hevc=true \
|
|
use_system_libjpeg=true \
|
|
use_libjpeg_turbo=false \
|
|
enable_widevine=%{is_widevine} \
|
|
pdf_enable_xfa=true \
|
|
use_pulseaudio=true \
|
|
use_allocator="none" \
|
|
treat_warnings_as_errors=false \
|
|
fatal_linker_warnings=false \
|
|
use_aura=true \
|
|
use_libpci = true \
|
|
is_debug=false \
|
|
gtk_version=3 \
|
|
closure_compile=false \
|
|
is_clang=%{is_clang} \
|
|
clang_use_chrome_plugins=false \
|
|
clang_base_path="%{_prefix}" \
|
|
use_lld=%{is_lld} \
|
|
use_system_freetype=true \
|
|
use_system_harfbuzz=false \
|
|
use_system_libpng=true \
|
|
use_vaapi=%{is_vaapi} \
|
|
enable_dav1d_decoder=true enable_libaom_decoder=false \
|
|
v8_use_external_startup_data=false \
|
|
google_api_key="%{google_api_key}" \
|
|
google_default_client_id="%{google_default_client_id}" \
|
|
google_default_client_secret="%{google_default_client_secret}"
|
|
|
|
build/linux/unbundle/replace_gn_files.py --system-libraries %{system_gn_list}
|
|
third_party/libaddressinput/chromium/tools/update-strings.py
|
|
|
|
%if 0%{?clang}
|
|
export CC=clang
|
|
export CXX=clang++
|
|
export AR=ar
|
|
export NM=nm
|
|
|
|
export CFLAGS="$CFLAGS -stdlib=libc++ -Wno-unused-command-line-argument"
|
|
export CXXFLAGS="$CXXFLAGS -stdlib=libc++ -Wno-unused-command-line-argument"
|
|
# flags to fix i586 builds
|
|
export LDFLAGS="$LDFLAGS -Wl,-z,notext -pthread -stdlib=libc++"
|
|
%else
|
|
%setup_compile_flags
|
|
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//')
|
|
|
|
CFLAGS="$CFLAGS -Wno-error=pointer-to-int-cast -Wno-error=int-to-pointer-cast"
|
|
CXXFLAGS="$CXXFLAGS -Wno-error=attributes -Wno-error=comment -Wno-error=unused-variable -Wno-error=strict-overflow -Wno-error=deprecated-declarations"
|
|
%endif
|
|
|
|
python tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
|
|
|
|
out/Release/gn gen --args='%{gn_config}' out/Release
|
|
|
|
pushd out/Release
|
|
# widevinecdmadapter
|
|
# Build error with widevinecdmadapter in 67.0.3396.62
|
|
ninja %{_smp_mflags} chrome chrome_sandbox chromedriver
|
|
popd
|
|
|
|
%install
|
|
mkdir -p %{buildroot}%{_bindir}
|
|
mkdir -p %{buildroot}%{_crdir}/locales
|
|
mkdir -p %{buildroot}%{_crdir}/themes
|
|
mkdir -p %{buildroot}%{_crdir}/default_apps
|
|
install -m 755 %{SOURCE1} %{buildroot}%{_crdir}/chromium-wrapper
|
|
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
|
|
install -m 644 out/Release/*.pak %{buildroot}%{_crdir}/
|
|
install -m 644 out/Release/icudtl.dat %{buildroot}%{_crdir}/
|
|
|
|
install -m 644 out/Release/locales/*.pak %{buildroot}%{_crdir}/locales/
|
|
install -m 644 out/Release/resources.pak %{buildroot}%{_crdir}/
|
|
install -m 644 chrome/browser/resources/default_apps/* %{buildroot}%{_crdir}/default_apps/
|
|
install -m 755 out/Release/libEGL.so %{buildroot}%{_crdir}/
|
|
install -m 755 out/Release/libGLESv2.so %{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
|
|
|
|
cp -r out/Release/swiftshader %{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
|
|
|
|
find out/Release/resources/ -name "*.d" -exec rm {} \;
|
|
cp -r out/Release/resources %{buildroot}%{_crdir}
|
|
|
|
# desktop file
|
|
mkdir -p %{buildroot}%{_datadir}/applications
|
|
install -m 644 %{SOURCE2} %{buildroot}%{_datadir}/applications/
|
|
|
|
# icon
|
|
mkdir -p %{buildroot}%{_iconsdir}/hicolor/
|
|
tar xjf %{SOURCE100} -C %{buildroot}%{_iconsdir}/hicolor/
|
|
|
|
mkdir -p %{buildroot}%{_sysconfdir}/%{crname}
|
|
install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/%{crname}/
|
|
install -m 0644 %{SOURCE31} %{buildroot}%{_sysconfdir}/%{crname}/
|
|
|
|
#%if %{with gost}
|
|
#install -m0644 %{_gostsourcedir}/libgostssl.so %{buildroot}%{_crdir}/libgostssl.so
|
|
# Compatibility symlink: it is named gostssl.so in other builds of Chromium-GOST
|
|
# but it is common to prefix libraries with "lib"
|
|
#( cd %{buildroot}%{_crdir}/ && ln -s libgostssl.so gostssl.so )
|
|
# Disabled to prevent conflicts with chromium-gost RPMs
|
|
#( cd %{buildroot}%{_bindir}/ && ln -s %{crname} chromium-gost )
|
|
|
|
# Find all files and process them (idea from ALT)
|
|
#find %{buildroot}%{_crdir} -type f |
|
|
#while read f; do
|
|
# resolve symlinks
|
|
#t="$(readlink -ev "$f")"
|
|
#file "$t" | fgrep -qs ELF || continue
|
|
# Add real RPATH. We need RPATH in GOST builds because 'dlopen(libgostssl.so)'
|
|
# is performed, but libgostssl.so will not be found without RPATH.
|
|
# Here we could change chromium.path from chromium-gost so that it has
|
|
# an absolute path to "gostssl.so" instead of a relative one
|
|
# but it is strange to hardcode absolute paths to libraries and will
|
|
# break running our Chromium somewhere outside of standard locations.
|
|
#chrpath -r '%{_crdir}' "$t" ||:
|
|
#done
|
|
#%endif
|
|
|
|
find %{buildroot} -name "*.nexe" -exec strip {} \;
|