# eu-strip crashes on chrome binary from this build %define _enable_debug_packages %{nil} %global debug_package %{nil} %global __debug_install_post %{nil} %define crname chromium-browser %define _crdir %{_libdir}/%{crname} %define __requires_exclude_from ^%{_crdir}/libwidevinecdmadapter.so$ # eol 'fix' corrupts some .bin %define dont_fix_eol 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 Name: chromium-browser-stable Version: 70.0.3538.67 Release: %mkrel 1 Summary: A fast webkit-based web browser Group: Networking/WWW License: BSD, LGPL URL: http://www.chromium.org/Home # http://omahaproxy.appspot.com/ # http://googlechromereleases.blogspot.com/ Source0: http://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{version}.tar.xz Source1: chromium-wrapper Source2: chromium-browser.desktop Source4: widevine_cdm_version.h.in # from gentoo: compiler setup Patch1: chromium-compiler-r4.patch # fix googleisms in man page Patch2: chromium-mageia.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) Recognize mimetypes for WMV (.wmv), FLV (.flv) and MPEG (.mpg) videos Patch7: chromium-40-wmvflvmpg.patch # (cjw) disable external components -- this stops chromium from downloading hotword stuff, for example Patch10: chromium-45-no-external-components.patch # (debian) disable third party cookies by default Patch11: chromium-third-party-cookies-off-by-default.patch # (cjw) fix webrtc build with system ffmpeg Patch18: chromium-50-system-ffmpeg-3.patch # (cjw) fix build error due to android-specific code Patch19: chromium-50-codec-warnings.patch # (cjw) remove assertion on "chromium" branding in combination with enabled "proprietary codecs" Patch22: chromium-54-proprietary-codecs-assert.patch # (cjw) disable werror for a compilation warning that causes the build to fail Patch23: chromium-53-bignum-werror-fix.patch # (cjw) add -Wno-error=depecated-declarations because ffmpeg deprecations cause the build to fail Patch24: chromium-53-ffmpeg-no-deprecation-errors.patch # (cjw) link several libraries directly instead of loading them using dlopen() Patch27: chromium-53-link-libgio-libpci-libudev-libbrlapi.patch # (cjw) add missing unbundle gn files (1) Patch28: chromium-53-gn-system-icu-jsoncpp.patch # (cjw) add missing unbundle gn files (2) Patch29: chromium-53-gn-system-opus.patch # (cjw) build pdfium with system libtiff and libpng Patch30: chromium-52-pdfium-system-libtiff-libpng.patch # (cjw) fix build with current glib... Patch36: chromium-58-glib.patch # (cjw) use system nodejs to fix build Patch37: chromium-58-system-nodejs.patch # Patch40: chromium-59-gcc5.patch # system libvpx Patch42: chromium-60-system-libvpx.patch # clang builtin subtract functions, scoped enum Patch47: chromium-61-gcc5.patch # enum compared with anonymous enum => warning Patch52: chromium-62-gcc5.patch # (cjw) fix coding errors resulting in gcc 7 warning Patch54: chromium-62-gcc7.patch # (cjw) fix gcc errors and warnings Patch177: chromium-64-gcc7.patch # (cjw) fix even more gcc warnings Patch179: chromium-65-gcc7.patch # (cjw) fix yet mmore gcc warnings Patch182: chromium-66-gcc7.patch # (cjw) try to get widevine binary plugin to work (must be taken from a chrome download bundle), v2 Patch183: chromium-67-widevine.patch # (cjw) fix a few more gcc warnings Patch184: chromium-67-gcc7.patch # (cjw) more gcc warnings Patch186: chromium-68-gcc7.patch # (cjw) moore gcc warnings Patch188: chromium-68-gcc8.patch # (cjw) and more gcc warnings Patch189: chromium-69-gcc7.patch # (cjw) fix gn bootstrapping with gcc Patch190: chromium-69-gn-bootstrap.patch # (cjw) mooore gcc warnings Patch191: chromium-69-gcc8.patch # (cjw) moooore gcc warnings Patch192: chromium-70-gcc8.patch # (cjw) build fixes for 64-bit arm Patch193: chromium-70-aarch64.patch # (cjw) add back support for gtk2 builds Patch194: chromium-70-gtk2.patch # (joequant) fix crash on cinnamon Patch195: chromium-69-cinnamon.patch # (cjw) fix build with harfbuzz 2.0 Patch196: chromium-70-harfbuzz-2.0.patch Provides: %{crname} Obsoletes: chromium-browser-unstable < 26.0.1410.51 Obsoletes: chromium-browser-beta < 26.0.1410.51 Obsoletes: chromium-browser < 1:9.0.597.94 BuildRequires: bison BuildRequires: flex BuildRequires: gperf BuildRequires: icu BuildRequires: ninja BuildRequires: yasm BuildRequires: bzip2-devel BuildRequires: cups-devel BuildRequires: elfutils-devel BuildRequires: ffmpeg-devel BuildRequires: glib2-devel BuildRequires: gtk2-devel BuildRequires: libatomic-devel #BuildRequires: libevent-devel BuildRequires: libmesagl-devel BuildRequires: libpam-devel BuildRequires: libpulseaudio-devel %if %mgaver >= 6 BuildRequires: nodejs %endif BuildRequires: osmesa-devel #BuildRequires: protobuf-devel BuildRequires: snappy-devel BuildRequires: perl(Switch) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(atk) BuildRequires: pkgconfig(dbus-glib-1) BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(flac) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(gnome-keyring-1) BuildRequires: pkgconfig(gnutls) %if %mgaver >= 7 BuildRequires: pkgconfig(harfbuzz) %endif BuildRequires: pkgconfig(icu-i18n) BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libexif) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libopenjp2) BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libtiff-4) BuildRequires: pkgconfig(libusb-1.0) %if %mgaver >= 7 BuildRequires: pkgconfig(libvpx) %endif BuildRequires: pkgconfig(libwebp) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libxslt) BuildRequires: pkgconfig(minizip) BuildRequires: pkgconfig(nspr) BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(speech-dispatcher) BuildRequires: pkgconfig(speex) BuildRequires: pkgconfig(udev) BuildRequires: pkgconfig(xscrnsaver) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(zlib) # Unused but building gn wants it to be present BuildRequires: pkgconfig(gconf-2.0) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: git ExclusiveArch: i586 x86_64 # aarch64 does not build without fewer than default parallel jobs config # armv5tl armv7hl %description Chromium is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier. For certain media playback features - AAC decoding - this package currently assumes decoder support is available, while that is only true if the 'tainted' variety of the libavcodec package is installed. When the 'core' variety of libavcodec is installed, chromium may output noise for AAC audio. %ifarch %{ix86} The i586 build of this package does not work on machines that do not support the SSE2 instruction set extension. %endif %package -n chromium-browser Summary: A fast webkit-based web browser (transition package) Epoch: 1 Group: Networking/WWW 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. %prep %setup -q -n chromium-%{version} %autopatch -p1 # files we do not want from upstream source bundles rm -rf breakpad/src/processor/testdata/ rm -rf chrome/app/test_data/dlls/ rm -rf chrome/common/extensions/docs/ rm -rf chrome/test/data/{android,app_shim,apptest,ash,autofill,automation,automation_proxy_snapshot,banners,bookmark_html_reader,bookmarks,captive_portal,chromedriver,chrome_endure,chromeos,chromeproxy,cld2_component,click_modifier,components,constrained_files,content,content_setting_bubble,devtools,diagnostics,dom_automation,dom_checker,dom_distiller,downloads,drive_first_run,dromaeo,durable,edge_database_reader,edge_profile,encoding_tests,extensions,fast_shutdown,fast_tab_close,favicon,feeds,file_select_helper,find_in_page,firefox320_profile,firefox35_profile,firefox3_nss,firefox3_nss_mac,firefox3_profile,firefox_profile,firefox_searchplugins,focus,frame_dom_access,frame_tree,ftp,fullscreen_mouselock,geolocation,google,gpu,History,image_decoding,image_search,import,indexeddb,inspector,installer,interstitial_page,keyboard,login,native_messaging,navigation_interception,notifications,page_cycler,page_load_metrics,panels,password,pdf,pepper,perf,permissions,plugin_power_saver,policy,popup_blocker,predictor,prefs,pref_service,prerender,printing,profiles,push_messaging,referrer_policy,requirements_checker,safe_browsing,SafeBrowsing,save_page,scroll,sdch,search,session_history,session_restore,sessions,settings,speech,ssl,subresource_filter,sunspider,sync,template_url_scraper,textinput,third_party,top_sites,translate,unit,v8_benchmark_v6,viewsource,web_app_info,webapps,webrtc,websocket,webui_test_resources.grd,whitelists,workers} rm -rf chrome/test/data/nacl/{pnacl_error_handling,cross_origin,irt_exception,pnacl_request_header,nonsfi,pnacl_url_loader,pnacl_hw_eh_disabled,pnacl_nmf_options,pnacl_dyncode_syscall_disabled,extension_mime_handler,ppapi_test_lib,bad,ppapi,ppapi/ppb_instance,ppapi/ppp_instance,ppapi/ppb_core,manifest,manifest/mdir,manifest/ndir,pnacl_debug_url,nacl_test_data.gyp,extension_validation_cache,exit_status,progress_events,manifest_file,sysconf_nprocessors_onln,crash,pnacl_mime_type} rmdir chrome/test/data/webui/{settings,extensions}/a11y rmdir chrome/test/data/webui/{engagement,extensions,media_router,print_preview,cr_elements,settings,md_bookmarks,md_downloads,md_history,md_user_manager,net_internals} rm -rf chrome/tools/test/reference_build/chrome_linux/ rm -rf components/test/data/component_updater/jebgalgnebhfojomionfpkfelancnnkf/component1.dll rm -rf content/test/data/ #rm -rf net/data/ # v the root BUILD.gn includes files from this dir #rm -rf ppapi/examples/ rm -rf ppapi/native_client/tests/ rm -rf third_party/apache-win32/ rm -rf third_party/binutils/ rm -rf third_party/expat/files/ rm -rf third_party/ffmpeg/*/* rm -rf third_party/ffmpeg/*.[ch] rm -rf third_party/flac/{include,src} #rm -rf third_party/freetype/{src,include} rm -rf third_party/icu/{android,linux,mac,patches,public,source,windows} rm -rf third_party/jsoncpp/source rm -rf third_party/lcov #rm -rf base/third_party/libevent/*/* #rm -rf base/third_party/libevent/*.[ch] %if %mgaver >= 7 rm -rf third_party/libvpx/source/{libvpx,config} %endif rm -rf third_party/libexif/sources rm -rf third_party/libjpeg/*.[ch] rm -rf third_party/libjpeg_turbo/*.[ch] rm -rf third_party/libpng/*.[ch] rm -rf third_party/libxslt/{libexslt,libxslt,linux,mac,win32} #rm -rf third_party/mesa/src/src rm -rf third_party/swig rm -rf third_party/WebKit/LayoutTests/ rm -rf third_party/WebKit/Tools/Scripts/ rm -rf third_party/xdg-utils/tests/ rm -rf third_party/yasm/source/ rm -rf third_party/zlib/{*.[ch],contrib/minizip} rm -rf tools/gyp/test/ #rm -rf v8/test/ rm -f third_party/pdfium/third_party/libjpeg/*.[ch] rm -f third_party/pdfium/third_party/libopenjpeg20/*.[ch] rm -rf third_party/pdfium/third_party/libpng16 rm -f third_party/pdfium/third_party/libtiff/*.[ch] rm -rf third_party/pdfium/third_party/zlib_v128 rm -f third_party/skia/platform_tools/android/apps/gradle/wrapper/gradle-wrapper.jar rm -f third_party/WebKit/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar rm -f third_party/WebKit/Source/devtools/scripts/closure/compiler.jar rm -f third_party/WebKit/Source/devtools/scripts/compiler-runner/closure-runner.jar rm -rf third_party/sfntly/src/java/lib rm -f third_party/haha/haha-2.0.2.jar rm -f third_party/android_platform/webview/frameworks_5.1.0_r1.jar rm -f third_party/android_platform/webview/frameworks_6.0.jar rm -f third_party/libphonenumber/dist/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar rm -f third_party/libphonenumber/dist/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar rm -rf third_party/libphonenumber/dist/java/demo/war/WEB-INF/lib rm -rf third_party/libphonenumber/dist/java/lib rm -f third_party/webrtc/examples/androidapp/third_party/autobanh/autobanh.jar rm -rf third_party/cacheinvalidation/src/example-app-build/libs rm -f third_party/closure_compiler/runner/runner.jar rm -f third_party/closure_compiler/compiler/compiler.jar rm -rf third_party/proguard/lib rm -f third_party/checkstyle/checkstyle-6.5-all.jar rm -rf third_party/sfntly/src/cpp/ext # 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 -re 's/char\s*\*(.*)getenv\("CHROME_VERSION_EXTRA"\)/char const *\1"%{product_vendor} %{product_version}"/' $FILE cmp $FILE $FILE.orig && exit 1 # version taken from: strings opt/google/chrome-unstable/chrome | grep -C 1 " (version:" %define widevine_version 1.4.8.1008 for chrome_arch in ia32 x64; do mkdir -p third_party/widevine/cdm/linux/${chrome_arch} sed -e "s/@WIDEVINE_VERSION@/%{widevine_version}/" %{SOURCE4} > third_party/widevine/cdm/linux/${chrome_arch}/widevine_cdm_version.h done %build %if %mgaver >= 7 %define system_gn_list ffmpeg flac libwebp libxml libxslt snappy yasm libvpx libpng icu zlib jsoncpp opus libdrm %else %define system_gn_list ffmpeg flac libwebp libxml libxslt snappy yasm libpng icu zlib jsoncpp opus libdrm freetype %endif # handled by upstream regular build scripts? : freetype harfbuzz-ng # libevent mesa # 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=true \ custom_toolchain="//build/toolchain/linux/unbundle:default" \ host_toolchain="//build/toolchain/linux/unbundle:default" \ proprietary_codecs=true \ linux_link_libudev = true \ linux_link_libspeechd = 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=true \ pdf_enable_xfa=true \ use_pulseaudio=true \ use_allocator="none" \ gtk_version=2 \ fatal_linker_warnings=false \ use_libpci = true \ is_debug=false \ is_clang=false \ use_system_freetype=true \ use_system_harfbuzz=true \ use_system_libpng=true \ use_custom_libcxx=false \ google_api_key="%{google_api_key}" \ google_default_client_id="%{google_default_client_id}" \ google_default_client_secret="%{google_default_client_secret}" # enable_browser_cdms=true \ build/linux/unbundle/replace_gn_files.py --system-libraries %{system_gn_list} third_party/libaddressinput/chromium/tools/update-strings.py %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 -g from CFLAGS and CXXFLAGS to fix builds CFLAGS=$(echo "$CFLAGS"|sed -e 's/-g //') CXXFLAGS=$(echo "$CXXFLAGS"|sed -e 's/-g //') CXXFLAGS="$CXXFLAGS -Wno-attributes -Wno-error=class-memaccess" %ifarch %{ix86} CFLAGS="$CFLAGS -msse2" CXXFLAGS="$CXXFLAGS -msse2" %endif python tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}' out/Release/gn gen --args='%{gn_config}' out/Release pushd out/Release ninja %{_smp_mflags} chrome chrome_sandbox popd # man page sed -e "s/@@PACKAGE@@/chromium/" -e "s/@@MENUNAME@@/Chromium Web Browser/" chrome/app/resources/manpage.1.in >out/Release/chromium.1 %install ls out/Release mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_crdir}/locales mkdir -p %{buildroot}%{_crdir}/themes mkdir -p %{buildroot}%{_crdir}/default_apps mkdir -p %{buildroot}%{_mandir}/man1 install -m 755 %{_sourcedir}/chromium-wrapper %{buildroot}%{_crdir}/ install -m 755 out/Release/chrome %{buildroot}%{_crdir}/ install -m 4755 out/Release/chrome_sandbox %{buildroot}%{_crdir}/chrome-sandbox install -m 644 out/Release/chromium.1 %{buildroot}%{_mandir}/man1/%{crname}.1 install -m 644 out/Release/chrome_100_percent.pak %{buildroot}%{_crdir}/ install -m 644 out/Release/chrome_200_percent.pak %{buildroot}%{_crdir}/ install -m 644 out/Release/resources.pak %{buildroot}%{_crdir}/ install -m 644 out/Release/natives_blob.bin %{buildroot}%{_crdir}/ install -m 644 out/Release/snapshot_blob.bin %{buildroot}%{_crdir}/ install -m 755 out/Release/mksnapshot %{buildroot}%{_crdir}/ install -m 644 out/Release/locales/*.pak %{buildroot}%{_crdir}/locales/ install -m 644 chrome/browser/resources/default_apps/* %{buildroot}%{_crdir}/default_apps/ install -m 644 out/Release/v8_context_snapshot.bin %{buildroot}%{_crdir}/ ln -s %{_crdir}/chromium-wrapper %{buildroot}%{_bindir}/%{crname} %ifarch %{ix86} x86_64 mkdir -p %{buildroot}%{_crdir}/swiftshader install -m 755 out/Release/swiftshader/*.so %{buildroot}%{_crdir}/swiftshader/ %endif 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 %{_sourcedir}/%{crname}.desktop %{buildroot}%{_datadir}/applications/ # symlink to ICU data file ICUDATADIR=$(icuinfo | grep \"icudata.path\" | sed -re 's/^.*>(.*)<.*$/\1/') ICUDATANAME=$(icuinfo | grep \"icudata.name\" | sed -re 's/^.*>(.*)<.*$/\1/') ICUDATAFILE=$(realpath --relative-to=%{_crdir}/ ${ICUDATADIR}/${ICUDATANAME}.dat) ln -s ${ICUDATAFILE} %{buildroot}%{_crdir}/icudtl.dat # icon for i in 22 24 48 64 128 256; do mkdir -p %{buildroot}%{_iconsdir}/hicolor/${i}x${i}/apps install -m 644 chrome/app/theme/chromium/product_logo_$i.png \ %{buildroot}%{_iconsdir}/hicolor/${i}x${i}/apps/%{crname}.png done for i in 16 32; do mkdir -p %{buildroot}%{_iconsdir}/hicolor/${i}x${i}/apps install -m 644 chrome/app/theme/default_100_percent/chromium/product_logo_$i.png \ %{buildroot}%{_iconsdir}/hicolor/${i}x${i}/apps/%{crname}.png done %files -n chromium-browser %files %{_bindir}/%{crname} %dir %{_crdir} %{_crdir}/chromium-wrapper %{_crdir}/chrome %attr(4755,root,root) %{_crdir}/chrome-sandbox %{_crdir}/icudtl.dat %{_crdir}/locales %{_crdir}/natives_blob.bin %{_crdir}/snapshot_blob.bin %{_crdir}/chrome_100_percent.pak %{_crdir}/chrome_200_percent.pak %{_crdir}/resources.pak %{_crdir}/resources %{_crdir}/mksnapshot %{_crdir}/themes %{_crdir}/default_apps %ifarch %{ix86} x86_64 %{_crdir}/swiftshader %endif %{_crdir}/v8_context_snapshot.bin %{_mandir}/man1/%{crname}* %{_datadir}/applications/*.desktop %{_iconsdir}/hicolor/*/apps/%{crname}.png