[chromium-freeworld: 148/148] Merge Fedora, chromium-60.0.3112.101-1
by Miro Hrončok
commit f02ee82a02833e0cbad6dee242f4f526092aa463
Merge: 4675b5a 5922b5c
Author: Miro Hrončok <miro(a)hroncok.cz>
Date: Sat Aug 26 12:53:26 2017 +0200
Merge Fedora, chromium-60.0.3112.101-1
.gitignore | 30 +
chrome-remote-desktop@.service | 14 +
chromium-45.0.2454.101-linux-path-max.patch | 44 +
chromium-46.0.2490.71-gcc5.patch | 354 +++
chromium-46.0.2490.71-notest.patch | 11 +
chromium-46.0.2490.86-use_system_opus.patch | 12 +
...7.0.2526.80-nacl-ignore-broken-fd-counter.patch | 27 +
chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch | 11 +
chromium-48.0.2564.103-gcc6.patch | 204 ++
...0.2564.116-libusb_interrupt_event_handler.patch | 15 +
chromium-50.0.2661.86-addrfix.patch | 11 +
chromium-50.0.2661.94-unbundle-re2-fix.patch | 12 +
...mium-52.0.2723.2-PNGImageDecoder-fix-cast.patch | 12 +
chromium-52.0.2723.2-sync_link_zlib.patch | 11 +
...m-icu-54-does-not-have-detectHostTimeZone.patch | 12 +
chromium-52.0.2723.2-use_system_harfbuzz.patch | 12 +
chromium-52.0.2743.116-unset-madv_free.patch | 15 +
chromium-52.0.2743.82-arm-icu-fix.patch | 12 +
chromium-52.0.2743.82-arm-webrtc.patch | 51 +
chromium-52.0.2743.82-cups22.patch | 47 +
chromium-52.0.2743.82-master-prefs-path.patch | 15 +
chromium-52.0.2743.82-more-codec-aliases.patch | 15 +
chromium-52.0.2743.82-sandbox-pie.patch | 15 +
chromium-53.0.2785.101-crrev-415028.patch | 142 ++
chromium-53.0.2785.92-boringssl-time-fix.patch | 11 +
chromium-53.0.2785.92-gn-system.patch | 252 ++
chromium-53.0.2785.92-last-commit-position.patch | 28 +
chromium-54.0.2840.59-arm-icu-fix.patch | 12 +
chromium-54.0.2840.59-gcc5.patch | 354 +++
chromium-54.0.2840.59-gn-system.patch | 223 ++
chromium-54.0.2840.59-i686-ld-memory-tricks.patch | 12 +
chromium-54.0.2840.59-jpeg-include-dir.patch | 11 +
chromium-54.0.2840.59-nullfix.patch | 35 +
...4.0.2840.90-aura-browser-link-to-snapshot.patch | 11 +
chromium-54.0.2840.90-setopaque.patch | 13 +
chromium-55.0.2883.75-addrfix.patch | 11 +
chromium-55.0.2883.75-cups22.patch | 29 +
chromium-55.0.2883.75-gcc5.patch | 354 +++
chromium-55.0.2883.75-more-codec-aliases.patch | 15 +
chromium-55.0.2883.75-sandbox-pie.patch | 30 +
chromium-55.0.2883.75-use_system_harfbuzz.patch | 12 +
chromium-55.0.2883.87-rvalue-fix.patch | 17 +
chromium-56.0.2924.87-fpermissive.patch | 13 +
chromium-56.0.2924.87-gcc5.patch | 354 +++
chromium-56.0.2924.87-gcc7.patch | 82 +
chromium-58.0.3029.81-enable-mp3.patch | 144 ++
chromium-58.0.3029.81-ffmpeg-stdatomic.patch | 14 +
chromium-58.0.3029.81-fix-gn.patch | 11 +
chromium-58.0.3029.81-use_system_harfbuzz.patch | 12 +
...-b794998819088f76b4cf44c8db6940240c563cf4.patch | 19 +
chromium-59.0.3071.115-ucontext-fix.patch | 214 ++
chromium-59.0.3071.86-dma-buf-header-hack.patch | 13 +
chromium-59.0.3071.86-enable-mp3.patch | 477 ++++
chromium-59.0.3071.86-ffmpeg-stdatomic.patch | 17 +
chromium-59.0.3071.86-gcc7.patch | 81 +
chromium-59.0.3071.86-i686-ld-memory-tricks.patch | 12 +
chromium-59.0.3071.86-nullfix.patch | 43 +
chromium-59.0.3071.86-setopaque.patch | 12 +
chromium-59.0.3071.86-system-clang.patch | 10 +
chromium-60.0.3112.101-camfix.patch | 25 +
chromium-60.0.3112.78-enable-mp3.patch | 479 ++++
chromium-60.0.3112.78-fix-gn-bootstrap.patch | 11 +
chromium-60.0.3112.78-gcc7.patch | 80 +
chromium-60.0.3112.78-gn-system.patch | 221 ++
chromium-60.0.3112.78-gtk2fix.patch | 612 +++++
chromium-60.0.3112.78-jpeg-nomangle.patch | 14 +
chromium-60.0.3112.78-last-commit-position.patch | 28 +
chromium-60.0.3112.78-no-libpng-prefix.patch | 17 +
chromium-60.0.3112.78-no-zlib-mangle.patch | 13 +
chromium-60.0.3112.90-init-list-hack.patch | 27 +
chromium-60.0.3112.90-vulkan-force-c99.patch | 11 +
chromium-browser.appdata.xml | 38 +
chromium-browser.desktop | 357 +++
chromium-browser.sh | 57 +
chromium-browser.xml | 18 +
chromium-freeworld.spec | 2455 ++++++++++++++++++++
chromium-latest.py | 337 +++
clean_ffmpeg.sh | 308 +++
get_free_ffmpeg_source_files.py | 78 +
get_linux_tests_names.py | 121 +
master_preferences | 17 +
sources | 3 +
82 files changed, 9389 insertions(+)
---
diff --cc .gitignore
index e69de29,428fd64..c225616
--- a/.gitignore
+++ b/.gitignore
@@@ -1,0 -1,29 +1,30 @@@
+ /chromium-52.0.2743.75-clean.tar.xz
+ /depot_tools.git-master.tar.gz
+ /policy_templates.zip
+ /chromium-52.0.2743.82-clean.tar.xz
+ /chromium-52.0.2743.116-clean.tar.xz
+ /chromium-53.0.2785.92-clean.tar.xz
+ /chromium-53.0.2785.101-clean.tar.xz
+ /chromium-53.0.2785.113-clean.tar.xz
+ /chromium-53.0.2785.116-clean.tar.xz
+ /chromium-53.0.2785.143-clean.tar.xz
+ /chromium-54.0.2840.59-clean.tar.xz
+ /chromium-54.0.2840.71-clean.tar.xz
+ /chromium-54.0.2840.90-clean.tar.xz
+ /chromium-54.0.2840.100.tar.xz
+ /chromium-54.0.2840.100-clean.tar.xz
+ /chromium-55.0.2883.75-clean.tar.xz
+ /chromium-55.0.2883.87-clean.tar.xz
+ /chromium-56.0.2924.87-clean.tar.xz
+ /chromium-57.0.2987.110-clean.tar.xz
+ /chromium-57.0.2987.133-clean.tar.xz
+ /chromium-58.0.3029.81-clean.tar.xz
+ /chromium-58.0.3029.110-clean.tar.xz
+ /chromium-59.0.3071.86-clean.tar.xz
+ /chromium-59.0.3071.104-clean.tar.xz
+ /chromium-59.0.3071.109-clean.tar.xz
+ /chromium-59.0.3071.115-clean.tar.xz
+ /chromium-59.0.3071.109-freetype.tar.bz2
+ /chromium-60.0.3112.90-clean.tar.xz
+ /chromium-60.0.3112.101-clean.tar.xz
++/chromium-60.0.3112.101.tar.xz
diff --cc chromium-freeworld.spec
index 0000000,c99bb84..0fc838b
mode 000000,100644..100644
--- a/chromium-freeworld.spec
+++ b/chromium-freeworld.spec
@@@ -1,0 -1,2455 +1,2455 @@@
+ # NEVER EVER EVER turn this on in official builds
-%global freeworld 0
++%global freeworld 1
+ %if %{freeworld}
+ %global lsuffix freeworld
+ %else
+ %global lsuffix fedora
+ %endif
+
+ # Leave this alone, please.
+ %global target out/Release
+ %global headlesstarget out/Headless
+
+ # Debuginfo packages aren't very useful here. If you need to debug
+ # you should do a proper debug build (not implemented in this spec yet)
+ %global debug_package %{nil}
+
+ # %%{nil} for Stable; -beta for Beta; -dev for Devel
+ # dash in -beta and -dev is intentional !
+ %global chromium_channel %{nil}
+ %global chromium_browser_channel chromium-browser%{chromium_channel}
+ %global chromium_path %{_libdir}/chromium-browser%{chromium_channel}
+ %global crd_path %{_libdir}/chrome-remote-desktop
+ %global tests 0
+
+ # We don't want any libs in these directories to generate Provides
+ # Requires is trickier.
+
+ %global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so
+ %global privlibs libaccessibility|libanimation|libaura_extra|libaura|libbase_i18n|libbase|libbindings|libblink_android_mojo_bindings_shared|libblink_core|libblink_modules|libblink_mojo_bindings_shared|libblink_offscreen_canvas_mojo_bindings_shared|libblink_platform|libblink_web|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcc_animation|libcc_base|libcc_blink|libcc_debug|libcc_ipc|libcc_paint|libcc|libcc_surfaces|libcdm_manager|libchromium_sqlite3|libclearkeycdm|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent_common_mojo_bindings_shared|libcontent|libcpp|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_gamepad|libdevices|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevice_vr_mojo_bindings|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay_compositor|libdisplay|libdisplay_types|libdisplay_util|l
ibdomain_reliability|libEGL|libembedder|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents|libevents_x|libffmpeg|libfingerprint|libframe_sinks|libgcm|libgeneric_sensor_public_interfaces_shared|libgeneric_sensor|libgeolocation|libgeometry_skia|libgeometry|libgesture_detection|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_ipc|libgfx|libgfx_x11|libgin_features|libgin|libgles2_c_lib|libgles2_implementation|libgles2_utils|libGLESv2|libgl_init|libgl_in_process_context|libgl_wrapper|libgpu|libgtk2ui|libheadless|libicui18n|libicuuc|libipc_mojom_shared|libipc_mojom|libipc|libjs|libkeyboard|libkeyboard_with_content|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libmanager|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmedia|libmessage_center|libmidi|libmirclient.9|libmojo_common_lib|libmojo_ime_lib|libmojo_public_system_cpp|libmojo_public_system|libmojo_system_impl|libnative_theme|libnet|libnet_with_v8|libonc|libosmesa|libplatform|libpol
icy_component|libpolicy_proto|libpower_save_blocker|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libresource_coordinator_cpp|libresource_coordinator_public_interfaces_internal_shared|libsandbox_services|libseccomp_bpf|libsensors|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom_blink|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_constants|libservice_manager_mojom_shared|libservice_manager_mojom|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libui_base_ime|libui_base|libui_base_x|libui_data_pack|libui_touch_selection|libui_views_mus_lib|liburl_ipc|liburl_matcher|liburl|libuser_manager|libuser_prefs|libv8_libbase|libv8_libplatform|libv8|libviews|libVkLayer_core_validation|libVkL
ayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_swapchain|libVkLayer_threading|libVkLayer_unique_objects|libwebdata_common|libweb_dialogs|libwebview|libwidevinecdmadapter|libwidevinecdm|libwm|libwtf|libx11_events_platform|libx11_window
+ %global __requires_exclude ^(%{privlibs})\\.so
+
+ # Try to not use the Xvfb as it is slow..
+ %global tests_force_display 0
+ # If we build with shared on, then chrome-remote-desktop depends on chromium libs.
+ # If we build with shared off, then users cannot swap out libffmpeg (and i686 gets a lot harder to build)
+ %global shared 1
+ # We should not need to turn this on. The app in the webstore _should_ work.
+ %global build_remoting_app 0
+
+ # AddressSanitizer mode
+ # https://www.chromium.org/developers/testing/addresssanitizer
+ %global asan 0
+
+ # nacl/pnacl are soon to be dead. We're just killing them off early.
+ %global killnacl 1
+
+ %if 0%{?killnacl}
+ %global nacl 0
+ %global nonacl 1
+ %else
+ # TODO: Try arm (nacl disabled)
+ %if 0%{?fedora}
+ %ifarch i686
+ %global nacl 0
+ %global nonacl 1
+ %else
+ %global nacl 1
+ %global nonacl 0
+ %endif
+ %endif
+ %endif
+
+ %if 0
+ # Chromium's fork of ICU is now something we can't unbundle.
+ # This is left here to ease the change if that ever switches.
+ BuildRequires: libicu-devel >= 5.4
+ %global bundleicu 0
+ %else
+ %global bundleicu 1
+ %endif
+
+ %global bundlere2 1
+
+ # The libxml_utils code depends on the specific bundled libxml checkout
+ # which is not compatible with the current code in the Fedora package as of
+ # 2017-06-08.
+ %global bundlelibxml 1
+
+ # Chromium breaks on wayland, hidpi, and colors with gtk3 enabled.
+ %global gtk3 0
+
+ %if 0%{?rhel} == 7
+ %global bundleopus 1
+ %global bundlelibusbx 1
+ %global bundleharfbuzz 1
+ %global bundlelibwebp 1
+ %else
+ %global bundleharfbuzz 0
+ %global bundleopus 1
+ %global bundlelibusbx 0
+ %global bundlelibwebp 0
+ %endif
+
+ # Needs at least harfbuzz 1.4.2 now.
+ # 2017-06-12
+ %if 0%{?fedora} < 26
+ %global bundleharfbuzz 1
+ %else
+ %global bundleharfbuzz 0
+ %endif
+
+ ### Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+ ### Note: These are for Fedora use ONLY.
+ ### For your own distribution, please get your own set of keys.
+ ### http://lists.debian.org/debian-legal/2013/11/msg00006.html
+ %global api_key AIzaSyDUIXvzVrt5OkVsgXhQ6NFfvWlA44by-aw
+ %global default_client_id 449907151817.apps.googleusercontent.com
+ %global default_client_secret miEreAep8nuvTdvLums6qyLK
+ %global chromoting_client_id 449907151817-8vnlfih032ni8c4jjps9int9t86k546t.apps.googleusercontent.com
+
+ %global majorversion 60
+
+ %if %{freeworld}
+ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
+ %else
+ Name: chromium%{chromium_channel}
+ %endif
+ Version: %{majorversion}.0.3112.101
+ Release: 1%{?dist}
+ Summary: A WebKit (Blink) powered web browser
+ Url: http://www.chromium.org/Home
+ License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
+
+ ### Chromium Fedora Patches ###
+ Patch0: chromium-56.0.2924.87-gcc5.patch
+ Patch1: chromium-45.0.2454.101-linux-path-max.patch
+ Patch2: chromium-55.0.2883.75-addrfix.patch
+ Patch4: chromium-46.0.2490.71-notest.patch
+ # In file included from ../linux/directory.c:21:
+ # In file included from ../../../../native_client/src/nonsfi/linux/abi_conversion.h:20:
+ # ../../../../native_client/src/nonsfi/linux/linux_syscall_structs.h:44:13: error: GNU-style inline assembly is disabled
+ # __asm__ __volatile__("mov %%gs, %0" : "=r"(gs));
+ # ^
+ # 1 error generated.
+ Patch6: chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+ # Ignore broken nacl open fd counter
+ Patch7: chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+ # Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
+ Patch9: chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
+ # Ignore deprecations in cups 2.2
+ # https://bugs.chromium.org/p/chromium/issues/detail?id=622493
+ Patch12: chromium-55.0.2883.75-cups22.patch
+ # Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
+ Patch15: chromium-55.0.2883.75-sandbox-pie.patch
+ # Enable ARM CPU detection for webrtc (from archlinux via Russian Fedora)
+ Patch16: chromium-52.0.2743.82-arm-webrtc.patch
+ # Use /etc/chromium for master_prefs
+ Patch18: chromium-52.0.2743.82-master-prefs-path.patch
+ # Disable MADV_FREE (if set by glibc)
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1361157
+ Patch19: chromium-52.0.2743.116-unset-madv_free.patch
+ # Use gn system files
+ Patch20: chromium-60.0.3112.78-gn-system.patch
+ # Fix last commit position issue
+ # https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/7nlJv486bD4
+ Patch21: chromium-60.0.3112.78-last-commit-position.patch
+ # Fix issue where timespec is not defined when sys/stat.h is included.
+ Patch22: chromium-53.0.2785.92-boringssl-time-fix.patch
+ # I wouldn't have to do this if there was a standard way to append extra compiler flags
+ Patch24: chromium-59.0.3071.86-nullfix.patch
+ # Add explicit includedir for jpeglib.h
+ Patch25: chromium-54.0.2840.59-jpeg-include-dir.patch
+ # On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
+ Patch26: chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+ # obj/content/renderer/renderer/child_frame_compositing_helper.o: In function `content::ChildFrameCompositingHelper::OnSetSurface(cc::SurfaceId const&, gfx::Size const&, float, cc::SurfaceSequence const&)':
+ # /builddir/build/BUILD/chromium-54.0.2840.90/out/Release/../../content/renderer/child_frame_compositing_helper.cc:214: undefined reference to `cc_blink::WebLayerImpl::setOpaque(bool)'
+ Patch27: chromium-59.0.3071.86-setopaque.patch
+ # Use -fpermissive to build WebKit
+ Patch31: chromium-56.0.2924.87-fpermissive.patch
+ # Fix issue with compilation on gcc7
+ # Thanks to Ben Noordhuis
+ Patch33: chromium-60.0.3112.78-gcc7.patch
+ # Enable mp3 support
+ Patch34: chromium-60.0.3112.78-enable-mp3.patch
+ # Revert https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8...
+ # https://bugs.chromium.org/p/chromium/issues/detail?id=712737
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1446851
+ Patch36: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
+ # Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
+ Patch37: chromium-59.0.3071.86-ffmpeg-stdatomic.patch
+ # Nacl can't die soon enough
+ Patch39: chromium-59.0.3071.86-system-clang.patch
+ # Change struct ucontext to ucontext_t in breakpad
+ # https://patchwork.openembedded.org/patch/141358/
+ Patch40: chromium-59.0.3071.115-ucontext-fix.patch
+ # Fix gn bootstrap. Not convinced anyone at Google ever tries to build Chromium from source.
+ Patch41: chromium-60.0.3112.78-fix-gn-bootstrap.patch
+ # Do not prefix libpng functions
+ Patch42: chromium-60.0.3112.78-no-libpng-prefix.patch
+ # Do not mangle libjpeg
+ Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
+ # Fix gtk2 build by applying these changes
+ # https://chromium.googlesource.com/chromium/src.git/+/804fd4ab5e41584d61c4...
+ # https://chromium.googlesource.com/chromium/src.git/+/4313334bead373b139ee...
+ # https://chromium.googlesource.com/chromium/src.git/+/ca407201886875966db9...
+ # This probably will not be needed with 61+
+ Patch44: chromium-60.0.3112.78-gtk2fix.patch
+ # Do not mangle zlib
+ Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
+ # Apply these changes to work around EPEL7 compiler issues
+ Patch46: chromium-60.0.3112.90-init-list-hack.patch
+ Patch47: chromium-60.0.3112.90-vulkan-force-c99.patch
+ # https://chromium.googlesource.com/chromium/src/+/9c77470ff34bac937ceb765a...
+ Patch48: chromium-60.0.3112.101-camfix.patch
+
+ ### Chromium Tests Patches ###
+ Patch100: chromium-46.0.2490.86-use_system_opus.patch
+ Patch101: chromium-58.0.3029.81-use_system_harfbuzz.patch
+
+ # Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
+ # http://build.chromium.org/buildbot/official/
+ # For Chromium Fedora use chromium-latest.py --stable --ffmpegclean --ffmpegarm
+ # If you want to include the ffmpeg arm sources append the --ffmpegarm switch
+ # https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+ %if %{freeworld}
+ Source0: https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+ %else
+ Source0: chromium-%{version}-clean.tar.xz
+ %endif
+ %if 0%{tests}
+ Source1: https://commondatastorage.googleapis.com/chromium-browser-official/chromi...
+ %endif
+ # https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive...
+ Source2: depot_tools.git-master.tar.gz
+ Source3: chromium-browser.sh
+ Source4: %{chromium_browser_channel}.desktop
+ # Also, only used if you want to reproduce the clean tarball.
+ Source5: clean_ffmpeg.sh
+ Source6: chromium-latest.py
+ Source7: get_free_ffmpeg_source_files.py
+ # Get the names of all tests (gtests) for Linux
+ # Usage: get_linux_tests_name.py chromium-%%{version} --spec
+ Source8: get_linux_tests_names.py
+ # GNOME stuff
+ Source9: chromium-browser.xml
+ Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip
+ Source11: chrome-remote-desktop@.service
+ Source13: master_preferences
+
+ # We can assume gcc and binutils.
+ BuildRequires: gcc-c++
+
+ BuildRequires: alsa-lib-devel
+ BuildRequires: atk-devel
+ BuildRequires: bison
+ BuildRequires: cups-devel
+ BuildRequires: dbus-devel
+ BuildRequires: desktop-file-utils
+ BuildRequires: expat-devel
+ BuildRequires: flex
+ BuildRequires: fontconfig-devel
+ BuildRequires: GConf2-devel
+ BuildRequires: glib2-devel
+ BuildRequires: gnome-keyring-devel
+ BuildRequires: gtk2-devel
+ # Yes. This too.
+ # BuildRequires: gtk3-devel
+ BuildRequires: glibc-devel
+ BuildRequires: gperf
+ BuildRequires: libatomic
+ BuildRequires: libcap-devel
+ BuildRequires: libdrm-devel
+ BuildRequires: libgcrypt-devel
+ BuildRequires: libudev-devel
+ BuildRequires: libusb-devel
+ BuildRequires: libXdamage-devel
+ BuildRequires: libXScrnSaver-devel
+ BuildRequires: libXtst-devel
+ BuildRequires: minizip-devel
+ BuildRequires: nodejs
+ BuildRequires: nss-devel
+ BuildRequires: pciutils-devel
+ BuildRequires: pulseaudio-libs-devel
+ %if 0%{?tests}
+ BuildRequires: pam-devel
+ # Tests needs X
+ BuildRequires: Xvfb
+ BuildRequires: liberation-sans-fonts
+ # For sandbox initialization
+ BuildRequires: sudo
+ %endif
+
+ # for /usr/bin/appstream-util
+ BuildRequires: libappstream-glib
+
+ # Fedora turns on NaCl
+ # NaCl needs these
+ BuildRequires: libstdc++-devel, openssl-devel
+ %if 0%{?nacl}
+ BuildRequires: nacl-gcc, nacl-binutils, nacl-newlib
+ BuildRequires: nacl-arm-gcc, nacl-arm-binutils, nacl-arm-newlib
+ # pNaCl needs this monster
+ # It's possible that someday this dep will stabilize, but
+ # right now, it needs to be updated everytime chromium bumps
+ # a major version.
+ BuildRequires: chromium-native_client >= 52.0.2743.82
+ BuildRequires: clang
+ BuildRequires: llvm
+ %ifarch x86_64
+ # Really, this is what we want:
+ # BuildRequires: glibc-devel(x86-32) libgcc(x86-32)
+ # But, koji only offers glibc32. Maybe that's enough.
+ # This BR will pull in either glibc.i686 or glibc32.
+ BuildRequires: /lib/libc.so.6 /usr/lib/libc.so
+ %endif
+ %endif
+ # Fedora tries to use system libs whenever it can.
+ BuildRequires: bzip2-devel
+ BuildRequires: dbus-glib-devel
+ BuildRequires: elfutils-libelf-devel
+ BuildRequires: flac-devel
+ BuildRequires: freetype-devel
+ BuildRequires: hwdata
+ BuildRequires: kernel-headers
+ BuildRequires: libevent-devel
+ BuildRequires: libffi-devel
+ %if 0%{?bundleicu}
+ # If this is true, we're using the bundled icu.
+ # We'd like to use the system icu every time, but we cannot always do that.
+ %else
+ # Not newer than 54 (at least not right now)
+ BuildRequires: libicu-devel = 54.1
+ %endif
+ BuildRequires: libjpeg-devel
+ BuildRequires: libpng-devel
+ %if 0
+ # see https://code.google.com/p/chromium/issues/detail?id=501318
+ BuildRequires: libsrtp-devel >= 1.4.4
+ %endif
+ BuildRequires: libudev-devel
+ %if %{bundlelibusbx}
+ # Do nothing
+ %else
+ Requires: libusbx >= 1.0.21-0.1.git448584a
+ BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a
+ %endif
+ # We don't use libvpx anymore because Chromium loves to
+ # use bleeding edge revisions here that break other things
+ # ... so we just use the bundled libvpx.
+ %if %{bundlelibwebp}
+ # Do nothing
+ %else
+ BuildRequires: libwebp-devel
+ %endif
+ BuildRequires: libxslt-devel
+ # Same here, it seems.
+ # BuildRequires: libyuv-devel
+ BuildRequires: mesa-libGL-devel
+ %if %{bundleopus}
+ # Do nothing
+ %else
+ BuildRequires: opus-devel
+ %endif
+ BuildRequires: perl(Switch)
+ %if 0%{gtk3}
+ BuildRequires: pkgconfig(gtk+-3.0)
+ %endif
+ BuildRequires: pulseaudio-libs-devel
+ BuildRequires: python-beautifulsoup4
+ BuildRequires: python-BeautifulSoup
+ BuildRequires: python-html5lib
+ BuildRequires: python-markupsafe
+ BuildRequires: python-ply
+ BuildRequires: python-simplejson
+ %if 0%{?bundlere2}
+ # Using bundled bits, do nothing.
+ %else
+ Requires: re2 >= 20160401
+ BuildRequires: re2-devel >= 20160401
+ %endif
+ BuildRequires: speech-dispatcher-devel
+ BuildRequires: yasm
+ BuildRequires: zlib-devel
+ BuildRequires: pkgconfig(gnome-keyring-1)
+ # remote desktop needs this
+ BuildRequires: pam-devel
+ BuildRequires: systemd
+
+ # We pick up an automatic requires on the library, but we need the version check
+ # because the nss shared library is unversioned.
+ # This is to prevent someone from hitting http://code.google.com/p/chromium/issues/detail?id=26448
+ Requires: nss%{_isa} >= 3.12.3
+ Requires: nss-mdns%{_isa}
+
+ # GTK modules it expects to find for some reason.
+ Requires: libcanberra-gtk2%{_isa}
+
+ %if 0%{?fedora}
+ # This enables support for u2f tokens
+ Requires: u2f-hidraw-policy
+ %endif
+
+ # Once upon a time, we tried to split these out... but that's not worth the effort anymore.
+ Provides: chromium-ffmpegsumo = %{version}-%{release}
+ Obsoletes: chromium-ffmpegsumo <= 35.0.1916.114
+ # This is a lie. v8 has its own version... but I'm being lazy and not using it here.
+ # Barring Google getting much faster on the v8 side (or much slower on the Chromium side)
+ # the true v8 version will be much smaller than the Chromium version that it came from.
+ Provides: chromium-v8 = %{version}-%{release}
+ Obsoletes: chromium-v8 <= 3.25.28.18
+ # This is a lie. webrtc never had any real version. 0.2 is greater than 0.1
+ Provides: webrtc = 0.2
+ Obsoletes: webrtc <= 0.1
+ %if 0%{?shared}
+ Requires: chromium-libs%{_isa} = %{version}-%{release}
+ # This is broken out so it can be replaced.
+ Requires: chromium-libs-media%{_isa} = %{version}-%{release}
+ # Nothing to do here. chromium-libs is real.
+ %else
+ Provides: chromium-libs = %{version}-%{release}
+ Obsoletes: chromium-libs <= %{version}-%{release}
+ %endif
+
+ ExclusiveArch: x86_64 i686
+
+ # Bundled bits (I'm sure I've missed some)
+ Provides: bundled(angle) = 2422
+ Provides: bundled(bintrees) = 1.0.1
+ # This is a fork of openssl.
+ Provides: bundled(boringssl)
+ Provides: bundled(brotli) = 222564a95d9ab58865a096b8d9f7324ea5f2e03e
+ Provides: bundled(bspatch)
+ Provides: bundled(cacheinvalidation) = 20150720
+ Provides: bundled(colorama) = 799604a104
+ Provides: bundled(crashpad)
+ Provides: bundled(dmg_fp)
+ Provides: bundled(expat) = 2.2.0
+ Provides: bundled(fdmlibm) = 5.3
+ # Don't get too excited. MPEG and other legally problematic stuff is stripped out.
+ Provides: bundled(ffmpeg) = 3.2git
+ Provides: bundled(fips181) = 2.2.3
+ Provides: bundled(fontconfig) = 2.11.0
+ Provides: bundled(gperftools) = svn144
+ Provides: bundled(gtk3) = 3.1.4
+ %if 0%{?bundleharfbuzz}
+ Provides: bundled(harfbuzz) = 1.4.2
+ %endif
+ Provides: bundled(hunspell) = 1.6.0
+ Provides: bundled(iccjpeg)
+ %if 0%{?bundleicu}
+ Provides: bundled(icu) = 58.1
+ %endif
+ Provides: bundled(kitchensink) = 1
+ Provides: bundled(leveldb) = 1.20
+ Provides: bundled(libaddressinput) = 0
+ Provides: bundled(libdrm) = 2.4.70
+ Provides: bundled(libevent) = 1.4.15
+ Provides: bundled(libjingle) = 9564
+ # Provides: bundled(libjpeg-turbo) = 1.4.90
+ Provides: bundled(libphonenumber) = a4da30df63a097d67e3c429ead6790ad91d36cf4
+ # Provides: bundled(libpng) = 1.6.22
+ Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d
+ %if %{bundlelibusbx}
+ Provides: bundled(libusbx) = 1.0.17
+ %endif
+ Provides: bundled(libvpx) = 1.6.0
+ %if %{bundlelibwebp}
+ Provides: bundled(libwebp) = 0.6.0
+ %endif
+ %if %{bundlelibxml}
+ # Well, it's actually newer than 2.9.4 and has code in it that has been reverted upstream... but eh.
+ Provides: bundled(libxml) = 2.9.4
+ %endif
+ Provides: bundled(libXNVCtrl) = 302.17
+ Provides: bundled(libyuv) = 1651
+ Provides: bundled(lzma) = 15.14
+ Provides: bundled(libudis86) = 1.7.1
+ Provides: bundled(mesa) = 9.0.3
+ Provides: bundled(NSBezierPath) = 1.0
+ Provides: bundled(mozc)
+ Provides: bundled(mt19937ar) = 2002.1.26
+ %if %{bundleopus}
+ Provides: bundled(opus) = 1.1.3
+ %endif
+ Provides: bundled(ots) = 8d70cffebbfa58f67a5c3ed0e9bc84dccdbc5bc0
+ Provides: bundled(protobuf) = 3.0.0.beta.3
+ Provides: bundled(qcms) = 4
+ %if 0%{?bundlere2}
+ Provides: bundled(re2)
+ %endif
+ Provides: bundled(sfntly) = 04740d2600193b14aa3ef24cd9fbb3d5996b9f77
+ Provides: bundled(skia)
+ Provides: bundled(SMHasher) = 0
+ Provides: bundled(snappy) = 1.1.4-head
+ Provides: bundled(speech-dispatcher) = 0.7.1
+ Provides: bundled(sqlite) = 3.17patched
+ Provides: bundled(superfasthash) = 0
+ Provides: bundled(talloc) = 2.0.1
+ Provides: bundled(usrsctp) = 0
+ Provides: bundled(v8) = 5.9.211.31
+ Provides: bundled(webrtc) = 90usrsctp
+ Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d
+ Provides: bundled(xdg-mime)
+ Provides: bundled(xdg-user-dirs)
+ # Provides: bundled(zlib) = 1.2.11
+
+ # For selinux scriptlet
+ Requires(post): /usr/sbin/semanage
+ Requires(post): /usr/sbin/restorecon
+
+ %description
+ Chromium is an open-source web browser, powered by WebKit (Blink).
+
+ %package common
+ Summary: Files needed for both the headless_shell and full Chromium
+
+ %description common
+ %{summary}.
+
+ %if 0%{?shared}
+ %package libs
+ Summary: Shared libraries used by chromium (and chrome-remote-desktop)
+ Requires: chromium-common%{_isa} = %{version}-%{release}
+ Requires: chromium-libs-media%{_isa} >= %{majorversion}
+ Requires(post): %{_sbindir}/update-alternatives
+ Requires(preun): %{_sbindir}/update-alternatives
+
+ %description libs
+ Shared libraries used by chromium (and chrome-remote-desktop).
+
+ %if %{freeworld}
+ %package -n chromium-libs-media-freeworld
+ Summary: Chromium media libraries built with all possible codecs
+ Provides: chromium-libs-media = %{version}-%{release}
+ Provides: chromium-libs-media%{_isa} = %{version}-%{release}
+ Requires(post): %{_sbindir}/update-alternatives
+ Requires(preun): %{_sbindir}/update-alternatives
+
+ %description -n chromium-libs-media-freeworld
+ Chromium media libraries built with all possible codecs. Chromium is an
+ open-source web browser, powered by WebKit (Blink). This package replaces
+ the default chromium-libs-media package, which is limited in what it
+ can include.
+ %else
+ %package libs-media
+ Summary: Shared libraries used by the chromium media subsystem
+ Requires: chromium-libs%{_isa} = %{version}
+ Requires(post): %{_sbindir}/update-alternatives
+ Requires(preun): %{_sbindir}/update-alternatives
+
+ %description libs-media
+ Shared libraries used by the chromium media subsystem.
+ %endif
+ %endif
+
+ %package -n chrome-remote-desktop
+ Requires(pre): shadow-utils
+ Requires(post): systemd
+ Requires(preun): systemd
+ Requires(postun): systemd
+ Requires: xorg-x11-server-Xvfb
+ Requires: python2-psutil
+ %if 0%{?shared}
+ Requires: chromium-libs%{_isa} = %{version}-%{release}
+ %endif
+ Summary: Remote desktop support for google-chrome & chromium
+
+ %description -n chrome-remote-desktop
+ Remote desktop support for google-chrome & chromium.
+
+ %package -n chromedriver
+ Summary: WebDriver for Google Chrome/Chromium
+ %if 0%{?shared}
+ Requires: chromium-libs%{_isa} = %{version}-%{release}
+ %endif
+ # From Russian Fedora (minus the epoch)
+ Provides: chromedriver-stable = %{version}-%{release}
+ Conflicts: chromedriver-testing
+ Conflicts: chromedriver-unstable
+
+ %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.
+
+ %package headless
+ Summary: A minimal headless shell built from Chromium
+ Requires: chromium-common%{_isa} = %{version}-%{release}
+
+ %description headless
+ A minimal headless client built from Chromium. headless_shell is built
+ without support for alsa, cups, dbus, gconf, gio, kerberos, pulseaudio, or
+ udev.
+
+ %prep
+ %setup -q -T -c -n %{name}-policies -a 10
+ %setup -q -T -c -n depot_tools -a 2
+ %if 0%{tests}
+ %setup -q -n chromium-%{version} -b 1
+ %else
+ %setup -q -n chromium-%{version}
+ %endif
+
+ ### Chromium Fedora Patches ###
+ %patch0 -p1 -b .gcc5
+ %patch1 -p1 -b .pathmax
+ %patch2 -p1 -b .addrfix
+ %patch4 -p1 -b .notest
+ # %%patch6 -p1 -b .gnu-inline
+ %patch7 -p1 -b .ignore-fd-count
+ %patch9 -p1 -b .modern-libusbx
+ %patch12 -p1 -b .cups22
+ %patch15 -p1 -b .sandboxpie
+ %patch16 -p1 -b .armwebrtc
+ %patch18 -p1 -b .etc
+ # %%patch19 -p1 -b .madv_free
+ %patch20 -p1 -b .gnsystem
+ %patch21 -p1 -b .lastcommit
+ %patch22 -p1 -b .timefix
+ %patch24 -p1 -b .nullfix
+ %patch25 -p1 -b .jpegfix
+ %patch26 -p1 -b .ldmemory
+ %patch27 -p1 -b .setopaque
+ %patch31 -p1 -b .permissive
+ %patch33 -p1 -b .gcc7
+ %if %{freeworld}
+ # Do not apply mp3 change
+ %else
+ %patch34 -p1 -b .mp3
+ %endif
+ %patch36 -p1 -b .revert
+ %patch37 -p1 -b .ffmpeg-stdatomic
+ %patch39 -p1 -b .system-clang
+ %patch40 -p1 -b .ucontextfix
+ %patch41 -p1 -b .fixgnbootstrap
+ %patch42 -p1 -b .noprefix
+ %patch43 -p1 -b .nomangle
+ %patch44 -p1 -b .gtk2fix
+ %patch45 -p1 -b .nozmangle
+ %if 0%{?rhel} == 7
+ %patch46 -p1 -b .oldgcc
+ %patch47 -p1 -b .c99
+ %endif
+ %patch48 -p1 -b .camfix
+
+ ### Chromium Tests Patches ###
+ %patch100 -p1 -b .use_system_opus
+ %patch101 -p1 -b .use_system_harfbuzz
+
+ %if 0%{?asan}
+ export CC="clang"
+ export CXX="clang++"
+ %else
+ export CC="gcc"
+ export CXX="g++"
+ %endif
+ export AR="ar"
+ export RANLIB="ranlib"
+
+ %if 0%{?nacl}
+ # prep the nacl tree
+ mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib
+ cp -a --no-preserve=context /usr/%{_arch}-nacl/* out/Release/gen/sdk/linux_x86/nacl_x86_newlib
+
+ mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib
+ cp -a --no-preserve=context /usr/arm-nacl/* out/Release/gen/sdk/linux_x86/nacl_arm_newlib
+
+ # Not sure if we need this or not, but better safe than sorry.
+ pushd out/Release/gen/sdk/linux_x86
+ ln -s nacl_x86_newlib nacl_x86_newlib_raw
+ ln -s nacl_arm_newlib nacl_arm_newlib_raw
+ popd
+
+ mkdir -p out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
+ pushd out/Release/gen/sdk/linux_x86/nacl_x86_newlib/bin
+ ln -s /usr/bin/x86_64-nacl-gcc gcc
+ ln -s /usr/bin/x86_64-nacl-gcc x86_64-nacl-gcc
+ ln -s /usr/bin/x86_64-nacl-g++ g++
+ ln -s /usr/bin/x86_64-nacl-g++ x86_64-nacl-g++
+ # ln -s /usr/bin/x86_64-nacl-ar ar
+ ln -s /usr/bin/x86_64-nacl-ar x86_64-nacl-ar
+ # ln -s /usr/bin/x86_64-nacl-as as
+ ln -s /usr/bin/x86_64-nacl-as x86_64-nacl-as
+ # ln -s /usr/bin/x86_64-nacl-ranlib ranlib
+ ln -s /usr/bin/x86_64-nacl-ranlib x86_64-nacl-ranlib
+ # Cleanups
+ rm addr2line
+ ln -s /usr/bin/x86_64-nacl-addr2line addr2line
+ rm c++filt
+ ln -s /usr/bin/x86_64-nacl-c++filt c++filt
+ rm gprof
+ ln -s /usr/bin/x86_64-nacl-gprof gprof
+ rm readelf
+ ln -s /usr/bin/x86_64-nacl-readelf readelf
+ rm size
+ ln -s /usr/bin/x86_64-nacl-size size
+ rm strings
+ ln -s /usr/bin/x86_64-nacl-strings strings
+ popd
+
+ mkdir -p out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
+ pushd out/Release/gen/sdk/linux_x86/nacl_arm_newlib/bin
+ ln -s /usr/bin/arm-nacl-gcc gcc
+ ln -s /usr/bin/arm-nacl-gcc arm-nacl-gcc
+ ln -s /usr/bin/arm-nacl-g++ g++
+ ln -s /usr/bin/arm-nacl-g++ arm-nacl-g++
+ ln -s /usr/bin/arm-nacl-ar arm-nacl-ar
+ ln -s /usr/bin/arm-nacl-as arm-nacl-as
+ ln -s /usr/bin/arm-nacl-ranlib arm-nacl-ranlib
+ popd
+
+ touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_x86_newlib/stamp.prep
+ touch out/Release/gen/sdk/linux_x86/nacl_x86_newlib/nacl_x86_newlib.json
+ touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.untar out/Release/gen/sdk/linux_x86/nacl_arm_newlib/stamp.prep
+ touch out/Release/gen/sdk/linux_x86/nacl_arm_newlib/nacl_arm_newlib.json
+
+ pushd out/Release/gen/sdk/linux_x86/
+ mkdir -p pnacl_newlib pnacl_translator
+ # Might be able to do symlinks here, but eh.
+ cp -a --no-preserve=context /usr/pnacl_newlib/* pnacl_newlib/
+ cp -a --no-preserve=context /usr/pnacl_translator/* pnacl_translator/
+ for i in lib/libc.a lib/libc++.a lib/libg.a lib/libm.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/x86_64_bc-nacl/$i
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/i686_bc-nacl/$i
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
+ done
+
+ for i in lib/libpthread.a lib/libnacl.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/le32-nacl/$i
+ done
+
+ for i in lib/clang/3.7.0/lib/x86_64_bc-nacl/libpnaclmm.a lib/clang/3.7.0/lib/i686_bc-nacl/libpnaclmm.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
+ done
+
+ for i in lib/clang/3.7.0/lib/le32-nacl/libpnaclmm.a lib/clang/3.7.0/lib/le32-nacl/libgcc.a; do
+ /usr/pnacl_newlib/bin/pnacl-ranlib pnacl_newlib/$i
+ done
+
+ popd
+
+ mkdir -p native_client/toolchain/.tars/linux_x86
+ touch native_client/toolchain/.tars/linux_x86/pnacl_translator.json
+
+ pushd native_client/toolchain
+ ln -s ../../out/Release/gen/sdk/linux_x86 linux_x86
+ popd
+
+ mkdir -p third_party/llvm-build/Release+Asserts/bin
+ pushd third_party/llvm-build/Release+Asserts/bin
+ ln -s /usr/bin/clang clang
+ popd
+ %endif
+
+ # Core defines are flags that are true for both the browser and headless.
+ CHROMIUM_CORE_GN_DEFINES=""
+ CHROMIUM_CORE_GN_DEFINES+=' is_debug=false'
+ %ifarch x86_64
+ CHROMIUM_CORE_GN_DEFINES+=' system_libdir="lib64"'
+ %endif
+ CHROMIUM_CORE_GN_DEFINES+=' google_api_key="%{api_key}" google_default_client_id="%{default_client_id}" google_default_client_secret="%{default_client_secret}"'
+ CHROMIUM_CORE_GN_DEFINES+=' is_clang=false use_sysroot=false use_gold=false fieldtrial_testing_like_official_build=true'
+ %if %{freeworld}
+ CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="ChromeOS" proprietary_codecs=true'
+ %else
+ CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="Chromium" proprietary_codecs=false'
+ %endif
+ CHROMIUM_CORE_GN_DEFINES+=' treat_warnings_as_errors=false'
+ export CHROMIUM_CORE_GN_DEFINES
+
+ CHROMIUM_BROWSER_GN_DEFINES=""
+ CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true icu_use_data_file=true'
+ %if 0%{?nonacl}
+ CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false'
+ %endif
+ %if 0%{?shared}
+ CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true'
+ %else
+ CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=false'
+ %endif
+ CHROMIUM_BROWSER_GN_DEFINES+=' remove_webcore_debug_symbols=true enable_hangout_services_extension=true'
+ CHROMIUM_BROWSER_GN_DEFINES+=' enable_hotwording=false use_aura=true'
+ CHROMIUM_BROWSER_GN_DEFINES+=' enable_webrtc=true enable_widevine=true'
+ %if 0%{gtk3}
+ CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=true'
+ %else
+ CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=false'
+ %endif
+ export CHROMIUM_BROWSER_GN_DEFINES
+
+ CHROMIUM_HEADLESS_GN_DEFINES=""
+ CHROMIUM_HEADLESS_GN_DEFINES+=' use_ozone=true ozone_auto_platforms=false ozone_platform="headless" ozone_platform_headless=true'
+ CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true icu_use_data_file=false v8_use_external_startup_data=false'
+ CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false enable_remoting=false use_alsa=false use_ash=false'
+ CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gconf=false use_gio=false use_kerberos=false use_libpci=false'
+ CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
+ export CHROMIUM_HEADLESS_GN_DEFINES
+
+ mkdir -p third_party/node/linux/node-linux-x64/bin
+ ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node
+
+ # 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 \
+ %if 0%{?asan}
+ 'buildtools/third_party/libc++' \
+ 'buildtools/third_party/libc++abi' \
+ %endif
+ 'third_party/ffmpeg' \
+ 'third_party/adobe' \
+ 'third_party/flac' \
+ 'third_party/googletest' \
+ 'third_party/glslang-angle' \
+ 'third_party/harfbuzz-ng' \
+ 'third_party/icu' \
+ 'base/third_party/libevent' \
+ 'third_party/libdrm' \
+ 'third_party/libjpeg_turbo' \
+ 'third_party/libpng' \
+ 'third_party/libsrtp' \
+ 'third_party/libwebp' \
+ 'third_party/libxml' \
+ 'third_party/libxslt' \
+ %if %{freeworld}
+ 'third_party/openh264' \
+ %endif
+ %if 0%{?bundlere2}
+ 'third_party/re2' \
+ %endif
+ 'third_party/snappy' \
+ 'third_party/speech-dispatcher' \
+ 'third_party/swiftshader' \
+ 'third_party/swiftshader/third_party/subzero' \
+ 'third_party/swiftshader/third_party/LLVM' \
+ 'third_party/swiftshader/third_party/llvm-subzero' \
+ 'third_party/usb_ids' \
+ 'third_party/xdg-utils' \
+ 'third_party/yasm' \
+ 'third_party/zlib' \
+ 'base/third_party/dmg_fp' \
+ 'base/third_party/dynamic_annotations' \
+ 'base/third_party/icu' \
+ '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' \
+ 'breakpad/src/third_party/curl' \
+ 'chrome/third_party/mozilla_security_manager' \
+ 'courgette/third_party' \
+ 'native_client_sdk/src/libraries/third_party/newlib-extras' \
+ 'native_client/src/third_party/dlmalloc' \
+ 'native_client/src/third_party/valgrind' \
+ 'net/third_party/mozilla_security_manager' \
+ 'net/third_party/nss' \
+ 'third_party/WebKit' \
+ 'third_party/analytics' \
+ 'third_party/angle' \
+ 'third_party/angle/src/common/third_party/numerics' \
+ 'third_party/angle/src/third_party/compiler' \
+ 'third_party/angle/src/third_party/libXNVCtrl' \
+ 'third_party/angle/src/third_party/murmurhash' \
+ 'third_party/angle/src/third_party/trace_event' \
+ 'third_party/blanketjs' \
+ 'third_party/boringssl' \
+ 'third_party/brotli' \
+ 'third_party/cacheinvalidation' \
+ 'third_party/catapult' \
+ '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/third_party/polymer' \
+ 'third_party/catapult/third_party/py_vulcanize' \
+ 'third_party/catapult/third_party/py_vulcanize/third_party/rcssmin' \
+ 'third_party/catapult/third_party/py_vulcanize/third_party/rjsmin' \
+ 'third_party/ced' \
+ 'third_party/cld_2' \
+ 'third_party/cld_3' \
+ 'third_party/cros_system_api' \
+ 'third_party/devscripts' \
+ 'third_party/dom_distiller_js' \
+ 'third_party/expat' \
+ 'third_party/fips181' \
+ 'third_party/flatbuffers' \
+ 'third_party/flot' \
+ 'third_party/freetype' \
+ '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/hunspell' \
+ 'third_party/iccjpeg' \
+ 'third_party/inspector_protocol' \
+ 'third_party/jinja2' \
+ 'third_party/jstemplate' \
+ 'third_party/khronos' \
+ 'third_party/leveldatabase' \
+ 'third_party/libXNVCtrl' \
+ 'third_party/libaddressinput' \
+ 'third_party/libjingle' \
+ 'third_party/libphonenumber' \
+ 'third_party/libsecret' \
+ 'third_party/libsrtp' \
+ 'third_party/libudev' \
+ 'third_party/libusb' \
+ 'third_party/libvpx' \
+ 'third_party/libvpx/source/libvpx/third_party/x86inc' \
+ 'third_party/libxml/chromium' \
+ 'third_party/libwebm' \
+ 'third_party/libyuv' \
+ %if 0%{?nacl}
+ 'third_party/llvm-build' \
+ %endif
+ 'third_party/lss' \
+ 'third_party/lzma_sdk' \
+ 'third_party/mesa' \
+ 'third_party/modp_b64' \
+ 'third_party/mt19937ar' \
+ 'third_party/node' \
+ 'third_party/node/node_modules/vulcanize/third_party/UglifyJS2' \
+ 'third_party/openmax_dl' \
+ '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/build' \
+ 'third_party/pdfium/third_party/freetype' \
+ 'third_party/pdfium/third_party/lcms2-2.6' \
+ 'third_party/pdfium/third_party/libopenjpeg20' \
+ 'third_party/pdfium/third_party/libpng16' \
+ 'third_party/pdfium/third_party/libtiff' \
+ 'third_party/polymer' \
+ 'third_party/protobuf' \
+ 'third_party/protobuf/third_party/six' \
+ 'third_party/ply' \
+ 'third_party/qcms' \
+ 'third_party/qunit' \
+ 'third_party/sfntly' \
+ 'third_party/sinonjs' \
+ 'third_party/skia' \
+ 'third_party/skia/third_party/vulkan' \
+ 'third_party/smhasher' \
+ 'third_party/spirv-headers' \
+ 'third_party/spirv-tools-angle' \
+ 'third_party/sqlite' \
+ 'third_party/tcmalloc' \
+ 'third_party/usrsctp' \
+ 'third_party/vulkan-validation-layers' \
+ 'third_party/web-animations-js' \
+ 'third_party/webdriver' \
+ 'third_party/webrtc' \
+ 'third_party/widevine' \
+ 'third_party/woff2' \
+ 'third_party/zlib/google' \
+ 'url/third_party/mozilla' \
+ 'v8/third_party/inspector_protocol' \
+ 'v8/src/third_party/valgrind' \
+ --do-remove
+
+ # Look, I don't know. This package is spit and chewing gum. Sorry.
+ rm -rf third_party/markupsafe
+ ln -s %{python_sitearch}/markupsafe third_party/markupsafe
+ # We should look on removing other python packages as well i.e. ply
+
+ # Fix hardcoded path in remoting code
+ sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' remoting/host/setup/daemon_controller_delegate_linux.cc
+
+ export PATH=$PATH:%{_builddir}/depot_tools
+
+ build/linux/unbundle/replace_gn_files.py --system-libraries \
+ flac \
+ freetype \
+ %if 0%{?bundleharfbuzz}
+ %else
+ harfbuzz-ng \
+ %endif
+ %if 0%{?bundleicu}
+ %else
+ icu \
+ %endif
+ libdrm \
+ libjpeg \
+ libpng \
+ %if %{bundlelibusbx}
+ %else
+ libusb \
+ %endif
+ %if %{bundlelibwebp}
+ %else
+ libwebp \
+ %endif
+ %if %{bundlelibxml}
+ %else
+ libxml \
+ %endif
+ libxslt \
+ %if %{bundleopus}
+ %else
+ opus \
+ %endif
+ %if 0%{?bundlere2}
+ %else
+ re2 \
+ %endif
+ yasm \
+ zlib
+
+ tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES"
+ %{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target}
+
+ %if %{freeworld}
+ # do not need to do headless gen
+ %else
+ %{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES" %{headlesstarget}
+ %endif
+
+ %if %{bundlelibusbx}
+ # no hackity hack hack
+ %else
+ # hackity hack hack
+ rm -rf third_party/libusb/src/libusb/libusb.h
+ # we _shouldn't need to do this, but it looks like we do.
+ cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h
+ %endif
+
+ # make up a version for widevine
+ sed '14i#define WIDEVINE_CDM_VERSION_STRING "Something fresh"' -i "third_party/widevine/cdm/stub/widevine_cdm_version.h"
+
+ # Hard code extra version
+ FILE=chrome/common/channel_info_posix.cc
+ sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE
+
+ # fix arm gcc
+ sed -i 's|arm-linux-gnueabihf-|arm-linux-gnu-|g' build/toolchain/linux/BUILD.gn
+
+ %build
+
+ %if %{?tests}
+ # Tests targets taken from testing/buildbot/chromium.linux.json and obtained with
+ # get_linux_tests_name.py PATH_TO_UNPACKED_CHROMIUM_SOURCES --spec
+ # You can also check if you have to update the tests in SPEC file by running
+ # get_linux_tests_name.py PATH_TO_UNPACKED_CHROMIUM_SOURCES --check PATH_TO_SPEC_FILE
+ export CHROMIUM_BROWSER_UNIT_TESTS="\
+ accessibility_unittests \
+ app_list_unittests \
+ app_shell_unittests \
+ aura_unittests \
+ base_unittests \
+ browser_tests \
+ cacheinvalidation_unittests \
+ cast_unittests \
+ cc_unittests \
+ chromedriver_unittests \
+ components_browsertests \
+ components_unittests \
+ compositor_unittests \
+ content_browsertests \
+ content_unittests \
+ crypto_unittests \
+ dbus_unittests \
+ device_unittests \
+ display_unittests \
+ events_unittests \
+ extensions_browsertests \
+ extensions_unittests \
+ gcm_unit_tests \
+ gfx_unittests \
+ gl_unittests \
+ gn_unittests \
+ google_apis_unittests \
+ gpu_unittests \
+ interactive_ui_tests \
+ ipc_mojo_unittests \
+ ipc_tests \
+ jingle_unittests \
+ media_unittests \
+ midi_unittests \
+ mojo_common_unittests \
+ mojo_public_bindings_unittests \
+ mojo_public_environment_unittests \
+ mojo_public_system_unittests \
+ mojo_public_utility_unittests \
+ mojo_system_unittests \
+ %if 0%{?nacl}
+ nacl_loader_unittests \
+ %endif
+ net_unittests \
+ ppapi_unittests \
+ printing_unittests \
+ remoting_unittests \
+ sandbox_linux_unittests \
+ skia_unittests \
+ sql_unittests \
+ sync_integration_tests \
+ sync_unit_tests \
+ ui_base_unittests \
+ ui_touch_selection_unittests \
+ unit_tests \
+ url_unittests \
+ views_unittests \
+ wm_unittests \
+ "
+ %else
+ export CHROMIUM_BROWSER_UNIT_TESTS=
+ %endif
+
+ # Now do the full browser
+ %if 0%{freeworld}
+ ../depot_tools/ninja -C %{target} -vvv media $CHROMIUM_BROWSER_UNIT_TESTS
+ %else
+ # Do headless first.
+ ../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell
+
+ ../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver widevinecdmadapter clearkeycdm policy_templates $CHROMIUM_BROWSER_UNIT_TESTS
+
+ # remote client
+ pushd remoting
+
+ # ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host remoting_native_messaging_manifests remoting_resources
+ ../../depot_tools/ninja -C ../%{target} -vvv remoting_all
+ %if 0%{?build_remoting_app}
+ %if 0%{?nacl}
+ GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja -vv -C ../out/Release/ remoting_webapp
+ %endif
+ %endif
+ popd
+
+ %endif
+
+ # Nuke nacl/pnacl bits at the end of the build
+ rm -rf out/Release/gen/sdk
+ rm -rf native_client/toolchain
+ rm -rf third_party/llvm-build/*
+
+ %install
+ rm -rf %{buildroot}
+
+ %if 0%{freeworld}
+ mkdir -p %{buildroot}%{chromium_path}
+
+ pushd %{target}
+ cp -a libffmpeg.so* %{buildroot}%{chromium_path}
+ cp -a libmedia.so* %{buildroot}%{chromium_path}
+ mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
+ mv %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}}
+ mv %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}}
+ mv %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}}
+ popd
+ %else
+ mkdir -p %{buildroot}%{_bindir}
+ mkdir -p %{buildroot}%{chromium_path}
+ cp -a %{SOURCE3} %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ export BUILD_TARGET=`cat /etc/redhat-release`
+ export CHROMIUM_PATH=%{chromium_path}
+ export CHROMIUM_BROWSER_CHANNEL=%{chromium_browser_channel}
+ sed -i "s|@@BUILD_TARGET@@|$BUILD_TARGET|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ sed -i "s|@@CHROMIUM_PATH@@|$CHROMIUM_PATH|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ sed -i "s|@@CHROMIUM_BROWSER_CHANNEL@@|$CHROMIUM_BROWSER_CHANNEL|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ %if "%{chromium_channel}" == "%%{nil}"
+ sed -i "s|@@EXTRA_FLAGS@@||g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ %else
+ # Enable debug outputs for beta and dev channels
+ export EXTRA_FLAGS="--enable-logging=stderr --v=2"
+ sed -i "s|@@EXTRA_FLAGS@@|$EXTRA_FLAGS|g" %{buildroot}%{chromium_path}/%{chromium_browser_channel}.sh
+ %endif
+
+ ln -s %{chromium_path}/%{chromium_browser_channel}.sh %{buildroot}%{_bindir}/%{chromium_browser_channel}
+ mkdir -p %{buildroot}%{_mandir}/man1/
+
+ pushd %{target}
+ cp -a *.pak locales resources icudtl.dat %{buildroot}%{chromium_path}
+ %if 0%{?nacl}
+ cp -a nacl_helper* *.nexe pnacl tls_edit %{buildroot}%{chromium_path}
+ chmod -x %{buildroot}%{chromium_path}/nacl_helper_bootstrap* *.nexe
+ %endif
+ cp -a protoc pyproto %{buildroot}%{chromium_path}
+ cp -a chrome %{buildroot}%{chromium_path}/%{chromium_browser_channel}
+ cp -a chrome_sandbox %{buildroot}%{chromium_path}/chrome-sandbox
+ cp -a chrome.1 %{buildroot}%{_mandir}/man1/%{chromium_browser_channel}.1
+ # V8 initial snapshots
+ # https://code.google.com/p/chromium/issues/detail?id=421063
+ cp -a natives_blob.bin %{buildroot}%{chromium_path}
+ cp -a snapshot_blob.bin %{buildroot}%{chromium_path}
+ %if 0%{?shared}
+ cp -a lib*.so* %{buildroot}%{chromium_path}
+ cp -p %{buildroot}%{chromium_path}/libwidevinecdm.so{,.fedora}
+ cp -p %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}}
+ cp -p %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}}
+ cp -p %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}}
+ cp -p %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}}
+ %endif
+
+ # chromedriver
+ cp -a chromedriver %{buildroot}%{chromium_path}/chromedriver
+ ln -s %{chromium_path}/chromedriver %{buildroot}%{_bindir}/chromedriver
+
+ # Remote desktop bits
+ mkdir -p %{buildroot}%{crd_path}
+
+ %if 0%{?shared}
+ pushd %{buildroot}%{crd_path}
+ for i in ../chromium-browser%{?chromium_channel}/lib*.so; do
+ libname=`basename $i`
+ ln -s $i $libname
+ done
+ popd
+ %endif
+
+ # See remoting/host/installer/linux/Makefile for logic
+ cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host
+ cp -a remote_assistance_host %{buildroot}%{crd_path}/remote-assistance-host
+ cp -a remoting_locales %{buildroot}%{crd_path}/
+ cp -a remoting_me2me_host %{buildroot}%{crd_path}/chrome-remote-desktop-host
+ cp -a remoting_start_host %{buildroot}%{crd_path}/start-host
+
+ # chromium
+ mkdir -p %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts
+ # google-chrome
+ mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/
+ cp -a remoting/* %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/
+ for i in %{buildroot}%{_sysconfdir}/chromium/native-messaging-hosts/*.json; do
+ sed -i 's|/opt/google/chrome-remote-desktop|%{crd_path}|g' $i
+ done
+ mkdir -p %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts
+ pushd %{buildroot}%{_sysconfdir}/opt/chrome/native-messaging-hosts
+ for i in ../../../chromium/native-messaging-hosts/*; do
+ # rpm gets unhappy when we symlink here
+ cp -a $i .
+ done
+ popd
+
+ mkdir -p %{buildroot}/var/lib/chrome-remote-desktop
+ touch %{buildroot}/var/lib/chrome-remote-desktop/hashes
+
+ mkdir -p %{buildroot}%{_sysconfdir}/pam.d/
+ pushd %{buildroot}%{_sysconfdir}/pam.d/
+ ln -s system-auth chrome-remote-desktop
+ popd
+
+ %if 0%{?build_remoting_app}
+ %if 0%{?nacl}
+ cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path}
+ %endif
+ %endif
+ popd
+
+ pushd %{headlesstarget}
+ cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path}
+ popd
+
+ cp -a remoting/host/linux/linux_me2me_host.py %{buildroot}%{crd_path}/chrome-remote-desktop
+ cp -a remoting/host/installer/linux/is-remoting-session %{buildroot}%{crd_path}/
+
+ mkdir -p %{buildroot}%{_unitdir}
+ cp -a %{SOURCE11} %{buildroot}%{_unitdir}/
+ sed -i 's|@@CRD_PATH@@|%{crd_path}|g' %{buildroot}%{_unitdir}/chrome-remote-desktop@.service
+
+ # Add directories for policy management
+ mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/managed
+ mkdir -p %{buildroot}%{_sysconfdir}/chromium/policies/recommended
+ cp -a ../%{name}-policies/common/html/en-US/*.html .
+
+ # linux json files no longer in .zip file
+ #cp -a ../%{name}-policies/linux/examples/*.json .
+ cp -a out/Release/gen/chrome/app/policy/linux/examples/chrome.json .
+
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps
+ cp -a chrome/app/theme/chromium/product_logo_256.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/%{chromium_browser_channel}.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps
+ cp -a chrome/app/theme/chromium/product_logo_128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{chromium_browser_channel}.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
+ cp -a chrome/app/theme/chromium/product_logo_64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{chromium_browser_channel}.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
+ cp -a chrome/app/theme/chromium/product_logo_48.png %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/%{chromium_browser_channel}.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
+ cp -a chrome/app/theme/chromium/product_logo_24.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/%{chromium_browser_channel}.png
+ mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps
+ cp -a chrome/app/theme/chromium/product_logo_22.png %{buildroot}%{_datadir}/icons/hicolor/22x22/apps/%{chromium_browser_channel}.png
+
+ # Install the master_preferences file
+ mkdir -p %{buildroot}%{_sysconfdir}/%{name}
+ install -m 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/%{name}/
+
+ mkdir -p %{buildroot}%{_datadir}/applications/
+ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE4}
+
+ install -D -m0644 chrome/installer/linux/common/chromium-browser/chromium-browser.appdata.xml ${RPM_BUILD_ROOT}%{_datadir}/appdata/%{chromium_browser_channel}.appdata.xml
+ appstream-util validate-relax --nonet ${RPM_BUILD_ROOT}%{_datadir}/appdata/%{chromium_browser_channel}.appdata.xml
+
+ mkdir -p %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+ cp -a %{SOURCE9} %{buildroot}%{_datadir}/gnome-control-center/default-apps/
+
+ mkdir -p %{buildroot}%{chromium_path}/PepperFlash
+
+ # freeworld conditional
+ %endif
+
+ %check
+ %if 0%{tests}
+ %if 0%{?tests_force_display}
+ export DISPLAY=:0
+ %else
+ Xvfb :9 -screen 0 1024x768x24 &
+
+ export XVFB_PID=$!
+ export DISPLAY=:9
+ %endif
+ export LC_ALL="en_US.utf8"
+
+ sleep 5
+
+ # Run tests and disable the failed ones
+ pushd %{target}
+ (
+ cp -f chrome_sandbox chrome-sandbox
+ echo "Test sandbox needs to be owned by root and have the suid set"
+ if [ "$(id -u)" != "0" ]; then
+ sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox
+ else
+ chown root:root chrome-sandbox && chmod 4755 chrome-sandbox
+ fi
+
+ # Example of failed or timed-out test annotation
+ # ./browser_tests \
+ # --gtest_filter=-"\
+ # `#failed`\
+ # SandboxStatusUITest.testBPFSandboxEnabled:`#failed - not using BPF sandbox`\
+ # :\
+ # `#timed-out`\
+ # CalculatorBrowserTest.Model:\
+ # WebRtcBrowserTest.RunsAudioVideoWebRTCCallInTwoTabs\
+ # " \
+
+ ./accessibility_unittests && \
+ ./app_list_unittests && \
+ ./app_shell_unittests && \
+ ./aura_unittests && \
+ ./base_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ ICUStringConversionsTest.ConvertToUtf8AndNormalize\
+ " \
+ && \
+ ./browser_tests \
+ --gtest_filter=-"\
+ `#failed`\
+ DevToolsSanityTest.TestNetworkRawHeadersText:\
+ DevToolsSanityTest.TestNetworkSize:\
+ DevToolsSanityTest.TestNetworkSyncSize:\
+ ExtensionWebstoreGetWebGLStatusTest.Allowed:\
+ InlineLoginUISafeIframeBrowserTest.Basic:\
+ InlineLoginUISafeIframeBrowserTest.ConfirmationRequiredForNonsecureSignin:\
+ InlineLoginUISafeIframeBrowserTest.NoWebUIInIframe:\
+ InlineLoginUISafeIframeBrowserTest.TopFrameNavigationDisallowed:\
+ OutOfProcessPPAPITest.Graphics3D:\
+ PolicyTest.Disable3DAPIs:\
+ WebRtcWebcamBrowserTests/WebRtcWebcamBrowserTest.TestAcquiringAndReacquiringWebcam/0:\
+ :\
+ `#timed-out`\
+ CalculatorBrowserTest.Model:\
+ ImageFetcherImplBrowserTest.MultipleFetch:\
+ ProfileManagerBrowserTest.DeletePasswords:\
+ TabCaptureApiPixelTest.EndToEndThroughWebRTC:\
+ WebRtcBrowserTest.RunsAudioVideoWebRTCCallInTwoTabs:\
+ WebRtcSimulcastBrowserTest.TestVgaReturnsTwoSimulcastStreams\
+ " \
+ && \
+ ./cacheinvalidation_unittests && \
+ ./cast_unittests && \
+ ./cc_unittests && \
+ ./chromedriver_unittests && \
+ ./components_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ AutocompleteMatchTest.Duplicates:\
+ BookmarkIndexTest.GetBookmarksMatchingWithURLs:\
+ BookmarkIndexTest.MatchPositionsURLs:\
+ InMemoryURLIndexTypesTest.StaticFunctions:\
+ ScoredHistoryMatchTest.GetTopicalityScore:\
+ ScoredHistoryMatchTest.Inlining:\
+ ScoredHistoryMatchTest.ScoringTLD:\
+ UrlFormatterTest.FormatUrlWithOffsets:\
+ UrlFormatterTest.IDNToUnicodeFast:\
+ UrlFormatterTest.IDNToUnicodeSlow\
+ " \
+ && \
+ ./components_browsertests \
+ --gtest_filter=-"\
+ `#failed`\
+ AutofillRiskFingerprintTest.GetFingerprint\
+ " \
+ && \
+ ./compositor_unittests && \
+ ./content_browsertests \
+ --gtest_filter=-"\
+ `#failed`\
+ BrowserGpuChannelHostFactoryTest.:\
+ BrowserGpuChannelHostFactoryTest.AlreadyEstablished:\
+ BrowserGpuChannelHostFactoryTest.Basic:\
+ ImageTransportFactoryBrowserTest.TestLostContext:\
+ ImageTransportFactoryTearDownBrowserTest.LoseOnTearDown:\
+ RenderViewImplTest.GetCompositionCharacterBoundsTest:\
+ SignalTest.BasicSignalQueryTest:\
+ SignalTest.BasicSignalSyncPointTest:\
+ SignalTest.InvalidSignalQueryUnboundTest:\
+ SignalTest.InvalidSignalSyncPointTest:\
+ SignalTest.SignalQueryUnboundTest:\
+ WebRtcBrowserTest.*:\
+ :\
+ `#timed-out`\
+ WebRtcAecDumpBrowserTest.CallWithAecDump:\
+ WebRtcAecDumpBrowserTest.CallWithAecDumpEnabledThenDisabled\
+ " \
+ && \
+ ./content_unittests && \
+ ./crypto_unittests && \
+ ./dbus_unittests \
+ --gtest_filter=-"\
+ `#crashed`\
+ EndToEndAsyncTest.InvalidObjectPath:\
+ EndToEndAsyncTest.InvalidServiceName:\
+ EndToEndSyncTest.InvalidObjectPath:\
+ EndToEndSyncTest.InvalidServiceName:\
+ MessageTest.SetInvalidHeaders\
+ " \
+ && \
+ ./device_unittests && \
+ ./display_unittests && \
+ ./events_unittests && \
+ ./extensions_browsertests && \
+ ./extensions_unittests && \
+ ./gcm_unit_tests && \
+ ./gfx_unittests \
+ --gtest_filter=-"\
+ `#failed - missing Microsoft TrueType fonts`\
+ FontListTest.Fonts_GetHeight_GetBaseline:\
+ FontRenderParamsTest.Default:\
+ FontRenderParamsTest.MissingFamily:\
+ FontRenderParamsTest.Size:\
+ FontRenderParamsTest.Style:\
+ FontRenderParamsTest.SubstituteFamily:\
+ FontRenderParamsTest.UseBitmaps:\
+ FontTest.GetActualFontNameForTesting:\
+ FontTest.LoadArial:\
+ FontTest.LoadArialBold:\
+ PlatformFontLinuxTest.DefaultFont:\
+ RenderTextTest.HarfBuzz_FontListFallback:\
+ RenderTextTest.SetFontList:\
+ RenderTextTest.StringSizeRespectsFontListMetrics\
+ :\
+ `#crashed`\
+ FontRenderParamsTest.Default:\
+ FontRenderParamsTest.ForceFullHintingWhenAntialiasingIsDisabled:\
+ FontRenderParamsTest.MissingFamily:\
+ FontRenderParamsTest.NoFontconfigMatch:\
+ FontRenderParamsTest.OnlySetConfiguredValues:\
+ FontRenderParamsTest.Scalable:\
+ FontRenderParamsTest.Size:\
+ FontRenderParamsTest.Style:\
+ FontRenderParamsTest.SubstituteFamily:\
+ FontRenderParamsTest.UseBitmaps:\
+ PlatformFontLinuxTest.DefaultFont\
+ " \
+ && \
+ ./gl_unittests && \
+ ./gn_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ Format.004:\
+ Format.007:\
+ Format.012:\
+ Format.013:\
+ Format.014:\
+ Format.015:\
+ Format.017:\
+ Format.019:\
+ Format.020:\
+ Format.021:\
+ Format.023:\
+ Format.031:\
+ Format.033:\
+ Format.038:\
+ Format.043:\
+ Format.046:\
+ Format.048:\
+ Format.056:\
+ Format.057:\
+ Format.062:\
+ ParseTree.SortRangeExtraction:\
+ Parser.CommentsAtEndOfBlock:\
+ Parser.CommentsConnectedInList:\
+ Parser.CommentsEndOfBlockSingleLine:\
+ Parser.CommentsLineAttached:\
+ Parser.CommentsSuffix:\
+ Parser.CommentsSuffixDifferentLine:\
+ Parser.CommentsSuffixMultiple\
+ " \
+ && \
+ ./google_apis_unittests && \
+ ./gpu_unittests && \
+ ./interactive_ui_tests \
+ --gtest_filter=-"\
+ `#failed`\
+ AshNativeCursorManagerTest.CursorChangeOnEnterNotify:\
+ BookmarkBarViewTest5.DND:\
+ OmniboxViewViewsTest.DeactivateTouchEditingOnExecuteCommand:\
+ OmniboxViewViewsTest.SelectAllOnTap:\
+ StartupBrowserCreatorTest.LastUsedProfileActivated:\
+ X11TopmostWindowFinderTest.Basic:\
+ X11TopmostWindowFinderTest.Menu:\
+ :\
+ `#timed-out`\
+ BookmarkBarViewTest9.ScrollButtonScrolls:\
+ DockedPanelBrowserTest.CloseSqueezedPanels:\
+ DockedPanelBrowserTest.MinimizeSqueezedActive:\
+ GlobalCommandsApiTest.GlobalCommand\
+ " \
+ && \
+ ./ipc_mojo_unittests && \
+ ./ipc_tests && \
+ ./jingle_unittests && \
+ ./midi_unittests && \
+ ./media_unittests && \
+ ./mojo_common_unittests && \
+ ./mojo_public_bindings_unittests && \
+ ./mojo_public_environment_unittests && \
+ ./mojo_public_system_unittests && \
+ ./mojo_public_utility_unittests && \
+ ./mojo_system_unittests && \
+ %if 0%{?nacl}
+ ./nacl_loader_unittests && \
+ %endif
+ ./net_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ CertVerifyProcTest.TestKnownRoot\
+ " \
+ && \
+ ./ppapi_unittests && \
+ ./printing_unittests && \
+ ./remoting_unittests && \
+ ./sandbox_linux_unittests && \
+ ./skia_unittests && \
+ ./sql_unittests && \
+ ./ui_base_unittests && \
+ ./ui_touch_selection_unittests && \
+ ./sync_unit_tests && \
+ ./unit_tests \
+ --gtest_filter=-"\
+ `#failed - some need https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries/+/m...
+ BookmarkProviderTest.StripHttpAndAdjustOffsets:\
+ HQPOrderingTest.TEAMatch:\
+ HistoryQuickProviderTest.ContentsClass:\
+ LimitedInMemoryURLIndexTest.Initialization:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckParagraph:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckSuggestions:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckWord:\
+ MultilingualSpellCheckTest.MultilingualSpellCheckWordEnglishSpanish:\
+ SpellCheckTest.CreateTextCheckingResultsKeepsMarkers:\
+ SpellCheckTest.DictionaryFiles:\
+ SpellCheckTest.EnglishWords:\
+ SpellCheckTest.GetAutoCorrectionWord_EN_US:\
+ SpellCheckTest.LogicalSuggestions:\
+ SpellCheckTest.MisspelledWords:\
+ SpellCheckTest.NoSuggest:\
+ SpellCheckTest.SpellCheckParagraphLongSentenceMultipleMisspellings:\
+ SpellCheckTest.SpellCheckParagraphMultipleMisspellings:\
+ SpellCheckTest.SpellCheckParagraphSingleMisspellings:\
+ SpellCheckTest.SpellCheckStrings_EN_US:\
+ SpellCheckTest.SpellCheckSuggestions_EN_US:\
+ SpellCheckTest.SpellingEngine_CheckSpelling:\
+ SpellcheckWordIteratorTest.FindSkippableWordsKhmer:\
+ :\
+ `#crashed`\
+ ListChangesTaskTest.UnderTrackedFolder:\
+ ListChangesTaskTest.UnrelatedChange:\
+ SpellCheckTest.RequestSpellCheckWithMisspellings:\
+ SpellCheckTest.RequestSpellCheckWithMultipleRequests:\
+ SpellCheckTest.RequestSpellCheckWithSingleMisspelling\
+ " \
+ && \
+ ./url_unittests && \
+ ./views_unittests \
+ --gtest_filter=-"\
+ `#failed`\
+ DesktopWindowTreeHostX11HighDPITest.LocatedEventDispatchWithCapture:\
+ LabelTest.FontPropertySymbol:\
+ WidgetTest.WindowMouseModalityTest\
+ " \
+ && \
+ ./wm_unittests \
+ )
+ popd
+
+ if [ -n "$XVFB_PID" ]; then
+ kill $XVFB_PID
+ unset XVFB_PID
+ unset DISPLAY
+ fi
+ %endif
+
+ %post
+ # Set SELinux labels - semanage itself will adjust the lib directory naming
+ # But only do it when selinux is enabled, otherwise, it gets noisy.
+ if selinuxenabled; then
+ semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}
+ semanage fcontext -a -t bin_t /usr/lib/%{chromium_browser_channel}/%{chromium_browser_channel}.sh
+ semanage fcontext -a -t chrome_sandbox_exec_t /usr/lib/chrome-sandbox
+ restorecon -R -v %{chromium_path}/%{chromium_browser_channel}
+ fi
+
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+ update-desktop-database &> /dev/null || :
+
+ %postun
+ if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+ fi
+ update-desktop-database &> /dev/null || :
+
+ %posttrans
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+ %pretrans -n chrome-remote-desktop -p <lua>
+ path = "/etc/opt/chrome/native-messaging-hosts"
+ st = posix.stat(path)
+ if st and st.type == "link" then
+ os.remove(path)
+ end
+
+ %posttrans libs
+ %{_sbindir}/update-alternatives --install \
+ %{_libdir}/chromium-browser/libwidevinecdm.so libwidevinecdm.so \
+ %{_libdir}/chromium-browser/libwidevinecdm.so.fedora 10
+
+ %preun libs
+ if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove libwidevinecdm.so \
+ %{_libdir}/chromium-browser/libwidevinecdm.so.fedora
+ fi
+
+ %if %{freeworld}
+ %posttrans -n chromium-libs-media-freeworld
+ %{_sbindir}/update-alternatives --install \
+ %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \
+ --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \
+ %{_libdir}/chromium-browser/libffmpeg.so.TOC.freeworld \
+ --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \
+ %{_libdir}/chromium-browser/libmedia.so.freeworld \
+ --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
+ %{_libdir}/chromium-browser/libmedia.so.TOC.freeworld
+
+ %preun -n chromium-libs-media-freeworld
+ if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.freeworld
+ fi
+ %else
+ %posttrans libs-media
+ %{_sbindir}/update-alternatives --install \
+ %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.fedora 10 \
+ --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \
+ %{_libdir}/chromium-browser/libffmpeg.so.TOC.fedora \
+ --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \
+ %{_libdir}/chromium-browser/libmedia.so.fedora \
+ --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \
+ %{_libdir}/chromium-browser/libmedia.so.TOC.fedora
+
+ %preun libs-media
+ if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove libffmpeg.so \
+ %{_libdir}/chromium-browser/libffmpeg.so.fedora
+ fi
+ %endif
+
+ %pre -n chrome-remote-desktop
+ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-desktop
+
+ %post -n chrome-remote-desktop
+ %systemd_post chrome-remote-desktop@.service
+
+ %preun -n chrome-remote-desktop
+ %systemd_preun chrome-remote-desktop@.service
+
+ %postun -n chrome-remote-desktop
+ %systemd_postun_with_restart chrome-remote-desktop@.service
+
+ %if 0%{freeworld}
+ # We only build libs-media-freeworld.
+ %else
+
+ %files
+ %doc AUTHORS
+ %doc chrome_policy_list.html *.json
+ %license LICENSE
+ %config %{_sysconfdir}/%{name}/
+ %dir %{_sysconfdir}/%{name}/native-messaging-hosts
+ # This is chrome-remote-desktop stuff
+ %exclude %{_sysconfdir}/%{name}/native-messaging-hosts/*
+ %{_bindir}/%{chromium_browser_channel}
+ %dir %{chromium_path}
+ %{chromium_path}/*.bin
+ %{chromium_path}/chrome_*.pak
+ %{chromium_path}/keyboard_resources.pak
+ %{chromium_path}/resources.pak
+ %{chromium_path}/views_mus_resources.pak
+ %{chromium_path}/icudtl.dat
+ %{chromium_path}/%{chromium_browser_channel}
+ %{chromium_path}/%{chromium_browser_channel}.sh
+ %if 0%{?nacl}
+ %{chromium_path}/nacl_helper*
+ %{chromium_path}/*.nexe
+ %{chromium_path}/pnacl/
+ %{chromium_path}/tls_edit
+ %endif
+ %dir %{chromium_path}/PepperFlash/
+ %{chromium_path}/protoc
+ # %%{chromium_path}/remoting_locales/
+ # %%{chromium_path}/pseudo_locales/
+ # %%{chromium_path}/plugins/
+ %attr(4755, root, root) %{chromium_path}/chrome-sandbox
+ %{_mandir}/man1/%{chromium_browser_channel}.*
+ %{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png
+ %{_datadir}/applications/*.desktop
+ %{_datadir}/appdata/*.appdata.xml
+ %{_datadir}/gnome-control-center/default-apps/chromium-browser.xml
+
+ %files common
+ %{chromium_path}/headless_lib.pak
+ %{chromium_path}/libosmesa.so
+ %{chromium_path}/mus_app_resources_*.pak
+ %{chromium_path}/pyproto/
+ %{chromium_path}/resources/
+ %dir %{chromium_path}/locales/
+ %lang(am) %{chromium_path}/locales/am.pak
+ %lang(ar) %{chromium_path}/locales/ar.pak
+ %lang(bg) %{chromium_path}/locales/bg.pak
+ %lang(bn) %{chromium_path}/locales/bn.pak
+ %lang(ca) %{chromium_path}/locales/ca.pak
+ %lang(cs) %{chromium_path}/locales/cs.pak
+ %lang(da) %{chromium_path}/locales/da.pak
+ %lang(de) %{chromium_path}/locales/de.pak
+ %lang(el) %{chromium_path}/locales/el.pak
+ %lang(en_GB) %{chromium_path}/locales/en-GB.pak
+ %lang(en_US) %{chromium_path}/locales/en-US.pak
+ %lang(es) %{chromium_path}/locales/es.pak
+ %lang(es) %{chromium_path}/locales/es-419.pak
+ %lang(et) %{chromium_path}/locales/et.pak
+ %lang(fa) %{chromium_path}/locales/fa.pak
+ %lang(fi) %{chromium_path}/locales/fi.pak
+ %lang(fil) %{chromium_path}/locales/fil.pak
+ %lang(fr) %{chromium_path}/locales/fr.pak
+ %lang(gu) %{chromium_path}/locales/gu.pak
+ %lang(he) %{chromium_path}/locales/he.pak
+ %lang(hi) %{chromium_path}/locales/hi.pak
+ %lang(hr) %{chromium_path}/locales/hr.pak
+ %lang(hu) %{chromium_path}/locales/hu.pak
+ %lang(id) %{chromium_path}/locales/id.pak
+ %lang(it) %{chromium_path}/locales/it.pak
+ %lang(ja) %{chromium_path}/locales/ja.pak
+ %lang(kn) %{chromium_path}/locales/kn.pak
+ %lang(ko) %{chromium_path}/locales/ko.pak
+ %lang(lt) %{chromium_path}/locales/lt.pak
+ %lang(lv) %{chromium_path}/locales/lv.pak
+ %lang(ml) %{chromium_path}/locales/ml.pak
+ %lang(mr) %{chromium_path}/locales/mr.pak
+ %lang(ms) %{chromium_path}/locales/ms.pak
+ %lang(nb) %{chromium_path}/locales/nb.pak
+ %lang(nl) %{chromium_path}/locales/nl.pak
+ %lang(pl) %{chromium_path}/locales/pl.pak
+ %lang(pt_BR) %{chromium_path}/locales/pt-BR.pak
+ %lang(pt_PT) %{chromium_path}/locales/pt-PT.pak
+ %lang(ro) %{chromium_path}/locales/ro.pak
+ %lang(ru) %{chromium_path}/locales/ru.pak
+ %lang(sk) %{chromium_path}/locales/sk.pak
+ %lang(sl) %{chromium_path}/locales/sl.pak
+ %lang(sr) %{chromium_path}/locales/sr.pak
+ %lang(sv) %{chromium_path}/locales/sv.pak
+ %lang(sw) %{chromium_path}/locales/sw.pak
+ %lang(ta) %{chromium_path}/locales/ta.pak
+ %lang(te) %{chromium_path}/locales/te.pak
+ %lang(th) %{chromium_path}/locales/th.pak
+ %lang(tr) %{chromium_path}/locales/tr.pak
+ %lang(uk) %{chromium_path}/locales/uk.pak
+ %lang(vi) %{chromium_path}/locales/vi.pak
+ %lang(zh_CN) %{chromium_path}/locales/zh-CN.pak
+ %lang(zh_TW) %{chromium_path}/locales/zh-TW.pak
+
+ %files headless
+ %{chromium_path}/headless_shell
+
+ %if 0%{?shared}
+ %files libs
+ %exclude %{chromium_path}/libosmesa.so
+ %exclude %{chromium_path}/libffmpeg.so*
+ %exclude %{chromium_path}/libmedia.so*
+ %exclude %{chromium_path}/libwidevinecdm.so
+ %{chromium_path}/lib*.so*
+ %endif
+
+ %files -n chrome-remote-desktop
+ %{crd_path}/chrome-remote-desktop
+ %{crd_path}/chrome-remote-desktop-host
+ %{crd_path}/is-remoting-session
+ %if 0%{?shared}
+ %{crd_path}/lib*.so
+ %endif
+ %{crd_path}/native-messaging-host
+ %{crd_path}/remote-assistance-host
+ %{_sysconfdir}/pam.d/chrome-remote-desktop
+ %{_sysconfdir}/chromium/native-messaging-hosts/*
+ %{_sysconfdir}/opt/chrome/
+ %{crd_path}/remoting_locales/
+ %{crd_path}/start-host
+ %{_unitdir}/chrome-remote-desktop@.service
+ /var/lib/chrome-remote-desktop/
+ %if 0%{?build_remoting_app}
+ %if 0%{?nacl}
+ %{chromium_path}/remoting_client_plugin_newlib.*
+ %endif
+ %endif
+
+ %files -n chromedriver
+ %doc AUTHORS
+ %license LICENSE
+ %{_bindir}/chromedriver
+ %{chromium_path}/chromedriver
+
+ %endif
+
+ %if 0%{?shared}
+ %if %{freeworld}
+ %files -n chromium-libs-media-freeworld
+ %else
+ %files libs-media
+ %endif
+ %{chromium_path}/libffmpeg.so.%{lsuffix}*
+ %{chromium_path}/libffmpeg.so.TOC.%{lsuffix}*
+ %{chromium_path}/libmedia.so.%{lsuffix}*
+ %{chromium_path}/libmedia.so.TOC.%{lsuffix}*
+ %endif
+
+
+ %changelog
+ * Wed Aug 16 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.101-1
+ - update to 60.0.3112.101
+ - apply upstream fix for cameras which report zero resolution formats
+ (bz1465357)
+
+ * Mon Aug 14 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-3
+ - apply more workarounds to coax code to build with epel7 gcc
+
+ * Wed Aug 9 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-2
+ - apply post 60 code commit to get code building on epel7
+
+ * Fri Aug 4 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-1
+ - update to 60.0.3112.90
+
+ * Wed Aug 02 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 59.0.3071.115-5
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+ * Mon Jul 31 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.78-1
+ - update to 60.0.3112.78
+
+ * Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 59.0.3071.115-4
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+ * Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-4
+ - put common files in -common subpackage
+ - build headless_shell for -headless subpackage
+
+ * Fri Jul 21 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-3
+ - use posttrans to ensure that old libs are gone before trying to make alternative symlinks
+
+ * Thu Jul 13 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-2
+ - fix scriptlets
+
+ * Wed Jul 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.115-1
+ - 59.0.3071.115
+ - conditionalize spec so it can be easily used to make -libs-media-freeworld
+
+ * Wed Jun 28 2017 Dominik Mierzejewski <dominik(a)greysector.net> 59.0.3071.109-6
+ - use alternatives for widevine stub and media libs to allow third-party
+ packages to replace them without conflicts
+
+ * Mon Jun 26 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-5
+ - fix path in pretrans scriptlet
+
+ * Fri Jun 23 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-4
+ - copy files into /etc/opt/chrome/native-messaging-hosts instead of making symlinks
+ this results in duplicate copies of the same files, but eh. making rpm happy.
+
+ * Fri Jun 23 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-3
+ - use pretrans scriptlet to remove symlink on /etc/opt/chrome/native-messaging-hosts
+ (it is now a directory)
+
+ * Thu Jun 22 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-2
+ - fix duplication between chrome-remote-desktop and chromium
+
+ * Thu Jun 22 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.109-1
+ - update to .109
+ - fix native-messaging-hosts dir to be a true dir instead of a symlink
+
+ * Fri Jun 16 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.104-1
+ - update to .104
+
+ * Fri Jun 16 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-4
+ - actually fix mp3 playback support
+
+ * Tue Jun 13 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-3
+ - fix filtering
+
+ * Mon Jun 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-2
+ - pnacl/nacl now needs llvm to build the bootstrap lib
+
+ * Mon Jun 12 2017 Tom Callaway <spot(a)fedoraproject.org> 59.0.3071.86-1
+ - update to 59.0.3071.86
+ - include smaller logo files
+
+ * Tue May 16 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.110-2
+ - strip provides/requires on libsensors
+
+ * Mon May 15 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.110-1
+ - update to 58.0.3029.110
+
+ * Mon May 8 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.96-1
+ - update to 58.0.3029.96
+
+ * Fri Apr 21 2017 Tom Callaway <spot(a)fedoraproject.org> 58.0.3029.81-1
+ - update to 58.0.3029.81
+
+ * Thu Mar 30 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.133-1
+ - update to 57.0.2987.133
+
+ * Sun Mar 26 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-4
+ - copy compat stdatomic.h in for RHEL. Re-enable mp3 enablement.
+ - fix issue in gtk_ui.cc revealed by RHEL build
+
+ * Sun Mar 26 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-3
+ - fix mp3 enablement
+ - disable mp3 enablement on RHEL (compiler too old)
+
+ * Tue Mar 21 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-2
+ - fix privlibs
+
+ * Mon Mar 20 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.110-1
+ - update to 57.0.2987.110
+
+ * Tue Mar 14 2017 Tom Callaway <spot(a)fedoraproject.org> 57.0.2987.98-1
+ - update to 57.0.2987.98
+
+ * Sun Mar 5 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-8
+ - enable mp3 support
+
+ * Sat Mar 4 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-7
+ - fix desktop file to have "new window" and "new private window" actions
+
+ * Tue Feb 28 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-6
+ - fix issue with gcc7 compile in v8 (thanks to Ben Noordhuis)
+
+ * Fri Feb 24 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-5
+ - versioning sync build on rawhide
+
+ * Fri Feb 24 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-4.1
+ - fix issue with unique_ptr move on return with old gcc
+
+ * Tue Feb 21 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-4
+ - disable debuginfo
+
+ * Mon Feb 13 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-3
+ - fix compilation issue
+ - build third_party/WebKit with -fpermissive
+ - use bundled jinja everywhere
+
+ * Fri Feb 10 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-2
+ - add BR: gtk3-devel
+
+ * Fri Feb 10 2017 Tom Callaway <spot(a)fedoraproject.org> 56.0.2924.87-1
+ - update to 56.0.2924.87
+
+ * Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 55.0.2883.87-2.1
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+ * Tue Dec 13 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.87-1.1
+ - use bundled jinja2 on RHEL (or Fedora older than 23)
+ - fix rvalue issue in remoting code
+
+ * Tue Dec 13 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.87-1
+ - update to 55.0.2883.87
+
+ * Mon Dec 12 2016 Tom Callaway <spot(a)fedoraproject.org> 55.0.2883.75-1
+ - update to 55.0.2883.75
+
+ * Fri Dec 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.100-1
+ - update to 54.0.2840.100
+
+ * Fri Nov 4 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-3
+ - when use_aura is on, chrome/browser needs to link to ui/snapshot
+
+ * Wed Nov 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-2
+ - export setOpaque in cc_blink
+
+ * Wed Nov 2 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.90-1
+ - update to 54.0.2840.90
+ - undo ld manipulation for i686, just use -g1 there
+
+ * Tue Nov 1 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.71-2
+ - disable debugging
+
+ * Wed Oct 26 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.71-1
+ - update to 54.0.2840.71
+
+ * Wed Oct 26 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.59-2
+ - fix deps
+
+ * Thu Oct 13 2016 Tom Callaway <spot(a)fedoraproject.org> 54.0.2840.59-1
+ - 54.0.2840.59
+ - use bundled opus, libevent
+
+ * Fri Sep 30 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.143-1
+ - 53.0.2785.143
+
+ * Tue Sep 20 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.116-1
+ - 53.0.2785.116
+
+ * Wed Sep 14 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.113-1
+ - 53.0.2785.113
+
+ * Thu Sep 8 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.101-1
+ - 53.0.2785.101
+ - happy star trek day. live long and prosper.
+
+ * Wed Sep 7 2016 Tom Callaway <spot(a)fedoraproject.org> 53.0.2785.92-1
+ - add basic framework for gn tooling (disabled because it doesn't work yet)
+ - update to 53.0.2785.92
+ - fix HOME environment issue in chrome-remote-desktop service file
+
+ * Mon Aug 29 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-11
+ - conditionalize Requires: u2f-hidraw-policy so that it is only used on Fedora
+ - use bundled harfbuzz on EL7
+
+ * Thu Aug 18 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-10
+ - disable gtk3 because it breaks lots of things
+ - re-enable hidpi setting
+
+ * Tue Aug 16 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-9
+ - filter out Requires/Provides for chromium-only libs and plugins
+
+ * Tue Aug 16 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-8
+ - fix path on Requires(post) line for semanage
+
+ * Mon Aug 15 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-7
+ - add Requires(post) items for selinux scriptlets
+
+ * Mon Aug 15 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-6
+ - disable the "hidpi" setting
+ - unset MADV_FREE if set (should get F25+ working again)
+
+ * Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-5
+ - do not package libwidevinecdm*.so, they are just empty shells
+ instead, to enable widevine, get these files from Google Chrome
+
+ * Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-4
+ - add "freeworld" conditional for testing netflix/widevine
+
+ * Fri Aug 12 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-3
+ - move PepperFlash directory out of the nacl conditional (thanks to churchyard)
+ - fix widevine (thanks to David Vásquez and UnitedRPMS)
+
+ * Wed Aug 10 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-2
+ - include clearkeycdm and widevinecdm files in libs-media
+
+ * Mon Aug 8 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.116-1
+ - update to 52.0.2743.116
+
+ * Thu Aug 4 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-13
+ - change libs split to "libs-media", as that actually works.
+ - add PepperFlash directory (nothing in it though, sorry)
+
+ * Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-12
+ - split out libs package beyond ffmpeg, into libs and libs-content
+ - fix libusbx conditional for el7 to not nuke libusb headers
+ - disable speech-dispatcher header prefix setting if not fedora (el7)
+
+ * Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-11
+ - split out chromium-libs-ffmpeg so it can be easily replaced
+ - conditionalize opus and libusbx for el7
+
+ * Wed Aug 3 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-10
+ - Add ICU Text Codec aliases (from openSUSE via Russian Fedora)
+ - Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
+ - Enable ARM CPU detection for webrtc (from archlinux via Russian Fedora)
+ - Do not force -m32 in icu compile on ARM (from archlinux via Russian Fedora)
+ - Enable gtk3 support (via conditional)
+ - Enable fpic on linux
+ - Enable hidpi
+ - Force aura on
+ - Enable touch_ui
+ - Add chromedriver subpackage (from Russian Fedora)
+ - Set default master_preferences location to /etc/chromium
+ - Add master_preferences file as config file
+ - Improve chromium-browser.desktop (from Russian Fedora)
+
+ * Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-9
+ - fix conditional to disable verbose logging output unless beta/dev
+
+ * Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-8
+ - disable nacl/pnacl for Fedora 23 (and older)
+
+ * Thu Jul 28 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-7
+ - fix post scriptlet so that selinux stuff only happens when selinux is enabled
+
+ * Thu Jul 28 2016 Richard Hughes <richard(a)hughsie.com> 52.0.2743.82-6
+ - Add an AppData file so that Chromium appears in the software center
+
+ * Wed Jul 27 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-5
+ - enable nacl/pnacl (chromium-native_client has landed in Fedora)
+ - fix chromium-browser.sh to report Fedora build target properly
+
+ * Wed Jul 27 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-4
+ - compile with -fno-delete-null-pointer-checks (fixes v8 crashes, nacl/pnacl)
+ - turn nacl/pnacl off until chromium-native_client lands in Fedora
+
+ * Tue Jul 26 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-3
+ - turn nacl back on for x86_64
+
+ * Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-2
+ - fix cups 2.2 support
+ - try to enable widevine compatibility (you still need to get the binary .so files from chrome)
+
+ * Thu Jul 21 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.82-1
+ - update to 52.0.2743.82
+ - handle locales properly
+ - cleanup spec
+
+ * Tue Jul 19 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.75-1
+ - update to 52.0.2743.75
+
+ * Wed Jul 6 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2743.60-1
+ - bump to 52.0.2743.60, disable nacl for now
+
+ * Mon May 9 2016 Tom Callaway <spot(a)fedoraproject.org> 52.0.2723.2-1
+ - force to dev to see if it works better on F24+
+
+ * Wed May 4 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-6
+ - apply upstream fix for https://bugs.chromium.org/p/chromium/issues/detail?id=604534
+
+ * Tue May 3 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-5
+ - use bundled re2 (conditionalize it)
+
+ * Tue May 3 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-4
+ - disable asan (it never quite built)
+ - do not preserve re2 bundled tree, causes header/library mismatch
+
+ * Mon May 2 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-3
+ - enable AddressSanize (ASan) for debugging
+
+ * Sat Apr 30 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-2
+ - use bundled icu always. *sigh*
+
+ * Fri Apr 29 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.94-1
+ - update to 50.0.2661.94
+
+ * Wed Apr 27 2016 Tom Callaway <spot(a)fedoraproject.org> 50.0.2661.86-1
+ - update to 50.0.2661.86
+
+ * Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-4
+ - protect third_party/woff2
+
+ * Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-3
+ - add BuildRequires: libffi-devel
+
+ * Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-2
+ - explicitly disable sysroot
+
+ * Thu Mar 17 2016 Tom Callaway <spot(a)fedoraproject.org> 49.0.2623.87-1
+ - update to 49.0.2623.87
+
+ * Mon Feb 29 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-3
+ - Happy Leap Day!
+ - add Requires: u2f-hidraw-policy for u2f token support
+ - add Requires: xorg-x11-server-Xvfb for chrome-remote-desktop
+
+ * Fri Feb 26 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-2
+ - fix icu BR
+
+ * Wed Feb 24 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.116-1
+ - Update to 48.0.2564.116
+ - conditionalize icu properly
+ - fix libusbx handling (bz1270324)
+
+ * Wed Feb 17 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.103-2
+ - fixes for gcc6
+
+ * Mon Feb 8 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.103-1
+ - update to 48.0.2564.103
+ - use bundled libsrtp (because upstream has coded themselves into an ugly corner)
+
+ * Fri Jan 22 2016 Tom Callaway <spot(a)fedoraproject.org> 48.0.2564.82-1
+ - update to 48.0.2564.82
+
+ * Fri Jan 15 2016 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.111-1
+ - update to 47.0.2526.111
+
+ * Thu Jan 07 2016 Tomas Popela <tpopela(a)redhat.com> 47.0.2526.106-2
+ - compare hashes when downloading the tarballs
+ - Google started to include the Debian sysroots in tarballs - remove them while
+ processing the tarball
+ - add a way to not use the system display server for tests instead of Xvfb
+ - update the depot_tools checkout to get some GN fixes
+ - use the remove_bundled_libraries script
+ - update the clean_ffmpeg script to print errors when some files that we are
+ processing are missing
+ - update the clean_ffmpeg script to operate on tarball's toplevel folder
+ - don't show comments as removed tests in get_linux_tests_names script
+ - rework the process_ffmpeg_gyp script (also rename it to
+ get_free_ffmpeg_source_files) to use the GN files insted of GYP (but we still
+ didn't switched to GN build)
+
+ * Wed Dec 16 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.106-1
+ - update to 47.0.2526.106
+
+ * Tue Dec 15 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-4
+ - entirely patch out the broken fd counter from the nacl loader code
+ killing it with fire would be better, but then chromium is on fire
+ and that somehow makes it worse.
+
+ * Mon Dec 14 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-3
+ - revert nacl fd patch (now we see 6 fds! 6 LIGHTS!)
+
+ * Fri Dec 11 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-2
+ - build everything shared, but when we do shared builds, make -libs subpackage
+ - make chrome-remote-desktop dep on -libs subpackage in shared builds
+
+ * Wed Dec 9 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.80-1
+ - update to 47.0.2526.80
+ - only build ffmpeg shared, not any other libs
+ this is because if we build the other libs shared, then our
+ chrome-remote-desktop build deps on those libs and we do not want that
+
+ * Tue Dec 8 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.73-2
+ - The nacl loader claims it sees 7 fds open ALL THE TIME, and fails
+ So, we tell it that it is supposed to see 7.
+ I suspect building with shared objects is causing this disconnect.
+
+ * Wed Dec 2 2015 Tom Callaway <spot(a)fedoraproject.org> 47.0.2526.73-1
+ - update to 47.0.2526.73
+ - rework chrome-remote-desktop subpackage to work for google-chrome and chromium
+
+ * Wed Dec 2 2015 Tomas Popela <tpopela(a)redhat.com> 47.0.2526.69-1
+ - Update to 47.0.2526.69
+
+ * Tue Dec 1 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-4
+ - still more remote desktop changes
+
+ * Mon Nov 30 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-3
+ - lots of remote desktop cleanups
+
+ * Thu Nov 12 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.86-2
+ - re-enable Requires/BuildRequires for libusbx
+ - add remote-desktop subpackage
+
+ * Wed Nov 11 2015 Tomas Popela <tpopela(a)redhat.com> 46.0.2490.86-1
+ - update to 46.0.2490.86
+ - clean the SPEC file
+ - add support for policies: https://www.chromium.org/administrators/linux-quick-start
+ - replace exec_mem_t SELinux label with bin_t - see rhbz#1281437
+ - refresh scripts that are used for processing the original tarball
+
+ * Fri Oct 30 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-5
+ - tls_edit is a nacl thing. who knew?
+
+ * Thu Oct 29 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-4
+ - more nacl fixups for i686 case
+
+ * Thu Oct 29 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-3
+ - conditionalize nacl/nonacl, disable nacl on i686, build for i686
+
+ * Mon Oct 26 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-2
+ - conditionalize shared bits (enable by default)
+
+ * Fri Oct 23 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.80-1
+ - update to 46.0.2490.80
+
+ * Thu Oct 15 2015 Tom Callaway <spot(a)fedoraproject.org> 46.0.2490.71-1
+ - update to 46.0.2490.71
+
+ * Thu Oct 15 2015 Tom Callaway <spot(a)fedoraproject.org> 45.0.2454.101-2
+ - fix icu handling for f21 and older
+
+ * Mon Oct 5 2015 Tom Callaway <spot(a)fedoraproject.org> 45.0.2454.101-1
+ - update to 45.0.2454.101
+
+ * Thu Jun 11 2015 Tom Callaway <spot(a)fedoraproject.org> 43.0.2357.124-1
+ - update to 43.0.2357.124
+
+ * Tue Jun 2 2015 Tom Callaway <spot(a)fedoraproject.org> 43.0.2357.81-1
+ - update to 43.0.2357.81
+
+ * Thu Feb 26 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.115-1
+ - update to 40.0.2214.115
+
+ * Thu Feb 19 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.111-1
+ - update to 40.0.2214.111
+
+ * Mon Feb 2 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.94-1
+ - update to 40.0.2214.94
+
+ * Tue Jan 27 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.93-1
+ - update to 40.0.2214.93
+
+ * Sat Jan 24 2015 Tom Callaway <spot(a)fedoraproject.org> 40.0.2214.91-1
+ - update to 40.0.2214.91
+
+ * Wed Jan 21 2015 Tom Callaway <spot(a)fedoraproject.org> 39.0.2171.95-3
+ - use bundled icu on Fedora < 21, we need 5.2
+
+ * Tue Jan 6 2015 Tom Callaway <spot(a)fedoraproject.org> 39.0.2171.95-2
+ - rebase off Tomas's spec file for Fedora
+
+ * Fri Dec 12 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.95-1
+ - Update to 39.0.2171.95
+ - Resolves: rhbz#1173448
+
+ * Wed Nov 26 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.71-1
+ - Update to 39.0.2171.71
+ - Resolves: rhbz#1168128
+
+ * Wed Nov 19 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.65-2
+ - Revert the chrome-sandbox rename to chrome_sandbox
+ - Resolves: rhbz#1165653
+
+ * Wed Nov 19 2014 Tomas Popela <tpopela(a)redhat.com> 39.0.2171.65-1
+ - Update to 39.0.2171.65
+ - Use Red Hat Developer Toolset for compilation
+ - Set additional SELinux labels
+ - Add more unit tests
+ - Resolves: rhbz#1165653
+
+ * Fri Nov 14 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.122-1
+ - Update to 38.0.2125.122
+ - Resolves: rhbz#1164116
+
+ * Wed Oct 29 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.111-1
+ - Update to 38.0.2125.111
+ - Resolves: rhbz#1158347
+
+ * Fri Oct 24 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.104-2
+ - Fix the situation when the return key (and keys from numpad) does not work
+ in HTML elements with input
+ - Resolves: rhbz#1153988
+ - Dynamically determine the presence of the PepperFlash plugin
+ - Resolves: rhbz#1154118
+
+ * Thu Oct 16 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.104-1
+ - Update to 38.0.2125.104
+ - Resolves: rhbz#1153012
+
+ * Thu Oct 09 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.101-2
+ - The boringssl is used for tests, without the possibility of using
+ the system openssl instead. Remove the openssl and boringssl sources
+ when not building the tests.
+ - Resolves: rhbz#1004948
+
+ * Wed Oct 08 2014 Tomas Popela <tpopela(a)redhat.com> 38.0.2125.101-1
+ - Update to 38.0.2125.101
+ - System openssl is used for tests, otherwise the bundled boringssl is used
+ - Don't build with clang
+ - Resolves: rhbz#1004948
+
+ * Wed Sep 10 2014 Tomas Popela <tpopela(a)redhat.com> 37.0.2062.120-1
+ - Update to 37.0.2062.120
+ - Resolves: rhbz#1004948
+
+ * Wed Aug 27 2014 Tomas Popela <tpopela(a)redhat.com> 37.0.2062.94-1
+ - Update to 37.0.2062.94
+ - Include the pdf viewer library
+
+ * Wed Aug 13 2014 Tomas Popela <tpopela(a)redhat.com> 36.0.1985.143-1
+ - Update to 36.0.1985.143
+ - Use system openssl instead of bundled one
+ - Resolves: rhbz#1004948
+
+ * Thu Jul 17 2014 Tomas Popela <tpopela(a)redhat.com> 36.0.1985.125-1
+ - Update to 36.0.1985.125
+ - Add libexif as BR
+ - Resolves: rhbz#1004948
+
+ * Wed Jun 11 2014 Tomas Popela <tpopela(a)redhat.com> 35.0.1916.153-1
+ - Update to 35.0.1916.153
+ - Resolves: rhbz#1004948
+
+ * Wed May 21 2014 Tomas Popela <tpopela(a)redhat.com> 35.0.1916.114-1
+ - Update to 35.0.1916.114
+ - Bundle python-argparse
+ - Resolves: rhbz#1004948
+
+ * Wed May 14 2014 Tomas Popela <tpopela(a)redhat.com> 34.0.1847.137-1
+ - Update to 34.0.1847.137
+ - Resolves: rhbz#1004948
+
+ * Mon May 5 2014 Tomas Popela <tpopela(a)redhat.com> 34.0.1847.132-1
+ - Update to 34.0.1847.132
+ - Bundle depot_tools and switch from make to ninja
+ - Remove PepperFlash
+ - Resolves: rhbz#1004948
+
+ * Mon Feb 3 2014 Tomas Popela <tpopela(a)redhat.com> 32.0.1700.102-1
+ - Update to 32.0.1700.102
+
+ * Thu Jan 16 2014 Tomas Popela <tpopela(a)redhat.com> 32.0.1700.77-1
+ - Update to 32.0.1700.77
+ - Properly kill Xvfb when tests fails
+ - Add libdrm as BR
+ - Add libcap as BR
+
+ * Tue Jan 7 2014 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.67-2
+ - Minor changes in spec files and scripts
+ - Add Xvfb as BR for tests
+ - Add policycoreutils-python as Requires
+ - Compile unittests and run them in chech phase, but turn them off by default
+ as many of them are failing in Brew
+
+ * Thu Dec 5 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.67-1
+ - Update to 31.0.1650.63
+
+ * Thu Nov 21 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.57-1
+ - Update to 31.0.1650.57
+
+ * Wed Nov 13 2013 Tomas Popela <tpopela(a)redhat.com> 31.0.1650.48-1
+ - Update to 31.0.1650.48
+ - Minimal supported RHEL6 version is now RHEL 6.5 due to GTK+
+
+ * Fri Oct 25 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.114-1
+ - Update to 30.0.1599.114
+ - Hide the infobar with warning that this version of OS is not supported
+ - Polished the chromium-latest.py
+
+ * Thu Oct 17 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.101-1
+ - Update to 30.0.1599.101
+ - Minor changes in scripts
+
+ * Wed Oct 2 2013 Tomas Popela <tpopela(a)redhat.com> 30.0.1599.66-1
+ - Update to 30.0.1599.66
+ - Automated the script for cleaning the proprietary sources from ffmpeg.
+
+ * Thu Sep 19 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.76-1
+ - Update to 29.0.1547.76
+ - Added script for removing the proprietary sources from ffmpeg. This script is called during cleaning phase of ./chromium-latest --rhel
+
+ * Mon Sep 16 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.65-2
+ - Compile with Dproprietary_codecs=0 and Dffmpeg_branding=Chromium to disable proprietary codecs (i.e. MP3)
+
+ * Mon Sep 9 2013 Tomas Popela <tpopela(a)redhat.com> 29.0.1547.65-1
+ - Initial version based on Tom Callaway's <spot(a)fedoraproject.org> work
+
diff --cc sources
index e69de29,9309b9e..9816669
--- a/sources
+++ b/sources
@@@ -1,0 -1,3 +1,3 @@@
-SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03
-SHA512 (policy_templates.zip) = 4d2a7162adb3ca224f3e1bf1d2936ae395603e8ffa3fda7753e666a16c42c7ba54c7acfcfdc742e22978ace37e471ed099d222063708d4d8a299da3daf135f15
-SHA512 (chromium-60.0.3112.101-clean.tar.xz) = 3ed13c6a32752294898fa72f2333f32fcf081eef7328307645dbc09baae95aca762d3083d2ae053fc903a0b4dc92e04da91a810d267aab21dea196362ed6abc6
++a6495be59bdbc20b2524d7c1356e82ac policy_templates.zip
++49a7f897775cce21d2b69968b8af1cea depot_tools.git-master.tar.gz
++9fe9af85faeaf617cb61997c431a02e2 chromium-60.0.3112.101.tar.xz
7 years, 3 months
[chromium-freeworld: 147/148] update to 60.0.3112.101, apply upstream fix for cameras which report zero resolution formats (bz1465
by Miro Hrončok
commit 5922b5cfc93c9d5de2fe2258364697ea0cae6de5
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Aug 16 17:20:49 2017 -0400
update to 60.0.3112.101, apply upstream fix for cameras which report zero resolution formats (bz1465357)
.gitignore | 1 +
chromium-60.0.3112.101-camfix.patch | 25 +++++++++++++++++++++++++
chromium.spec | 13 ++++++++++---
sources | 2 +-
4 files changed, 37 insertions(+), 4 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 19bd92f..428fd64 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@
/chromium-59.0.3071.115-clean.tar.xz
/chromium-59.0.3071.109-freetype.tar.bz2
/chromium-60.0.3112.90-clean.tar.xz
+/chromium-60.0.3112.101-clean.tar.xz
diff --git a/chromium-60.0.3112.101-camfix.patch b/chromium-60.0.3112.101-camfix.patch
new file mode 100644
index 0000000..0dd59d4
--- /dev/null
+++ b/chromium-60.0.3112.101-camfix.patch
@@ -0,0 +1,25 @@
+diff -up chromium-60.0.3112.101/content/browser/renderer_host/media/media_devices_dispatcher_host.cc.camfix chromium-60.0.3112.101/content/browser/renderer_host/media/media_devices_dispatcher_host.cc
+--- chromium-60.0.3112.101/content/browser/renderer_host/media/media_devices_dispatcher_host.cc.camfix 2017-08-16 17:02:07.177832503 -0400
++++ chromium-60.0.3112.101/content/browser/renderer_host/media/media_devices_dispatcher_host.cc 2017-08-16 17:02:56.378883520 -0400
+@@ -6,6 +6,7 @@
+
+ #include <stddef.h>
+
++#include <algorithm>
+ #include <utility>
+ #include <vector>
+
+@@ -454,6 +455,13 @@ media::VideoCaptureFormats MediaDevicesD
+
+ media_stream_manager_->video_capture_manager()->GetDeviceSupportedFormats(
+ device_id, &formats);
++ // Remove formats that have zero resolution.
++ formats.erase(std::remove_if(formats.begin(), formats.end(),
++ [](const media::VideoCaptureFormat& format) {
++ return format.frame_size.GetArea() <= 0;
++ }),
++ formats.end());
++
+ return formats;
+ }
+
diff --git a/chromium.spec b/chromium.spec
index 8e2d7b0..c99bb84 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -115,8 +115,8 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
%else
Name: chromium%{chromium_channel}
%endif
-Version: %{majorversion}.0.3112.90
-Release: 3%{?dist}
+Version: %{majorversion}.0.3112.101
+Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -200,7 +200,8 @@ Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
# Apply these changes to work around EPEL7 compiler issues
Patch46: chromium-60.0.3112.90-init-list-hack.patch
Patch47: chromium-60.0.3112.90-vulkan-force-c99.patch
-
+# https://chromium.googlesource.com/chromium/src/+/9c77470ff34bac937ceb765a...
+Patch48: chromium-60.0.3112.101-camfix.patch
### Chromium Tests Patches ###
Patch100: chromium-46.0.2490.86-use_system_opus.patch
@@ -632,6 +633,7 @@ udev.
%patch46 -p1 -b .oldgcc
%patch47 -p1 -b .c99
%endif
+%patch48 -p1 -b .camfix
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@@ -1839,6 +1841,11 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Wed Aug 16 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.101-1
+- update to 60.0.3112.101
+- apply upstream fix for cameras which report zero resolution formats
+ (bz1465357)
+
* Mon Aug 14 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-3
- apply more workarounds to coax code to build with epel7 gcc
diff --git a/sources b/sources
index 24b41df..9309b9e 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03
-SHA512 (chromium-60.0.3112.90-clean.tar.xz) = 3b1579037b3debc0f714e5de3e02bd5fc1c8aa7482479ffc20b824653b11191ed558cef147633b30da16ffd8c26d5eacb95b93610041a44a6ea84606702f7ac1
SHA512 (policy_templates.zip) = 4d2a7162adb3ca224f3e1bf1d2936ae395603e8ffa3fda7753e666a16c42c7ba54c7acfcfdc742e22978ace37e471ed099d222063708d4d8a299da3daf135f15
+SHA512 (chromium-60.0.3112.101-clean.tar.xz) = 3ed13c6a32752294898fa72f2333f32fcf081eef7328307645dbc09baae95aca762d3083d2ae053fc903a0b4dc92e04da91a810d267aab21dea196362ed6abc6
7 years, 3 months
[chromium-freeworld: 146/148] apply more workarounds to force code to compile with epel7 gcc
by Miro Hrončok
commit 26f11a9f0f82327066da16a2d3a6f15dc7fdaef9
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Aug 14 11:20:03 2017 -0400
apply more workarounds to force code to compile with epel7 gcc
chromium-60.0.3112.90-vulkan-force-c99.patch | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/chromium-60.0.3112.90-vulkan-force-c99.patch b/chromium-60.0.3112.90-vulkan-force-c99.patch
index a415962..881aa91 100644
--- a/chromium-60.0.3112.90-vulkan-force-c99.patch
+++ b/chromium-60.0.3112.90-vulkan-force-c99.patch
@@ -5,7 +5,7 @@ diff -up chromium-60.0.3112.90/third_party/angle/src/vulkan_support/BUILD.gn.c99
cflags += [ "-Wno-ignored-attributes" ]
}
if (is_linux) {
-+ cflags = [ "-std=c99" ]
++ cflags += [ "-std=c99" ]
defines += [
"SYSCONFDIR=\"/etc\"",
"FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
7 years, 3 months
[chromium-freeworld: 145/148] apply more workarounds to force code to compile with epel7 gcc
by Miro Hrončok
commit efb66ad8f9d80f9ef434b4cf6675aab61d5e4beb
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Aug 14 10:45:51 2017 -0400
apply more workarounds to force code to compile with epel7 gcc
chromium-60.0.3112.90-vulkan-force-c99.patch | 11 +++++++++++
chromium.spec | 9 +++++++--
2 files changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/chromium-60.0.3112.90-vulkan-force-c99.patch b/chromium-60.0.3112.90-vulkan-force-c99.patch
new file mode 100644
index 0000000..a415962
--- /dev/null
+++ b/chromium-60.0.3112.90-vulkan-force-c99.patch
@@ -0,0 +1,11 @@
+diff -up chromium-60.0.3112.90/third_party/angle/src/vulkan_support/BUILD.gn.c99 chromium-60.0.3112.90/third_party/angle/src/vulkan_support/BUILD.gn
+--- chromium-60.0.3112.90/third_party/angle/src/vulkan_support/BUILD.gn.c99 2017-08-14 10:40:48.028799820 -0400
++++ chromium-60.0.3112.90/third_party/angle/src/vulkan_support/BUILD.gn 2017-08-14 10:41:43.054734910 -0400
+@@ -180,6 +180,7 @@ config("vulkan_internal_config") {
+ cflags += [ "-Wno-ignored-attributes" ]
+ }
+ if (is_linux) {
++ cflags = [ "-std=c99" ]
+ defines += [
+ "SYSCONFDIR=\"/etc\"",
+ "FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
diff --git a/chromium.spec b/chromium.spec
index 40b532b..8e2d7b0 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -116,7 +116,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3112.90
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -197,8 +197,9 @@ Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
Patch44: chromium-60.0.3112.78-gtk2fix.patch
# Do not mangle zlib
Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
-# Apply this change to work around EPEL7 compiler issues
+# Apply these changes to work around EPEL7 compiler issues
Patch46: chromium-60.0.3112.90-init-list-hack.patch
+Patch47: chromium-60.0.3112.90-vulkan-force-c99.patch
### Chromium Tests Patches ###
@@ -629,6 +630,7 @@ udev.
%patch45 -p1 -b .nozmangle
%if 0%{?rhel} == 7
%patch46 -p1 -b .oldgcc
+%patch47 -p1 -b .c99
%endif
### Chromium Tests Patches ###
@@ -1837,6 +1839,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Mon Aug 14 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-3
+- apply more workarounds to coax code to build with epel7 gcc
+
* Wed Aug 9 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-2
- apply post 60 code commit to get code building on epel7
7 years, 3 months
[chromium-freeworld: 144/148] okay, do you like this?
by Miro Hrončok
commit 268e0a67112d2d7a6a64f140248bd450865fb5ae
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Aug 11 12:00:53 2017 -0400
okay, do you like this?
chromium-60.0.3112.90-init-list-hack.patch | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/chromium-60.0.3112.90-init-list-hack.patch b/chromium-60.0.3112.90-init-list-hack.patch
index 1403335..d3d52fe 100644
--- a/chromium-60.0.3112.90-init-list-hack.patch
+++ b/chromium-60.0.3112.90-init-list-hack.patch
@@ -20,8 +20,8 @@ diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block
- curr_bfc_offset_ +=
- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
- curr_margin_strut_.Sum()};
-+ LayoutUnit sum_inline_starts2 = {border_and_padding_.inline_start + curr_child_margins_.inline_start, curr_margin_strut_.Sum()};
-+ curr_bfc_offset_ += sum_inline_starts2;
++ LayoutUnit sum_inline_starts2 = {border_and_padding_.inline_start + curr_child_margins_.inline_start};
++ curr_bfc_offset_ += {sum_inline_starts2, curr_margin_strut_.Sum()};
MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
&container_builder_);
PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
7 years, 3 months
[chromium-freeworld: 143/148] try different hack
by Miro Hrončok
commit 97f98971c79e08594b438c3baa3229fbacdab2cf
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Fri Aug 11 10:26:58 2017 -0400
try different hack
chromium-60.0.3112.90-init-list-hack.patch | 31 ++++++++++++------------------
1 file changed, 12 insertions(+), 19 deletions(-)
---
diff --git a/chromium-60.0.3112.90-init-list-hack.patch b/chromium-60.0.3112.90-init-list-hack.patch
index 6cd91d6..1403335 100644
--- a/chromium-60.0.3112.90-init-list-hack.patch
+++ b/chromium-60.0.3112.90-init-list-hack.patch
@@ -1,34 +1,27 @@
diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.tryfix chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
--- chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.tryfix 2017-08-09 14:45:17.619172987 -0400
-+++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc 2017-08-09 14:46:07.375213058 -0400
-@@ -382,7 +382,7 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
++++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc 2017-08-11 10:24:10.635245642 -0400
+@@ -381,8 +381,9 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+ }
NGLogicalOffset child_bfc_offset = curr_bfc_offset_;
- child_bfc_offset.inline_offset +=
+- child_bfc_offset.inline_offset +=
- {border_and_padding_.inline_start + curr_child_margins_.inline_start};
-+ {{border_and_padding_.inline_start + curr_child_margins_.inline_start}};
++ LayoutUnit sum_inline_starts = {border_and_padding_.inline_start + curr_child_margins_.inline_start};
++
++ child_bfc_offset.inline_offset += sum_inline_starts;
// Append the current margin strut with child's block start margin.
// Non empty border/padding, and new FC use cases are handled inside of the
-@@ -396,8 +396,8 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+@@ -395,9 +396,8 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+
// Should collapse margins if our child is a legacy block.
if (IsLegacyBlock(*child)) {
- curr_bfc_offset_ +=
+- curr_bfc_offset_ +=
- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
- curr_margin_strut_.Sum()};
-+ {{border_and_padding_.inline_start + curr_child_margins_.inline_start,
-+ curr_margin_strut_.Sum()}};
++ LayoutUnit sum_inline_starts2 = {border_and_padding_.inline_start + curr_child_margins_.inline_start, curr_margin_strut_.Sum()};
++ curr_bfc_offset_ += sum_inline_starts2;
MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
&container_builder_);
PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
-@@ -526,8 +526,8 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
- margin_strut.Append(curr_child_margins_.block_end);
-
- curr_bfc_offset_ +=
-- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
-- margin_strut.Sum()};
-+ {{border_and_padding_.inline_start + curr_child_margins_.inline_start,
-+ margin_strut.Sum()}};
- AdjustToClearance(space.ClearanceOffset(), &curr_bfc_offset_);
- PositionPendingFloatsFromOffset(
- curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
7 years, 3 months
[chromium-freeworld: 142/148] try to trick old gcc
by Miro Hrončok
commit 682675b7f8625fb1f6cfd350ed168082fc2124ef
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Aug 9 14:48:34 2017 -0400
try to trick old gcc
chromium-60.0.3112.90-init-list-hack.patch | 34 ++
chromium-60.0.3112.90-no-per-child.patch | 843 -----------------------------
chromium.spec | 5 +-
3 files changed, 36 insertions(+), 846 deletions(-)
---
diff --git a/chromium-60.0.3112.90-init-list-hack.patch b/chromium-60.0.3112.90-init-list-hack.patch
new file mode 100644
index 0000000..6cd91d6
--- /dev/null
+++ b/chromium-60.0.3112.90-init-list-hack.patch
@@ -0,0 +1,34 @@
+diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.tryfix chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+--- chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.tryfix 2017-08-09 14:45:17.619172987 -0400
++++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc 2017-08-09 14:46:07.375213058 -0400
+@@ -382,7 +382,7 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+
+ NGLogicalOffset child_bfc_offset = curr_bfc_offset_;
+ child_bfc_offset.inline_offset +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start};
++ {{border_and_padding_.inline_start + curr_child_margins_.inline_start}};
+
+ // Append the current margin strut with child's block start margin.
+ // Non empty border/padding, and new FC use cases are handled inside of the
+@@ -396,8 +396,8 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+ // Should collapse margins if our child is a legacy block.
+ if (IsLegacyBlock(*child)) {
+ curr_bfc_offset_ +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
+- curr_margin_strut_.Sum()};
++ {{border_and_padding_.inline_start + curr_child_margins_.inline_start,
++ curr_margin_strut_.Sum()}};
+ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
+ &container_builder_);
+ PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
+@@ -526,8 +526,8 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+ margin_strut.Append(curr_child_margins_.block_end);
+
+ curr_bfc_offset_ +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
+- margin_strut.Sum()};
++ {{border_and_padding_.inline_start + curr_child_margins_.inline_start,
++ margin_strut.Sum()}};
+ AdjustToClearance(space.ClearanceOffset(), &curr_bfc_offset_);
+ PositionPendingFloatsFromOffset(
+ curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
diff --git a/chromium.spec b/chromium.spec
index 7cc501e..40b532b 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -198,8 +198,7 @@ Patch44: chromium-60.0.3112.78-gtk2fix.patch
# Do not mangle zlib
Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
# Apply this change to work around EPEL7 compiler issues
-# https://chromium.googlesource.com/chromium/src/+/639c840bf93e2934fe6b3f56...
-Patch46: chromium-60.0.3112.90-no-per-child.patch
+Patch46: chromium-60.0.3112.90-init-list-hack.patch
### Chromium Tests Patches ###
@@ -629,7 +628,7 @@ udev.
%patch44 -p1 -b .gtk2fix
%patch45 -p1 -b .nozmangle
%if 0%{?rhel} == 7
-%patch46 -p1 -b .noperchild
+%patch46 -p1 -b .oldgcc
%endif
### Chromium Tests Patches ###
7 years, 3 months
[chromium-freeworld: 141/148] apply upstream commit to work around EPEL7 compiler issues
by Miro Hrončok
commit bbbf61dadd948f4cd8f2a7a0677b30270a29a953
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Aug 9 13:48:24 2017 -0400
apply upstream commit to work around EPEL7 compiler issues
chromium-60.0.3112.90-no-per-child.patch | 843 +++++++++++++++++++++++++++++++
chromium.spec | 11 +-
2 files changed, 853 insertions(+), 1 deletion(-)
---
diff --git a/chromium-60.0.3112.90-no-per-child.patch b/chromium-60.0.3112.90-no-per-child.patch
new file mode 100644
index 0000000..743cce2
--- /dev/null
+++ b/chromium-60.0.3112.90-no-per-child.patch
@@ -0,0 +1,843 @@
+diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc.perchild chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc
+--- chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc.perchild 2017-08-02 18:05:34.000000000 -0400
++++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_layout_algorithm.cc 2017-08-09 13:30:01.000000000 -0400
+@@ -55,11 +55,11 @@ NGInlineLayoutAlgorithm::NGInlineLayoutA
+ // Only resolve our BFC offset if we know that we are non-empty as we may
+ // need to pass through our margin strut.
+ if (!inline_node->Items().IsEmpty()) {
+- NGLogicalOffset bfc_offset = ConstraintSpace().BfcOffset();
+- bfc_offset.block_offset += ConstraintSpace().MarginStrut().Sum();
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), bfc_offset,
++ LayoutUnit bfc_block_offset = ConstraintSpace().BfcOffset().block_offset;
++ bfc_block_offset += ConstraintSpace().MarginStrut().Sum();
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), bfc_block_offset,
+ &container_builder_);
+- PositionPendingFloats(bfc_offset.block_offset, &container_builder_,
++ PositionPendingFloats(bfc_block_offset, &container_builder_,
+ MutableConstraintSpace());
+ }
+
+@@ -222,6 +222,7 @@ bool NGInlineLayoutAlgorithm::PlaceItems
+ NGLineHeightMetrics line_metrics_with_leading = line_metrics;
+ line_metrics_with_leading.AddLeading(line_style.ComputedLineHeightAsFixed());
+ NGLineBoxFragmentBuilder line_box(Node());
++ line_box.SetWritingMode(ConstraintSpace().WritingMode());
+
+ // Compute heights of all inline items by placing the dominant baseline at 0.
+ // The baseline is adjusted after the height of the line box is computed.
+@@ -231,8 +232,7 @@ bool NGInlineLayoutAlgorithm::PlaceItems
+
+ // Place items from line-left to line-right along with the baseline.
+ // Items are already bidi-reordered to the visual order.
+- LayoutUnit line_left_position = LogicalLeftOffset();
+- LayoutUnit position = line_left_position;
++ LayoutUnit position;
+
+ for (auto& item_result : *line_items) {
+ const NGInlineItem& item = items[item_result.item_index];
+@@ -253,13 +253,28 @@ bool NGInlineLayoutAlgorithm::PlaceItems
+ item_result.end_offset);
+ line_box.AddChild(std::move(text_fragment), {position, box->text_top});
+ } else if (item.Type() == NGInlineItem::kOpenTag) {
+- box = box_states_.OnOpenTag(item, &line_box, &text_builder);
++ box = box_states_.OnOpenTag(item, &line_box);
+ // Compute text metrics for all inline boxes since even empty inlines
+ // influence the line height.
+ // https://drafts.csswg.org/css2/visudet.html#line-height
+ box->ComputeTextMetrics(*item.Style(), baseline_type_);
++ text_builder.SetDirection(box->style->Direction());
++ // TODO(kojii): We may need more conditions to create box fragments.
++ if (item.Style()->HasBoxDecorationBackground()) {
++ // TODO(kojii): These are once computed in NGLineBreaker. Should copy to
++ // NGInlineItemResult to reuse here.
++ NGBoxStrut borders = ComputeBorders(*constraint_space_, *item.Style());
++ NGBoxStrut paddings = ComputePadding(*constraint_space_, *item.Style());
++ // TODO(kojii): Set paint edges.
++ box->SetNeedsBoxFragment(position,
++ borders.block_start + paddings.block_start,
++ borders.BlockSum() + paddings.BlockSum());
++ }
+ } else if (item.Type() == NGInlineItem::kCloseTag) {
+- box = box_states_.OnCloseTag(item, &line_box, box, baseline_type_);
++ position += item_result.inline_size;
++ box = box_states_.OnCloseTag(item, &line_box, box, baseline_type_,
++ position);
++ continue;
+ } else if (item.Type() == NGInlineItem::kAtomicInline) {
+ box = PlaceAtomicInline(item, &item_result, position, &line_box,
+ &text_builder);
+@@ -286,12 +301,11 @@ bool NGInlineLayoutAlgorithm::PlaceItems
+ return true; // The line was empty.
+ }
+
+- box_states_.OnEndPlaceItems(&line_box, baseline_type_);
++ box_states_.OnEndPlaceItems(&line_box, baseline_type_, position);
+
+ // The baselines are always placed at pixel boundaries. Not doing so results
+ // in incorrect layout of text decorations, most notably underlines.
+- LayoutUnit baseline = content_size_ + line_box.Metrics().ascent +
+- border_and_padding_.block_start;
++ LayoutUnit baseline = content_size_ + line_box.Metrics().ascent;
+ baseline = LayoutUnit(baseline.Round());
+
+ // Check if the line fits into the constraint space in block direction.
+@@ -313,19 +327,14 @@ bool NGInlineLayoutAlgorithm::PlaceItems
+ // the line box to the line top.
+ line_box.MoveChildrenInBlockDirection(baseline);
+
+- DCHECK_EQ(line_left_position, LogicalLeftOffset());
+- LayoutUnit inline_size = position - line_left_position;
+- line_box.SetInlineSize(inline_size);
+-
+- // Account for text align property.
+- if (Node()->Style().GetTextAlign() == ETextAlign::kRight) {
+- line_box.MoveChildrenInInlineDirection(
+- current_opportunity_.size.inline_size - inline_size);
+- }
++ LayoutUnit inline_size = position;
++ NGLogicalOffset offset(LogicalLeftOffset(),
++ baseline - box_states_.LineBoxState().metrics.ascent);
++ ApplyTextAlign(&offset.inline_offset, inline_size,
++ current_opportunity_.size.inline_size);
+
+- container_builder_.AddChild(
+- line_box.ToLineBoxFragment(),
+- {LayoutUnit(), baseline - box_states_.LineBoxState().metrics.ascent});
++ line_box.SetInlineSize(inline_size);
++ container_builder_.AddChild(line_box.ToLineBoxFragment(), offset);
+
+ max_inline_size_ = std::max(max_inline_size_, inline_size);
+ content_size_ = line_bottom;
+@@ -342,7 +351,7 @@ NGInlineBoxState* NGInlineLayoutAlgorith
+ NGTextFragmentBuilder* text_builder) {
+ DCHECK(item_result->layout_result);
+
+- NGInlineBoxState* box = box_states_.OnOpenTag(item, line_box, text_builder);
++ NGInlineBoxState* box = box_states_.OnOpenTag(item, line_box);
+
+ // For replaced elements, inline-block elements, and inline-table elements,
+ // the height is the height of their margin box.
+@@ -371,6 +380,7 @@ NGInlineBoxState* NGInlineLayoutAlgorith
+ // TODO(kojii): Try to eliminate the wrapping text fragment and use the
+ // |fragment| directly. Currently |CopyFragmentDataToLayoutBlockFlow|
+ // requires a text fragment.
++ text_builder->SetDirection(item.Style()->Direction());
+ text_builder->SetSize({fragment.InlineSize(), block_size});
+ LayoutUnit line_top = item_result->margins.block_start - metrics.ascent;
+ RefPtr<NGPhysicalTextFragment> text_fragment = text_builder->ToTextFragment(
+@@ -378,7 +388,31 @@ NGInlineBoxState* NGInlineLayoutAlgorith
+ item_result->end_offset);
+ line_box->AddChild(std::move(text_fragment), {position, line_top});
+
+- return box_states_.OnCloseTag(item, line_box, box, baseline_type_);
++ return box_states_.OnCloseTag(item, line_box, box, baseline_type_,
++ LayoutUnit(0));
++}
++
++void NGInlineLayoutAlgorithm::ApplyTextAlign(LayoutUnit* line_left,
++ LayoutUnit inline_size,
++ LayoutUnit available_width) {
++ // TODO(kojii): Implement text-align-last.
++ ETextAlign text_align = LineStyle().GetTextAlign();
++ switch (text_align) {
++ case ETextAlign::kRight:
++ case ETextAlign::kWebkitRight:
++ // Wide lines spill out of the block based off direction.
++ // So even if text-align is right, if direction is LTR, wide lines should
++ // overflow out of the right side of the block.
++ // TODO(kojii): Investigate how to handle trailing spaces.
++ if (inline_size < available_width ||
++ !LineStyle().IsLeftToRightDirection())
++ *line_left += available_width - inline_size;
++ break;
++ default:
++ // TODO(layout-dev): Implement.
++ // Refer to LayoutBlockFlow::UpdateLogicalWidthForAlignment().
++ break;
++ }
+ }
+
+ void NGInlineLayoutAlgorithm::FindNextLayoutOpportunity() {
+@@ -396,6 +430,10 @@ void NGInlineLayoutAlgorithm::FindNextLa
+ }
+
+ RefPtr<NGLayoutResult> NGInlineLayoutAlgorithm::Layout() {
++ // If we are resuming from a break token our start border and padding is
++ // within a previous fragment.
++ content_size_ = BreakToken() ? LayoutUnit() : border_and_padding_.block_start;
++
+ NGLineBreaker line_breaker(Node(), constraint_space_, BreakToken());
+ NGInlineItemResults item_results;
+ while (true) {
+@@ -407,7 +445,7 @@ RefPtr<NGLayoutResult> NGInlineLayoutAlg
+ }
+
+ // TODO(crbug.com/716930): Avoid calculating border/padding twice.
+- if (!Node()->Items().IsEmpty())
++ if (!BreakToken())
+ content_size_ -= border_and_padding_.block_start;
+
+ // TODO(kojii): Check if the line box width should be content or available.
+diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.perchild chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
+--- chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc.perchild 2017-08-02 18:05:34.000000000 -0400
++++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc 2017-08-09 13:30:01.000000000 -0400
+@@ -67,14 +67,31 @@ bool IsOutOfSpace(const NGConstraintSpac
+
+ } // namespace
+
++// This struct is used for communicating to a child the position of the
++// previous inflow child.
++struct NGPreviousInflowPosition {
++ LayoutUnit bfc_block_offset;
++ LayoutUnit logical_block_offset;
++ NGMarginStrut margin_strut;
++};
++
++// This strut holds information for the current inflow child. The data is not
++// useful outside of handling this single inflow child.
++struct NGInflowChildData {
++ NGLogicalOffset bfc_offset_estimate;
++ NGMarginStrut margin_strut;
++ NGBoxStrut margins;
++};
++
+ void MaybeUpdateFragmentBfcOffset(const NGConstraintSpace& space,
+- const NGLogicalOffset& offset,
++ LayoutUnit bfc_block_offset,
+ NGFragmentBuilder* builder) {
+ DCHECK(builder);
+ if (!builder->BfcOffset()) {
+- NGLogicalOffset mutable_offset(offset);
+- AdjustToClearance(space.ClearanceOffset(), &mutable_offset);
+- builder->SetBfcOffset(mutable_offset);
++ NGLogicalOffset bfc_offset = {space.BfcOffset().inline_offset,
++ bfc_block_offset};
++ AdjustToClearance(space.ClearanceOffset(), &bfc_offset);
++ builder->SetBfcOffset(bfc_offset);
+ }
+ }
+
+@@ -150,11 +167,13 @@ Optional<MinMaxContentSize> NGBlockLayou
+ }
+
+ NGLogicalOffset NGBlockLayoutAlgorithm::CalculateLogicalOffset(
++ const NGBoxStrut& child_margins,
+ const WTF::Optional<NGLogicalOffset>& known_fragment_offset) {
+ if (known_fragment_offset)
+ return known_fragment_offset.value() - ContainerBfcOffset();
+ LayoutUnit inline_offset =
+- border_and_padding_.inline_start + curr_child_margins_.inline_start;
++ border_and_padding_.inline_start + child_margins.inline_start;
++ // TODO(ikilpatrick): Using the content_size_ here looks suspicious - check.
+ return {inline_offset, content_size_};
+ }
+
+@@ -199,17 +218,20 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ // within a previous fragment.
+ content_size_ = BreakToken() ? LayoutUnit() : border_and_padding_.block_start;
+
+- curr_margin_strut_ = ConstraintSpace().MarginStrut();
+- curr_bfc_offset_ = ConstraintSpace().BfcOffset();
++ NGMarginStrut input_margin_strut = ConstraintSpace().MarginStrut();
++ LayoutUnit input_bfc_block_offset =
++ ConstraintSpace().BfcOffset().block_offset;
+
+ // Margins collapsing:
+ // Do not collapse margins between parent and its child if there is
+ // border/padding between them.
+ if (border_and_padding_.block_start) {
+- curr_bfc_offset_.block_offset += curr_margin_strut_.Sum();
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
++ input_bfc_block_offset += input_margin_strut.Sum();
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), input_bfc_block_offset,
+ &container_builder_);
+- curr_margin_strut_ = NGMarginStrut();
++ // We reset the block offset here as it may have been effected by clearance.
++ input_bfc_block_offset = ContainerBfcOffset().block_offset;
++ input_margin_strut = NGMarginStrut();
+ }
+
+ // If a new formatting context hits the margin collapsing if-branch above
+@@ -218,29 +240,34 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ // If we are resuming layout from a break token the same rule applies. Margin
+ // struts cannot pass through break tokens.
+ if (ConstraintSpace().IsNewFormattingContext() || BreakToken()) {
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), input_bfc_block_offset,
+ &container_builder_);
+- DCHECK_EQ(curr_margin_strut_, NGMarginStrut());
++ DCHECK_EQ(input_margin_strut, NGMarginStrut());
+ DCHECK_EQ(container_builder_.BfcOffset().value(), NGLogicalOffset());
+- curr_bfc_offset_ = {};
+ }
+
+- curr_bfc_offset_.block_offset += content_size_;
++ input_bfc_block_offset += content_size_;
++
++ NGPreviousInflowPosition previous_inflow_position = {
++ input_bfc_block_offset, content_size_, input_margin_strut};
+
+ while (child) {
+ if (child->IsOutOfFlowPositioned()) {
+ DCHECK(!child_break_token);
+- HandleOutOfFlowPositioned(ToNGBlockNode(child));
++ HandleOutOfFlowPositioned(previous_inflow_position, ToNGBlockNode(child));
+ } else if (child->IsFloating()) {
+- HandleFloating(ToNGBlockNode(child),
++ HandleFloating(previous_inflow_position, ToNGBlockNode(child),
+ ToNGBlockBreakToken(child_break_token));
+ } else {
+- NGLogicalOffset child_bfc_offset = PrepareChildLayout(child);
++ NGInflowChildData child_data =
++ PrepareChildLayout(previous_inflow_position, child);
+ RefPtr<NGConstraintSpace> child_space =
+- CreateConstraintSpaceForChild(child_bfc_offset, *child);
++ CreateConstraintSpaceForChild(*child, child_data);
+ RefPtr<NGLayoutResult> layout_result =
+ child->Layout(child_space.Get(), child_break_token);
+- FinishChildLayout(*child_space, child, layout_result.Get());
++ previous_inflow_position =
++ FinishChildLayout(*child_space, previous_inflow_position, child_data,
++ child, layout_result.Get());
+ }
+
+ entry = child_iterator.NextChild();
+@@ -251,6 +278,9 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ break;
+ }
+
++ NGMarginStrut end_margin_strut = previous_inflow_position.margin_strut;
++ LayoutUnit end_bfc_block_offset = previous_inflow_position.bfc_block_offset;
++
+ // Margins collapsing:
+ // Bottom margins of an in-flow block box doesn't collapse with its last
+ // in-flow block-level child's bottom margin if the box has bottom
+@@ -258,8 +288,8 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ content_size_ += border_and_padding_.block_end;
+ if (border_and_padding_.block_end ||
+ ConstraintSpace().IsNewFormattingContext()) {
+- content_size_ += curr_margin_strut_.Sum();
+- curr_margin_strut_ = NGMarginStrut();
++ content_size_ += end_margin_strut.Sum();
++ end_margin_strut = NGMarginStrut();
+ }
+
+ // Recompute the block-axis size now that we know our content size.
+@@ -273,10 +303,10 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ // Non-empty blocks always know their position in space.
+ // TODO(ikilpatrick): This check for a break token seems error prone.
+ if (size.block_size || BreakToken()) {
+- curr_bfc_offset_.block_offset += curr_margin_strut_.Sum();
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
++ end_bfc_block_offset += end_margin_strut.Sum();
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), end_bfc_block_offset,
+ &container_builder_);
+- PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
++ PositionPendingFloats(end_bfc_block_offset, &container_builder_,
+ MutableConstraintSpace());
+ }
+
+@@ -285,9 +315,9 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ // of its parent if the parent has height != auto()
+ if (!Style().LogicalHeight().IsAuto()) {
+ // TODO(glebl): handle minLogicalHeight, maxLogicalHeight.
+- curr_margin_strut_ = NGMarginStrut();
++ end_margin_strut = NGMarginStrut();
+ }
+- container_builder_.SetEndMarginStrut(curr_margin_strut_);
++ container_builder_.SetEndMarginStrut(end_margin_strut);
+
+ container_builder_.SetOverflowSize(
+ NGLogicalSize(max_inline_size_, content_size_));
+@@ -302,33 +332,32 @@ RefPtr<NGLayoutResult> NGBlockLayoutAlgo
+ return container_builder_.ToBoxFragment();
+ }
+
+-void NGBlockLayoutAlgorithm::HandleOutOfFlowPositioned(NGBlockNode* child) {
+- NGLogicalOffset offset = {border_and_padding_.inline_start, content_size_};
++void NGBlockLayoutAlgorithm::HandleOutOfFlowPositioned(
++ const NGPreviousInflowPosition& previous_inflow_position,
++ NGBlockNode* child) {
++ NGLogicalOffset offset = {border_and_padding_.inline_start,
++ previous_inflow_position.logical_block_offset};
+
+ // We only include the margin strut in the OOF static-position if we know we
+ // aren't going to be a zero-block-size fragment.
+ if (container_builder_.BfcOffset())
+- offset.block_offset += curr_margin_strut_.Sum();
++ offset.block_offset += previous_inflow_position.margin_strut.Sum();
+
+ container_builder_.AddOutOfFlowChildCandidate(child, offset);
+ }
+
+-void NGBlockLayoutAlgorithm::HandleFloating(NGBlockNode* child,
+- NGBlockBreakToken* token) {
+- // TODO(ikilpatrick): Pass in BFC offset from previous in-flow child.
+- curr_bfc_offset_ = container_builder_.BfcOffset()
+- ? container_builder_.BfcOffset().value()
+- : ConstraintSpace().BfcOffset();
+- curr_bfc_offset_.block_offset += content_size_;
+-
++void NGBlockLayoutAlgorithm::HandleFloating(
++ const NGPreviousInflowPosition& previous_inflow_position,
++ NGBlockNode* child,
++ NGBlockBreakToken* token) {
+ // Calculate margins in the BFC's writing mode.
+- curr_child_margins_ = CalculateMargins(child);
++ NGBoxStrut margins = CalculateMargins(child);
+
+ NGLogicalOffset origin_offset = constraint_space_->BfcOffset();
+ origin_offset.inline_offset += border_and_padding_.inline_start;
+ RefPtr<NGUnpositionedFloat> unpositioned_float = NGUnpositionedFloat::Create(
+ child_available_size_, child_percentage_size_, origin_offset,
+- constraint_space_->BfcOffset(), curr_child_margins_, child, token);
++ constraint_space_->BfcOffset(), margins, child, token);
+ container_builder_.AddUnpositionedFloat(unpositioned_float);
+
+ // If there is a break token for a float we must be resuming layout, we must
+@@ -337,29 +366,28 @@ void NGBlockLayoutAlgorithm::HandleFloat
+
+ // No need to postpone the positioning if we know the correct offset.
+ if (container_builder_.BfcOffset()) {
+- NGLogicalOffset origin_point = curr_bfc_offset_;
+ // Adjust origin point to the margins of the last child.
+ // Example: <div style="margin-bottom: 20px"><float></div>
+ // <div style="margin-bottom: 30px"></div>
+- origin_point.block_offset += curr_margin_strut_.Sum();
+- PositionPendingFloats(origin_point.block_offset, &container_builder_,
++ LayoutUnit origin_block_offset =
++ previous_inflow_position.bfc_block_offset +
++ previous_inflow_position.margin_strut.Sum();
++ PositionPendingFloats(origin_block_offset, &container_builder_,
+ MutableConstraintSpace());
+ }
+ }
+
+-NGLogicalOffset NGBlockLayoutAlgorithm::PrepareChildLayout(
++NGInflowChildData NGBlockLayoutAlgorithm::PrepareChildLayout(
++ const NGPreviousInflowPosition& previous_inflow_position,
+ NGLayoutInputNode* child) {
+ DCHECK(child);
+ DCHECK(!child->IsFloating());
+
+- // TODO(ikilpatrick): Pass in BFC offset from previous in-flow child.
+- curr_bfc_offset_ = container_builder_.BfcOffset()
+- ? container_builder_.BfcOffset().value()
+- : ConstraintSpace().BfcOffset();
+- curr_bfc_offset_.block_offset += content_size_;
++ LayoutUnit bfc_block_offset = previous_inflow_position.bfc_block_offset;
+
+ // Calculate margins in parent's writing mode.
+- curr_child_margins_ = CalculateMargins(child);
++ NGBoxStrut margins = CalculateMargins(child);
++ NGMarginStrut margin_strut = previous_inflow_position.margin_strut;
+
+ bool should_position_pending_floats =
+ !IsNewFormattingContextForBlockLevelChild(Style(), *child) &&
+@@ -371,45 +399,50 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+ // be positioned before layout. This also resolves the fragment's bfc offset.
+ if (should_position_pending_floats) {
+ LayoutUnit origin_point_block_offset =
+- curr_bfc_offset_.block_offset + curr_margin_strut_.Sum();
+- MaybeUpdateFragmentBfcOffset(
+- ConstraintSpace(),
+- {curr_bfc_offset_.inline_offset, origin_point_block_offset},
+- &container_builder_);
++ bfc_block_offset + margin_strut.Sum();
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), origin_point_block_offset,
++ &container_builder_);
++ // TODO(ikilpatrick): Check if origin_point_block_offset is correct -
++ // MaybeUpdateFragmentBfcOffset might have changed it due to clearance.
+ PositionPendingFloats(origin_point_block_offset, &container_builder_,
+ MutableConstraintSpace());
+ }
+
+- NGLogicalOffset child_bfc_offset = curr_bfc_offset_;
+- child_bfc_offset.inline_offset +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start};
++ NGLogicalOffset child_bfc_offset = {
++ ConstraintSpace().BfcOffset().inline_offset +
++ border_and_padding_.inline_start + margins.inline_start,
++ bfc_block_offset};
++
++ bool is_new_fc = IsNewFormattingContextForBlockLevelChild(Style(), *child);
+
+ // Append the current margin strut with child's block start margin.
+ // Non empty border/padding, and new FC use cases are handled inside of the
+ // child's layout.
+- if (!IsNewFormattingContextForBlockLevelChild(Style(), *child))
+- curr_margin_strut_.Append(curr_child_margins_.block_start);
++ if (!is_new_fc)
++ margin_strut.Append(margins.block_start);
+
+ // TODO(crbug.com/716930): We should also collapse margins below once we
+ // remove LayoutInline splitting.
+
+ // Should collapse margins if our child is a legacy block.
+- if (IsLegacyBlock(*child)) {
+- curr_bfc_offset_ +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
+- curr_margin_strut_.Sum()};
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
+- &container_builder_);
+- PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
++ // TODO(ikilpatrick): I think this can be removed.
++ if (IsLegacyBlock(*child) && !is_new_fc) {
++ child_bfc_offset.block_offset += margin_strut.Sum();
++ MaybeUpdateFragmentBfcOffset(
++ ConstraintSpace(), child_bfc_offset.block_offset, &container_builder_);
++ // TODO(ikilpatrick): Check if child_bfc_offset.block_offset is correct -
++ // MaybeUpdateFragmentBfcOffset might have changed it due to clearance.
++ PositionPendingFloats(child_bfc_offset.block_offset, &container_builder_,
+ MutableConstraintSpace());
+- curr_margin_strut_ = {};
++ margin_strut = {};
+ }
+- child_bfc_offset.block_offset = curr_bfc_offset_.block_offset;
+- return child_bfc_offset;
++ return {child_bfc_offset, margin_strut, margins};
+ }
+
+-void NGBlockLayoutAlgorithm::FinishChildLayout(
++NGPreviousInflowPosition NGBlockLayoutAlgorithm::FinishChildLayout(
+ const NGConstraintSpace& child_space,
++ const NGPreviousInflowPosition& previous_inflow_position,
++ const NGInflowChildData& child_data,
+ const NGLayoutInputNode* child,
+ NGLayoutResult* layout_result) {
+ // Pull out unpositioned floats to the current fragment. This may needed if
+@@ -425,97 +458,134 @@ void NGBlockLayoutAlgorithm::FinishChild
+ // Determine the fragment's position in the parent space.
+ WTF::Optional<NGLogicalOffset> child_bfc_offset;
+ if (child_space.IsNewFormattingContext())
+- child_bfc_offset = PositionNewFc(fragment, child_space);
++ child_bfc_offset = PositionNewFc(*child, previous_inflow_position, fragment,
++ child_data, child_space);
+ else if (fragment.BfcOffset())
+ child_bfc_offset = PositionWithBfcOffset(fragment);
+ else if (IsLegacyBlock(*child))
+- child_bfc_offset = PositionLegacy(child_space);
++ child_bfc_offset = PositionLegacy(child_space, child_data);
+ else if (container_builder_.BfcOffset())
+- child_bfc_offset = PositionWithParentBfc(child_space, fragment);
++ child_bfc_offset = PositionWithParentBfc(child_space, child_data, fragment);
+
+- NGLogicalOffset logical_offset = CalculateLogicalOffset(child_bfc_offset);
++ NGLogicalOffset logical_offset =
++ CalculateLogicalOffset(child_data.margins, child_bfc_offset);
+
+- // Update margin strut.
+- curr_margin_strut_ = fragment.EndMarginStrut();
+- curr_margin_strut_.Append(curr_child_margins_.block_end);
++ NGMarginStrut margin_strut = fragment.EndMarginStrut();
++ margin_strut.Append(child_data.margins.block_end);
+
+- // Only modify content_size if BlockSize is not empty. It's needed to prevent
+- // the situation when logical_offset is included in content_size for empty
+- // blocks. Example:
++ // Only modify content_size_ if the fragment's BlockSize is not empty. This is
++ // needed to prevent the situation when logical_offset is included in
++ // content_size_ for empty blocks. Example:
+ // <div style="overflow:hidden">
+ // <div style="margin-top: 8px"></div>
+ // <div style="margin-top: 10px"></div>
+ // </div>
+ if (fragment.BlockSize())
+- content_size_ = fragment.BlockSize() + logical_offset.block_offset;
+- max_inline_size_ =
+- std::max(max_inline_size_, fragment.InlineSize() +
+- curr_child_margins_.InlineSum() +
+- border_and_padding_.InlineSum());
++ content_size_ = std::max(
++ content_size_, logical_offset.block_offset + fragment.BlockSize());
++ max_inline_size_ = std::max(
++ max_inline_size_, fragment.InlineSize() + child_data.margins.InlineSum() +
++ border_and_padding_.InlineSum());
+
+ container_builder_.AddChild(layout_result, logical_offset);
++
++ // Determine the child's end BFC block offset for the next child to use.
++ LayoutUnit child_end_bfc_block_offset;
++ if (child_bfc_offset) {
++ // TODO(crbug.com/716930): I think the fragment.BfcOffset() condition here
++ // can be removed once we've removed inline splitting.
++ if (fragment.BlockSize() || fragment.BfcOffset()) {
++ child_end_bfc_block_offset =
++ child_bfc_offset.value().block_offset + fragment.BlockSize();
++ } else {
++ DCHECK_EQ(LayoutUnit(), fragment.BlockSize());
++ child_end_bfc_block_offset = previous_inflow_position.bfc_block_offset;
++ }
++ } else {
++ child_end_bfc_block_offset = ConstraintSpace().BfcOffset().block_offset;
++ }
++
++ return {child_end_bfc_block_offset,
++ logical_offset.block_offset + fragment.BlockSize(), margin_strut};
+ }
+
+ NGLogicalOffset NGBlockLayoutAlgorithm::PositionNewFc(
++ const NGLayoutInputNode& child,
++ const NGPreviousInflowPosition& previous_inflow_position,
+ const NGBoxFragment& fragment,
++ const NGInflowChildData& child_data,
+ const NGConstraintSpace& child_space) {
++ const ComputedStyle& child_style = child.Style();
++
++ LayoutUnit child_bfc_offset_estimate =
++ child_data.bfc_offset_estimate.block_offset;
++
+ // 1. Position all pending floats to a temporary space.
+ RefPtr<NGConstraintSpace> tmp_space =
+ NGConstraintSpaceBuilder(&child_space)
+ .SetIsNewFormattingContext(false)
+ .ToConstraintSpace(child_space.WritingMode());
+- PositionFloats(curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
+- curr_bfc_offset_.block_offset,
++ PositionFloats(child_bfc_offset_estimate, child_bfc_offset_estimate,
++ child_bfc_offset_estimate,
+ container_builder_.UnpositionedFloats(), tmp_space.Get());
+
+- NGLogicalOffset origin_offset = curr_bfc_offset_;
+- origin_offset.inline_offset += border_and_padding_.inline_start;
++ NGLogicalOffset origin_offset = {ConstraintSpace().BfcOffset().inline_offset +
++ border_and_padding_.inline_start,
++ child_bfc_offset_estimate};
++ AdjustToClearance(
++ GetClearanceOffset(ConstraintSpace().Exclusions(), child_style.Clear()),
++ &origin_offset);
+
+ // 2. Find an estimated layout opportunity for our fragment.
+ NGLayoutOpportunity opportunity = FindLayoutOpportunityForFragment(
+ tmp_space->Exclusions().get(), child_space.AvailableSize(), origin_offset,
+- curr_child_margins_, fragment.Size());
++ child_data.margins, fragment.Size());
++
++ NGMarginStrut margin_strut = previous_inflow_position.margin_strut;
+
+ // 3. If the found opportunity lies on the same line with our estimated
+ // child's BFC offset then merge fragment's margins with the current
+ // MarginStrut.
+- if (opportunity.offset.block_offset == curr_bfc_offset_.block_offset)
+- curr_margin_strut_.Append(curr_child_margins_.block_start);
+- curr_bfc_offset_.block_offset += curr_margin_strut_.Sum();
+- curr_margin_strut_ = {};
++ if (opportunity.offset.block_offset == child_bfc_offset_estimate)
++ margin_strut.Append(child_data.margins.block_start);
++ child_bfc_offset_estimate += margin_strut.Sum();
+
+ // 4. The child's BFC block offset is known here.
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), child_bfc_offset_estimate,
+ &container_builder_);
+- PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
++ PositionPendingFloats(child_bfc_offset_estimate, &container_builder_,
+ MutableConstraintSpace());
+
+- origin_offset = curr_bfc_offset_;
+- origin_offset.inline_offset += border_and_padding_.inline_start;
++ origin_offset = {ConstraintSpace().BfcOffset().inline_offset +
++ border_and_padding_.inline_start,
++ child_bfc_offset_estimate};
++ AdjustToClearance(
++ GetClearanceOffset(ConstraintSpace().Exclusions(), child_style.Clear()),
++ &origin_offset);
+
+ // 5. Find the final layout opportunity for the fragment after all pending
+ // floats are positioned at the correct BFC block's offset.
+ opportunity = FindLayoutOpportunityForFragment(
+ MutableConstraintSpace()->Exclusions().get(), child_space.AvailableSize(),
+- origin_offset, curr_child_margins_, fragment.Size());
++ origin_offset, child_data.margins, fragment.Size());
+
+- curr_bfc_offset_ = opportunity.offset;
+- return curr_bfc_offset_;
++ return opportunity.offset;
+ }
+
+ NGLogicalOffset NGBlockLayoutAlgorithm::PositionWithBfcOffset(
+ const NGBoxFragment& fragment) {
+ DCHECK(fragment.BfcOffset());
+- curr_bfc_offset_.block_offset = fragment.BfcOffset().value().block_offset;
+- MaybeUpdateFragmentBfcOffset(ConstraintSpace(), curr_bfc_offset_,
++ LayoutUnit bfc_block_offset = fragment.BfcOffset().value().block_offset;
++ MaybeUpdateFragmentBfcOffset(ConstraintSpace(), bfc_block_offset,
+ &container_builder_);
+- PositionPendingFloats(curr_bfc_offset_.block_offset, &container_builder_,
++ PositionPendingFloats(bfc_block_offset, &container_builder_,
+ MutableConstraintSpace());
+ return fragment.BfcOffset().value();
+ }
+
+ NGLogicalOffset NGBlockLayoutAlgorithm::PositionWithParentBfc(
+ const NGConstraintSpace& space,
++ const NGInflowChildData& child_data,
+ const NGBoxFragment& fragment) {
+ // The child must be an in-flow zero-block-size fragment, use its end margin
+ // strut for positioning.
+@@ -523,22 +593,28 @@ NGLogicalOffset NGBlockLayoutAlgorithm::
+ DCHECK_EQ(fragment.BlockSize(), LayoutUnit());
+
+ NGMarginStrut margin_strut = fragment.EndMarginStrut();
+- margin_strut.Append(curr_child_margins_.block_end);
++ margin_strut.Append(child_data.margins.block_end);
+
+- curr_bfc_offset_ +=
+- {border_and_padding_.inline_start + curr_child_margins_.inline_start,
+- margin_strut.Sum()};
+- AdjustToClearance(space.ClearanceOffset(), &curr_bfc_offset_);
+- PositionPendingFloatsFromOffset(
+- curr_bfc_offset_.block_offset, curr_bfc_offset_.block_offset,
+- &container_builder_, MutableConstraintSpace());
+- return curr_bfc_offset_;
++ NGLogicalOffset bfc_offset = {
++ ConstraintSpace().BfcOffset().inline_offset +
++ border_and_padding_.inline_start + child_data.margins.inline_start,
++ child_data.bfc_offset_estimate.block_offset + margin_strut.Sum()};
++ AdjustToClearance(space.ClearanceOffset(), &bfc_offset);
++ PositionPendingFloatsFromOffset(bfc_offset.block_offset,
++ bfc_offset.block_offset, &container_builder_,
++ MutableConstraintSpace());
++ return bfc_offset;
+ }
+
+ NGLogicalOffset NGBlockLayoutAlgorithm::PositionLegacy(
+- const NGConstraintSpace& child_space) {
+- AdjustToClearance(child_space.ClearanceOffset(), &curr_bfc_offset_);
+- return curr_bfc_offset_;
++ const NGConstraintSpace& child_space,
++ const NGInflowChildData& child_data) {
++ NGLogicalOffset bfc_offset = {ConstraintSpace().BfcOffset().inline_offset +
++ border_and_padding_.inline_start +
++ child_data.margins.inline_start,
++ child_data.bfc_offset_estimate.block_offset};
++ AdjustToClearance(child_space.ClearanceOffset(), &bfc_offset);
++ return bfc_offset;
+ }
+
+ void NGBlockLayoutAlgorithm::FinalizeForFragmentation() {
+@@ -609,8 +685,8 @@ NGBoxStrut NGBlockLayoutAlgorithm::Calcu
+ }
+
+ RefPtr<NGConstraintSpace> NGBlockLayoutAlgorithm::CreateConstraintSpaceForChild(
+- const NGLogicalOffset& child_bfc_offset,
+- const NGLayoutInputNode& child) {
++ const NGLayoutInputNode& child,
++ const NGInflowChildData& child_data) {
+ NGConstraintSpaceBuilder space_builder(MutableConstraintSpace());
+ space_builder.SetAvailableSize(child_available_size_)
+ .SetPercentageResolutionSize(child_percentage_size_);
+@@ -618,8 +694,8 @@ RefPtr<NGConstraintSpace> NGBlockLayoutA
+ const ComputedStyle& child_style = child.Style();
+ bool is_new_bfc = IsNewFormattingContextForBlockLevelChild(Style(), child);
+ space_builder.SetIsNewFormattingContext(is_new_bfc)
+- .SetBfcOffset(child_bfc_offset)
+- .SetMarginStrut(curr_margin_strut_);
++ .SetBfcOffset(child_data.bfc_offset_estimate)
++ .SetMarginStrut(child_data.margin_strut);
+
+ if (!is_new_bfc) {
+ space_builder.SetUnpositionedFloats(
+@@ -646,7 +722,7 @@ RefPtr<NGConstraintSpace> NGBlockLayoutA
+ // position in the formatting context, and are able to adjust the
+ // fragmentation line.
+ if (is_new_bfc) {
+- space_available -= child_bfc_offset.block_offset;
++ space_available -= child_data.bfc_offset_estimate.block_offset;
+ }
+ }
+ space_builder.SetFragmentainerSpaceAvailable(space_available);
+diff -up chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h.perchild chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
+--- chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h.perchild 2017-08-02 18:05:34.000000000 -0400
++++ chromium-60.0.3112.90/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h 2017-08-09 13:30:01.000000000 -0400
+@@ -18,10 +18,12 @@ namespace blink {
+
+ class NGConstraintSpace;
+ class NGLayoutResult;
++struct NGInflowChildData;
++struct NGPreviousInflowPosition;
+
+ // Updates the fragment's BFC offset if it's not already set.
+ void MaybeUpdateFragmentBfcOffset(const NGConstraintSpace&,
+- const NGLogicalOffset&,
++ LayoutUnit bfc_block_offset,
+ NGFragmentBuilder* builder);
+
+ // Positions pending floats starting from {@origin_block_offset} and relative
+@@ -52,15 +54,19 @@ class CORE_EXPORT NGBlockLayoutAlgorithm
+
+ // Creates a new constraint space for the current child.
+ RefPtr<NGConstraintSpace> CreateConstraintSpaceForChild(
+- const NGLogicalOffset& child_bfc_offset,
+- const NGLayoutInputNode&);
++ const NGLayoutInputNode& child,
++ const NGInflowChildData& child_data);
+
+ // @return Estimated BFC offset for the "to be layout" child.
+- NGLogicalOffset PrepareChildLayout(NGLayoutInputNode*);
++ NGInflowChildData PrepareChildLayout(const NGPreviousInflowPosition&,
++ NGLayoutInputNode*);
+
+- void FinishChildLayout(const NGConstraintSpace&,
+- const NGLayoutInputNode* child,
+- NGLayoutResult*);
++ NGPreviousInflowPosition FinishChildLayout(
++ const NGConstraintSpace&,
++ const NGPreviousInflowPosition& prev_data,
++ const NGInflowChildData& child_data,
++ const NGLayoutInputNode* child,
++ NGLayoutResult*);
+
+ // Positions the fragment that establishes a new formatting context.
+ //
+@@ -81,7 +87,10 @@ class CORE_EXPORT NGBlockLayoutAlgorithm
+ // then it will be placed there and we collapse its margin.
+ // 2) If #new-fc is too big then we need to clear its position and place it
+ // below #float ignoring its vertical margin.
+- NGLogicalOffset PositionNewFc(const NGBoxFragment&,
++ NGLogicalOffset PositionNewFc(const NGLayoutInputNode& child,
++ const NGPreviousInflowPosition&,
++ const NGBoxFragment&,
++ const NGInflowChildData& child_data,
+ const NGConstraintSpace& child_space);
+
+ // Positions the fragment that knows its BFC offset.
+@@ -95,12 +104,16 @@ class CORE_EXPORT NGBlockLayoutAlgorithm
+ // <div style="padding: 1px">
+ // <div id="empty-div" style="margins: 1px"></div>
+ NGLogicalOffset PositionWithParentBfc(const NGConstraintSpace&,
++ const NGInflowChildData& child_data,
+ const NGBoxFragment&);
+
+- NGLogicalOffset PositionLegacy(const NGConstraintSpace& child_space);
++ NGLogicalOffset PositionLegacy(const NGConstraintSpace& child_space,
++ const NGInflowChildData& child_data);
+
+- void HandleOutOfFlowPositioned(NGBlockNode*);
+- void HandleFloating(NGBlockNode*, NGBlockBreakToken*);
++ void HandleOutOfFlowPositioned(const NGPreviousInflowPosition&, NGBlockNode*);
++ void HandleFloating(const NGPreviousInflowPosition&,
++ NGBlockNode*,
++ NGBlockBreakToken*);
+
+ // Final adjustments before fragment creation. We need to prevent the
+ // fragment from crossing fragmentainer boundaries, and rather create a break
+@@ -112,6 +125,7 @@ class CORE_EXPORT NGBlockLayoutAlgorithm
+ // or {@code known_fragment_offset} if the fragment knows it's offset
+ // @return Fragment's offset relative to the fragment's parent.
+ NGLogicalOffset CalculateLogicalOffset(
++ const NGBoxStrut& child_margins,
+ const WTF::Optional<NGLogicalOffset>& known_fragment_offset);
+
+ NGLogicalSize child_available_size_;
+@@ -120,10 +134,6 @@ class CORE_EXPORT NGBlockLayoutAlgorithm
+ NGBoxStrut border_and_padding_;
+ LayoutUnit content_size_;
+ LayoutUnit max_inline_size_;
+- // MarginStrut for the previous child.
+- NGMarginStrut curr_margin_strut_;
+- NGLogicalOffset curr_bfc_offset_;
+- NGBoxStrut curr_child_margins_;
+ };
+
+ } // namespace blink
diff --git a/chromium.spec b/chromium.spec
index bd1de7e..7cc501e 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -116,7 +116,7 @@ Name: chromium%{chromium_channel}%{?freeworld:-freeworld}
Name: chromium%{chromium_channel}
%endif
Version: %{majorversion}.0.3112.90
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A WebKit (Blink) powered web browser
Url: http://www.chromium.org/Home
License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
@@ -197,6 +197,9 @@ Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch
Patch44: chromium-60.0.3112.78-gtk2fix.patch
# Do not mangle zlib
Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch
+# Apply this change to work around EPEL7 compiler issues
+# https://chromium.googlesource.com/chromium/src/+/639c840bf93e2934fe6b3f56...
+Patch46: chromium-60.0.3112.90-no-per-child.patch
### Chromium Tests Patches ###
@@ -625,6 +628,9 @@ udev.
%patch43 -p1 -b .nomangle
%patch44 -p1 -b .gtk2fix
%patch45 -p1 -b .nozmangle
+%if 0%{?rhel} == 7
+%patch46 -p1 -b .noperchild
+%endif
### Chromium Tests Patches ###
%patch100 -p1 -b .use_system_opus
@@ -1832,6 +1838,9 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%changelog
+* Wed Aug 9 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-2
+- apply post 60 code commit to get code building on epel7
+
* Fri Aug 4 2017 Tom Callaway <spot(a)fedoraproject.org> 60.0.3112.90-1
- update to 60.0.3112.90
7 years, 3 months
[chromium-freeworld: 140/148] BR: mesa-libGL-devel
by Miro Hrončok
commit bf4b08a13ee7f5f79857e6ff2c0d3d84d593617c
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Aug 7 13:16:48 2017 -0400
BR: mesa-libGL-devel
chromium.spec | 1 +
1 file changed, 1 insertion(+)
---
diff --git a/chromium.spec b/chromium.spec
index c45d495..bd1de7e 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -341,6 +341,7 @@ BuildRequires: libwebp-devel
BuildRequires: libxslt-devel
# Same here, it seems.
# BuildRequires: libyuv-devel
+BuildRequires: mesa-libGL-devel
%if %{bundleopus}
# Do nothing
%else
7 years, 3 months
[chromium-freeworld: 139/148] add minizip, conditionalize webp bundling for rhel7
by Miro Hrončok
commit 0d0973d539425f47d438cf4a46cf9acda5c7ffc7
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Mon Aug 7 10:30:46 2017 -0400
add minizip, conditionalize webp bundling for rhel7
chromium.spec | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
---
diff --git a/chromium.spec b/chromium.spec
index a9decb9..c45d495 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -83,10 +83,12 @@ BuildRequires: libicu-devel >= 5.4
%global bundleopus 1
%global bundlelibusbx 1
%global bundleharfbuzz 1
+%global bundlelibwebp 1
%else
%global bundleharfbuzz 0
%global bundleopus 1
%global bundlelibusbx 0
+%global bundlelibwebp 0
%endif
# Needs at least harfbuzz 1.4.2 now.
@@ -260,6 +262,7 @@ BuildRequires: libusb-devel
BuildRequires: libXdamage-devel
BuildRequires: libXScrnSaver-devel
BuildRequires: libXtst-devel
+BuildRequires: minizip-devel
BuildRequires: nodejs
BuildRequires: nss-devel
BuildRequires: pciutils-devel
@@ -330,7 +333,11 @@ BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a
# We don't use libvpx anymore because Chromium loves to
# use bleeding edge revisions here that break other things
# ... so we just use the bundled libvpx.
+%if %{bundlelibwebp}
+# Do nothing
+%else
BuildRequires: libwebp-devel
+%endif
BuildRequires: libxslt-devel
# Same here, it seems.
# BuildRequires: libyuv-devel
@@ -442,7 +449,9 @@ Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d
Provides: bundled(libusbx) = 1.0.17
%endif
Provides: bundled(libvpx) = 1.6.0
-# Provides: bundled(libwebp) = 0.6.0
+%if %{bundlelibwebp}
+Provides: bundled(libwebp) = 0.6.0
+%endif
%if %{bundlelibxml}
# Well, it's actually newer than 2.9.4 and has code in it that has been reverted upstream... but eh.
Provides: bundled(libxml) = 2.9.4
@@ -962,7 +971,10 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \
%else
libusb \
%endif
+%if %{bundlelibwebp}
+%else
libwebp \
+%endif
%if %{bundlelibxml}
%else
libxml \
7 years, 3 months