# 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 %if %{with gost} %define crname chromium-gost %define chromedriver chromedriver-gost %else %define crname chromium-browser %define chromedriver chromedriver %endif %define _crdir %{_libdir}/%{crname} %define _src %{_topdir}/SOURCES %define ffmpeg 1 %define icu 0 %define libva 0 %define clang 1 %define jsoncpp 0 %define sys_node 1 # 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 e3818b44e5b738666df02a4faa30025e8f70e4a9 %define msspi_commit 11be3c144405ac712432d172bca2863545f81fea %define _gostsourcedir %{_builddir}/chromium-gost %if ! %{with gost} Summary: A fast web browser based on the Blink engine Name: chromium-browser-stable Version: 77.0.3865.90 Release: 1 %else Summary: Chromium web-browser with patches to make GOST TLS work via CryptoPro Name: chromium-gost Version: 77.0.3865.90 Release: 1 %endif 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}/chromium-gost-%{chromium_gost_commit}.tar.gz Source1102: https://github.com/deemru/msspi/archive/%{msspi_commit}/msspi-%{msspi_commit}.tar.gz %endif 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 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 # ftp://mirror.yandex.ru/gentoo-portage/www-client/chromium/files/chromium-widevine-r4.patch Patch509: chromium-widevine-r4.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 Patch700: chromium-70.0.3538.77-no-system-nodejs.patch # Disable fontconfig cache magic that breaks remoting Patch717: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch Provides: %{crname} = %{EVRD} Conflicts: %{crname}-unstable Conflicts: %{crname}-beta 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 %if 0%{?sys_node} BuildRequires: nodejs %endif 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 Provides: %{crname} = %{EVRD} %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 %if %{with gost} %{_crdir}/libgostssl.so %{_crdir}/gostssl.so %endif %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-browser Summary: A fast web browser based on the Blink engine Epoch: 1 Group: Networking/WWW # No %%{EVRD} Requires: %{name} = %{version}-%{release} %description -n chromium-browser Chromium is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier. This is a transition package that installs the stable channel Chromium browser. If you prefer the dev channel browser, install the chromium-browser-unstable package instead. %files -n chromium-browser %endif #---------------------------------------------------------------------------- %package -n %{chromedriver} Summary: WebDriver for Google Chrome/Chromium Group: Development/Other # No %%{EVRD} Requires: %{name} = %{version}-%{release} %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} 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} patch -p1 < %{_gostsourcedir}/patch/chromium.patch ( 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' ) %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 %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 %patch509 -p1 %patch600 -p1 %patch601 -p1 %patch603 -p1 %patch604 -p1 %patch607 -p1 %patch627 -p1 %patch629 -p1 %patch631 -p1 -b .clang6 %if 0%{?sys_node} # %else %patch700 -p1 %endif %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/dmg_fp' \ '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/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/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/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/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 %if 0%{?sys_node} # 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 %else third_party/node/update_node_binaries third_party/node/update_npm_deps %endif %build %if %{with gost} make --file %{SOURCE1100} \ SDIR="%{_gostsourcedir}" \ OUTDIR="%{_gostsourcedir}" \ CC="%{__cc}" \ CXX="%{__cxx}" \ CFLAGS="%{optflags}" %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 # jumbo https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md # (Alzim) 1 - localhost, 0 - ABF build %define localhost 0 %if 0%{localhost} %define is_limit 100 %else %define is_limit 50 %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_ac3_eac3_audio_demuxing=true \ enable_mse_mpeg2ts_stream_parser=true \ enable_hevc_demuxing=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_jumbo_build = true \ jumbo_file_merge_limit = %{is_limit} \ use_lld=%{is_lld} \ use_system_freetype=true \ use_system_harfbuzz=false \ use_system_libpng=true \ use_vaapi=%{is_vaapi} \ 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 # flags to fix i586 builds export LDFLAGS="$LDFLAGS -Wl,-z,notext -pthread" %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/ 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 ) mv %{buildroot}%{_bindir}/chromedriver %{buildroot}%{_bindir}/%{chromedriver} # find all files 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 {} \;