diff --git a/srcpkgs/chromium/files/chromium-enable-vaapi.patch b/srcpkgs/chromium/files/chromium-enable-vaapi.patch new file mode 100644 index 00000000000..24f1ba77f76 --- /dev/null +++ b/srcpkgs/chromium/files/chromium-enable-vaapi.patch @@ -0,0 +1,542 @@ +diff -ur chrome/browser/about_flags.cc chromium-69.0.3497.92/chrome/browser/about_flags.cc +--- chrome/browser/about_flags.cc 2018-09-12 00:39:23.000000000 +0530 ++++ chrome/browser/about_flags.cc 2018-09-13 22:10:33.938016199 +0530 +@@ -1238,12 +1238,14 @@ + {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName, + flag_descriptions::kUiPartialSwapDescription, kOsAll, + SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)}, ++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) + {"disable-webrtc-hw-decoding", flag_descriptions::kWebrtcHwDecodingName, + flag_descriptions::kWebrtcHwDecodingDescription, kOsAndroid | kOsCrOS, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWDecoding)}, + {"disable-webrtc-hw-encoding", flag_descriptions::kWebrtcHwEncodingName, + flag_descriptions::kWebrtcHwEncodingDescription, kOsAndroid | kOsCrOS, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebRtcHWEncoding)}, ++#endif + {"enable-webrtc-hw-h264-encoding", + flag_descriptions::kWebrtcHwH264EncodingName, + flag_descriptions::kWebrtcHwH264EncodingDescription, kOsAndroid | kOsCrOS, +@@ -1612,6 +1614,13 @@ + flag_descriptions::kShowTouchHudDescription, kOsCrOS, + SINGLE_VALUE_TYPE(ash::switches::kAshTouchHud)}, + #endif // OS_CHROMEOS ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ { ++ "enable-accelerated-video", flag_descriptions::kAcceleratedVideoName, ++ flag_descriptions::kAcceleratedVideoDescription, kOsLinux, ++ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedVideo), ++ }, ++#else + { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, +@@ -1619,6 +1628,7 @@ + kOsMac | kOsWin | kOsCrOS | kOsAndroid, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, ++#endif + #if defined(OS_WIN) + {"enable-hdr", flag_descriptions::kEnableHDRName, + flag_descriptions::kEnableHDRDescription, kOsWin, +@@ -2291,12 +2301,17 @@ + FEATURE_VALUE_TYPE(features::kOpenVR)}, + #endif // ENABLE_OPENVR + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ {"enable-accelerated-mjpeg-decode", ++ flag_descriptions::kAcceleratedMjpegDecodeName, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsLinux, ++ SINGLE_VALUE_TYPE(switches::kEnableAcceleratedMjpegDecode)}, ++#elif defined(OS_CHROMEOS) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, + flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +Only in chrome/browser: about_flags.cc.orig +diff -ur chrome/browser/chromeos/login/chrome_restart_request.cc chromium-69.0.3497.92/chrome/browser/chromeos/login/chrome_restart_request.cc +--- chrome/browser/chromeos/login/chrome_restart_request.cc 2018-09-12 00:39:23.000000000 +0530 ++++ chrome/browser/chromeos/login/chrome_restart_request.cc 2018-09-13 22:10:33.986014728 +0530 +@@ -19,6 +19,7 @@ + #include "base/sys_info.h" + #include "base/timer/timer.h" + #include "base/values.h" ++#include "build/build_config.h" + #include "cc/base/switches.h" + #include "chrome/browser/browser_process.h" + #include "chrome/browser/chromeos/boot_times_recorder.h" +@@ -84,9 +85,14 @@ + ::switches::kDisable2dCanvasImageChromium, + ::switches::kDisableAccelerated2dCanvas, + ::switches::kDisableAcceleratedJpegDecoding, ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ ::switches::kEnableAcceleratedMjpegDecode, ++ ::switches::kEnableAcceleratedVideo, ++#else + ::switches::kDisableAcceleratedMjpegDecode, + ::switches::kDisableAcceleratedVideoDecode, + ::switches::kDisableAcceleratedVideoEncode, ++#endif + ::switches::kDisableBlinkFeatures, + ::switches::kDisableCastStreamingHWEncoding, + ::switches::kDisableGpu, +@@ -160,8 +166,10 @@ + ::switches::kEnableWebGLImageChromium, + ::switches::kEnableWebVR, + ::switches::kEnableUnsafeWebGPU, ++#if (defined(OS_CHROMEOS) || defined(OS_ANDROID)) + ::switches::kDisableWebRtcHWDecoding, + ::switches::kDisableWebRtcHWEncoding, ++#endif + ::switches::kOzonePlatform, + ash::switches::kAshEnableTabletMode, + ash::switches::kAshEnableWaylandServer, +diff -ur chrome/browser/flag_descriptions.cc chromium-69.0.3497.92/chrome/browser/flag_descriptions.cc +--- chrome/browser/flag_descriptions.cc 2018-09-12 00:39:24.000000000 +0530 ++++ chrome/browser/flag_descriptions.cc 2018-09-13 22:10:34.007014085 +0530 +@@ -14,6+14,13 @@ + "Enables the use of the GPU to perform 2d canvas rendering instead of " + "using software rendering."; + ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++const char kAcceleratedVideoName[] = "Hardware-accelerated video"; ++const char kAcceleratedVideoDescription[] = ++ "Hardware-accelerated video where VA-API driver is installed on the" ++ "system."; ++#endif ++ + const char kAcceleratedVideoDecodeName[] = "Hardware-accelerated video decode"; + const char kAcceleratedVideoDecodeDescription[] = + "Hardware-accelerated video decode where available."; +@@ -1986,6 +1993,7 @@ + const char kWebrtcEchoCanceller3Description[] = + "Experimental WebRTC echo canceller (AEC3)."; + ++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) + const char kWebrtcHwDecodingName[] = "WebRTC hardware video decoding"; + const char kWebrtcHwDecodingDescription[] = + "Support in WebRTC for decoding video streams using platform hardware."; +@@ -1993,6 +2001,7 @@ + const char kWebrtcHwEncodingName[] = "WebRTC hardware video encoding"; + const char kWebrtcHwEncodingDescription[] = + "Support in WebRTC for encoding video streams using platform hardware."; ++#endif + + const char kWebrtcHwH264EncodingName[] = "WebRTC hardware h264 video encoding"; + const char kWebrtcHwH264EncodingDescription[] = +@@ -2892,14 +2901,16 @@ + + // Chrome OS ------------------------------------------------------------------- + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + const char kAcceleratedMjpegDecodeName[] = + "Hardware-accelerated mjpeg decode for captured frame"; + const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; ++#endif + ++#if defined(OS_CHROMEOS) + const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click"; + const char kAllowTouchpadThreeFingerClickDescription[] = + "Enables touchpad three-finger-click as middle button."; +diff -ur chrome/browser/flag_descriptions.h chromium-69.0.3497.92/chrome/browser/flag_descriptions.h +--- chrome/browser/flag_descriptions.h 2018-09-12 00:39:24.000000000 +0530 ++++ chrome/browser/flag_descriptions.h 2018-09-13 22:10:34.030013380 +0530 +@@ -37,6 +37,10 @@ + extern const char kAccelerated2dCanvasName[]; + extern const char kAccelerated2dCanvasDescription[]; + ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++extern const char kAcceleratedVideoName[]; ++extern const char kAcceleratedVideoDescription[]; ++#endif + extern const char kAcceleratedVideoDecodeName[]; + extern const char kAcceleratedVideoDecodeDescription[]; + +@@ -1762,13 +1766,17 @@ + + #endif // defined(OS_MACOSX) + +-// Chrome OS ------------------------------------------------------------------ +- +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++#endif ++ ++// Chrome OS ------------------------------------------------------------------ ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAllowTouchpadThreeFingerClickName[]; + extern const char kAllowTouchpadThreeFingerClickDescription[]; + +diff -ur content/browser/gpu/compositor_util.cc chromium-69.0.3497.92/content/browser/gpu/compositor_util.cc +--- content/browser/gpu/compositor_util.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/gpu/compositor_util.cc 2018-09-13 22:10:34.072012092 +0530 +@@ -149,7 +149,11 @@ + {"video_decode", + SafeGetFeatureStatus(gpu_feature_info, + gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE), ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ !command_line.HasSwitch(switches::kEnableAcceleratedVideo), ++#else + command_line.HasSwitch(switches::kDisableAcceleratedVideoDecode), ++#endif + "Accelerated video decode has been disabled, either via blacklist, " + "about:flags or the command line.", + true, true}, +diff -ur content/browser/gpu/gpu_process_host.cc chromium-69.0.3497.92/content/browser/gpu/gpu_process_host.cc +--- content/browser/gpu/gpu_process_host.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/gpu/gpu_process_host.cc 2018-09-13 22:10:34.113010836 +0530 +@@ -209,7 +209,9 @@ + switches::kDisableLogging, + switches::kDisableShaderNameHashing, + switches::kDisableSkiaRuntimeOpts, ++#if !defined(OS_LINUX) + switches::kDisableWebRtcHWEncoding, ++#endif + #if defined(OS_WIN) + switches::kEnableAcceleratedVpxDecode, + #endif +diff -ur content/browser/renderer_host/media/video_capture_browsertest.cc chromium-69.0.3497.92/content/browser/renderer_host/media/video_capture_browsertest.cc +--- content/browser/renderer_host/media/video_capture_browsertest.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/renderer_host/media/video_capture_browsertest.cc 2018-09-13 22:10:34.124010499 +0530 +@@ -165,8 +165,13 @@ + base::CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kUseFakeJpegDecodeAccelerator); + } else { ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ base::CommandLine::ForCurrentProcess()->AppendSwitch( ++ switches::kEnableAcceleratedMjpegDecode); ++#else + base::CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kDisableAcceleratedMjpegDecode); ++#endif + } + } + +diff -ur content/browser/renderer_host/render_process_host_impl.cc chromium-69.0.3497.92/content/browser/renderer_host/render_process_host_impl.cc +--- content/browser/renderer_host/render_process_host_impl.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/renderer_host/render_process_host_impl.cc 2018-09-13 22:10:34.133010223 +0530 +@@ -2798,7 +2798,11 @@ + switches::kDefaultTileHeight, + switches::kDisable2dCanvasImageChromium, + switches::kDisableAcceleratedJpegDecoding, ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ switches::kEnableAcceleratedVideo, ++#else + switches::kDisableAcceleratedVideoDecode, ++#endif + switches::kDisableBackgroundTasks, + switches::kDisableBackgroundTimerThrottling, + switches::kDisableBreakpad, +@@ -2933,8 +2937,10 @@ + #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) + switches::kDisableMojoRenderer, + #endif ++#if !defined(OS_LINUX) || defined(OS_CHROMEOS) + switches::kDisableWebRtcHWDecoding, + switches::kDisableWebRtcHWEncoding, ++#endif + switches::kEnableWebRtcSrtpAesGcm, + switches::kEnableWebRtcSrtpEncryptedHeaders, + switches::kEnableWebRtcStunOrigin, +Only in content/browser/renderer_host: render_process_host_impl.cc.orig +diff -ur content/browser/utility_process_host.cc chromium-69.0.3497.92/content/browser/utility_process_host.cc +--- content/browser/utility_process_host.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/utility_process_host.cc 2018-09-13 22:10:34.296005227 +0530 +@@ -296,7 +296,11 @@ + switches::kOverrideUseSoftwareGLForTests, + switches::kOverrideEnabledCdmInterfaceVersion, + switches::kProxyServer, ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ switches::kEnableAcceleratedMjpegDecode, ++#else + switches::kDisableAcceleratedMjpegDecode, ++#endif + switches::kUseFakeDeviceForMediaStream, + switches::kUseFakeJpegDecodeAccelerator, + switches::kUseFileForFakeVideoCapture, +diff -ur content/browser/webrtc/webrtc_media_recorder_browsertest.cc chromium-69.0.3497.92/content/browser/webrtc/webrtc_media_recorder_browsertest.cc +--- content/browser/webrtc/webrtc_media_recorder_browsertest.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/browser/webrtc/webrtc_media_recorder_browsertest.cc 2018-09-13 22:10:34.143009916 +0530 +@@ -66,7 +66,12 @@ + return; + // This flag is also used for encoding, https://crbug.com/616640. + base::CommandLine::ForCurrentProcess()->AppendSwitch( +- switches::kDisableAcceleratedVideoDecode); ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ switches::kEnableAcceleratedVideo ++#else ++ switches::kDisableAcceleratedVideoDecode ++#endif ++ ); + } + + private: +diff -ur content/gpu/BUILD.gn chromium-69.0.3497.92/content/gpu/BUILD.gn +--- content/gpu/BUILD.gn 2018-09-12 00:39:41.000000000 +0530 ++++ content/gpu/BUILD.gn 2018-09-13 22:10:34.148009763 +0530 +@@ -133,4 +133,8 @@ + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ ++ if (is_desktop_linux) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff -ur content/gpu/gpu_main.cc chromium-69.0.3497.92/content/gpu/gpu_main.cc +--- content/gpu/gpu_main.cc 2018-09-12 00:39:41.000000000 +0530 ++++ content/gpu/gpu_main.cc 2018-09-13 22:10:34.153009610 +0530 +@@ -284,7 +284,7 @@ + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -317,7 +317,7 @@ + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +diff -ur content/public/browser/gpu_utils.cc chromium-69.0.3497.92/content/public/browser/gpu_utils.cc +--- content/public/browser/gpu_utils.cc 2018-09-12 00:39:42.000000000 +0530 ++++ content/public/browser/gpu_utils.cc 2018-09-13 22:10:34.164009273 +0530 +@@ -57,9 +57,17 @@ + gpu_preferences.in_process_gpu = + command_line->HasSwitch(switches::kInProcessGPU); + gpu_preferences.disable_accelerated_video_decode = ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ !command_line->HasSwitch(switches::kEnableAcceleratedVideo); ++#else + command_line->HasSwitch(switches::kDisableAcceleratedVideoDecode); ++#endif + gpu_preferences.disable_accelerated_video_encode = ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ !command_line->HasSwitch(switches::kEnableAcceleratedVideo); ++#else + command_line->HasSwitch(switches::kDisableAcceleratedVideoEncode); ++#endif + #if defined(OS_WIN) + uint32_t enable_accelerated_vpx_decode_val = + gpu::GpuPreferences::VPX_VENDOR_MICROSOFT; +diff -ur content/public/common/content_switches.cc chromium-69.0.3497.92/content/public/common/content_switches.cc +--- content/public/common/content_switches.cc 2018-09-12 00:39:42.000000000 +0530 ++++ content/public/common/content_switches.cc 2018-09-13 22:10:34.172009028 +0530 +@@ -79,6 +79,11 @@ + // Disable gpu-accelerated 2d canvas. + const char kDisableAccelerated2dCanvas[] = "disable-accelerated-2d-canvas"; + ++#if defined(OS_LINUX) ++// Enables hardware acceleration of video for Linux only. VA-API driver ++// is required to be present on the system installation. ++const char kEnableAcceleratedVideo[] = "enable-accelerated-video"; ++#endif + // Disables hardware acceleration of video decode, where available. + const char kDisableAcceleratedVideoDecode[] = + "disable-accelerated-video-decode"; +@@ -868,11 +873,13 @@ + // ignores this switch on its stable and beta channels. + const char kDisableWebRtcEncryption[] = "disable-webrtc-encryption"; + ++#if defined(OS_CHROMEOS) + // Disables HW decode acceleration for WebRTC. + const char kDisableWebRtcHWDecoding[] = "disable-webrtc-hw-decoding"; + + // Disables HW encode acceleration for WebRTC. + const char kDisableWebRtcHWEncoding[] = "disable-webrtc-hw-encoding"; ++#endif + + // Enables negotiation of GCM cipher suites from RFC 7714 for SRTP in WebRTC. + // See https://tools.ietf.org/html/rfc7714 for further information. +diff -ur content/public/common/content_switches.h chromium-69.0.3497.92/content/public/common/content_switches.h +--- content/public/common/content_switches.h 2018-09-12 00:39:42.000000000 +0530 ++++ content/public/common/content_switches.h 2018-09-13 22:10:34.172009028 +0530 +@@ -104,6 +104,9 @@ + CONTENT_EXPORT extern const char kDomAutomationController[]; + extern const char kDisable2dCanvasClipAntialiasing[]; + CONTENT_EXPORT extern const char kDumpBlinkRuntimeCallStats[]; ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++CONTENT_EXPORT extern const char kEnableAcceleratedVideo[]; ++#endif + CONTENT_EXPORT extern const char kEnableAccessibilityObjectModel[]; + CONTENT_EXPORT extern const char kEnableAggressiveDOMStorageFlushing[]; + CONTENT_EXPORT extern const char kEnableAutomation[]; +@@ -241,8 +244,10 @@ + CONTENT_EXPORT extern const char kWaitForDebuggerChildren[]; + + CONTENT_EXPORT extern const char kDisableWebRtcEncryption[]; ++#if defined(OS_CHROMEOS) + CONTENT_EXPORT extern const char kDisableWebRtcHWDecoding[]; + CONTENT_EXPORT extern const char kDisableWebRtcHWEncoding[]; ++#endif + CONTENT_EXPORT extern const char kEnableWebRtcSrtpAesGcm[]; + CONTENT_EXPORT extern const char kEnableWebRtcSrtpEncryptedHeaders[]; + CONTENT_EXPORT extern const char kEnableWebRtcStunOrigin[]; +diff -ur content/renderer/media/webrtc/peer_connection_dependency_factory.cc chromium-69.0.3497.92/content/renderer/media/webrtc/peer_connection_dependency_factory.cc +--- content/renderer/media/webrtc/peer_connection_dependency_factory.cc 2018-09-12 00:39:42.000000000 +0530 ++++ content/renderer/media/webrtc/peer_connection_dependency_factory.cc 2018-09-13 22:10:34.181008752 +0530 +@@ -276,10 +276,18 @@ + + const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); + if (gpu_factories && gpu_factories->IsGpuVideoAcceleratorEnabled()) { ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo)) ++#else + if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWDecoding)) ++#endif + decoder_factory.reset(new RTCVideoDecoderFactory(gpu_factories)); + ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ if (cmd_line->HasSwitch(switches::kEnableAcceleratedVideo)) ++#else + if (!cmd_line->HasSwitch(switches::kDisableWebRtcHWEncoding)) ++#endif + encoder_factory.reset(new RTCVideoEncoderFactory(gpu_factories)); + } + +diff -ur content/renderer/render_thread_impl.cc chromium-69.0.3497.92/content/renderer/render_thread_impl.cc +--- content/renderer/render_thread_impl.cc 2018-09-12 00:39:42.000000000 +0530 ++++ content/renderer/render_thread_impl.cc 2018-09-13 22:10:34.192008415 +0530 +@@ -1441,7 +1441,11 @@ + kGpuStreamPriorityMedia); + + const bool enable_video_accelerator = ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++ cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) && ++#else + !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode) && ++#endif + (gpu_channel_host->gpu_feature_info() + .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE] == + gpu::kGpuFeatureStatusEnabled); +Only in content/renderer: render_thread_impl.cc.orig +diff -ur gpu/config/software_rendering_list.json chromium-69.0.3497.92/gpu/config/software_rendering_list.json +--- gpu/config/software_rendering_list.json 2018-09-12 00:39:44.000000000 +0530 ++++ gpu/config/software_rendering_list.json 2018-09-13 22:10:34.193008384 +0530 +@@ -377,17 +377,6 @@ + ] + }, + { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247], +- "os": { +- "type": "linux" +- }, +- "features": [ +- "accelerated_video_decode" +- ] +- }, +- { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", + "cr_bugs": [145531, 332596, 571899, 629434], +diff -ur media/base/media_switches.cc chromium-69.0.3497.92/media/base/media_switches.cc +--- media/base/media_switches.cc 2018-09-12 00:39:48.000000000 +0530 ++++ media/base/media_switches.cc 2018-09-13 22:10:34.214007740 +0530 +@@ -117,10 +117,15 @@ + // accelerator hardware to be present. + const char kUseFakeJpegDecodeAccelerator[] = "use-fake-jpeg-decode-accelerator"; + ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++// Enable hardware accelerated mjpeg decode on linux ++const char kEnableAcceleratedMjpegDecode[] = "enable-accelerated-mjpeg-decode"; ++#else + // Disable hardware acceleration of mjpeg decode for captured frame, where + // available. + const char kDisableAcceleratedMjpegDecode[] = + "disable-accelerated-mjpeg-decode"; ++#endif + + // When running tests on a system without the required hardware or libraries, + // this flag will cause the tests to fail. Otherwise, they silently succeed. +@@ -462,15 +467,22 @@ + #endif + + bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { ++ ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) ++ if (!base::CommandLine::ForCurrentProcess()->HasSwitch( ++ switches::kEnableAcceleratedMjpegDecode) ++#else + if (base::CommandLine::ForCurrentProcess()->HasSwitch( +- switches::kDisableAcceleratedMjpegDecode)) { ++ switches::kDisableAcceleratedMjpegDecode) ++#endif ++ ) { + return false; + } + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kUseFakeJpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if !defined(OS_ANDROID) && defined(OS_LINUX) + return true; + #endif + return false; +diff -ur media/base/media_switches.h chromium-69.0.3497.92/media/base/media_switches.h +--- media/base/media_switches.h 2018-09-12 00:39:48.000000000 +0530 ++++ media/base/media_switches.h 2018-09-13 22:10:34.283005625 +0530 +@@ -66,7 +66,11 @@ + MEDIA_EXPORT extern const char kUseFileForFakeVideoCapture[]; + MEDIA_EXPORT extern const char kUseFileForFakeAudioCapture[]; + MEDIA_EXPORT extern const char kUseFakeJpegDecodeAccelerator[]; ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++MEDIA_EXPORT extern const char kEnableAcceleratedMjpegDecode[]; ++#else + MEDIA_EXPORT extern const char kDisableAcceleratedMjpegDecode[]; ++#endif + + MEDIA_EXPORT extern const char kRequireAudioHardwareForTesting[]; + MEDIA_EXPORT extern const char kMuteAudio[]; +diff -ur media/gpu/BUILD.gn chromium-69.0.3497.92/media/gpu/BUILD.gn +--- media/gpu/BUILD.gn 2018-09-12 00:39:48.000000000 +0530 ++++ media/gpu/BUILD.gn 2018-09-13 22:10:34.210007863 +0530 +@@ -495,6 +495,14 @@ + } + } + ++if (is_desktop_linux && use_vaapi) { ++ import("//build/config/linux/pkg_config.gni") ++ ++ pkg_config("libva_config") { ++ packages = [ "libva" ] ++ } ++} ++ + if (use_vaapi) { + test("jpeg_encode_accelerator_unittest") { + deps = [ +@@ -559,6 +567,10 @@ + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ ++ if (is_desktop_linux) { ++ public_configs = [ ":libva_config" ] ++ } + } + } + diff --git a/srcpkgs/chromium/patches/chromium-add_missing_stdint_include.patch b/srcpkgs/chromium/patches/chromium-add_missing_stdint_include.patch new file mode 100644 index 00000000000..f4451d64629 --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-add_missing_stdint_include.patch @@ -0,0 +1,30 @@ +Upstream: Yes +Source:https://chromium.googlesource.com/chromium/src.git/+/e3ad3deb6a6e79284f3748fa7410311d87df91c5 + +From e3ad3deb6a6e79284f3748fa7410311d87df91c5 Mon Sep 17 00:00:00 2001 +From: Henrique Nakashima +Date: Tue, 4 Sep 2018 16:49:51 +0000 +Subject: [PATCH] IWYU: stdint.h in pdfium_mem_buffer_file_write.h for uint8_t + +Bug: 879900 +Change-Id: I9c15d1c280a23c53d31f2d72c9d0d1db79eab886 +Reviewed-on: https://chromium-review.googlesource.com/1204410 +Reviewed-by: Lei Zhang +Commit-Queue: Henrique Nakashima +Cr-Commit-Position: refs/heads/master@{#588547} +--- + pdf/pdfium/pdfium_mem_buffer_file_write.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/pdf/pdfium/pdfium_mem_buffer_file_write.h b/pdf/pdfium/pdfium_mem_buffer_file_write.h +index 03c54bb63800e..82e82d23684d8 100644 +--- pdf/pdfium/pdfium_mem_buffer_file_write.h ++++ pdf/pdfium/pdfium_mem_buffer_file_write.h +@@ -6,6 +6,7 @@ + #define PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_H_ + + #include ++#include + + #include + diff --git a/srcpkgs/chromium/patches/chromium-fix_blink_build_error.patch b/srcpkgs/chromium/patches/chromium-fix_blink_build_error.patch new file mode 100644 index 00000000000..59237bcd41d --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-fix_blink_build_error.patch @@ -0,0 +1,99 @@ +Upstream: Yes +Source: https://chromium.googlesource.com/chromium/src/+/87902b3202f81d689dd314c17006ffc907fe12a1 + + +From 87902b3202f81d689dd314c17006ffc907fe12a1 Mon Sep 17 00:00:00 2001 +From: Wang Qing +Date: Mon, 3 Sep 2018 02:41:08 +0000 +Subject: [PATCH] Fix build error for blink. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This CLs fixed the error of constexpr function call to non-constexpr function. + +Bug: 878202 +Change-Id: I6ad217a687e62a9a384980d852743a56479de3a9 +Reviewed-on: https://chromium-review.googlesource.com/1192467 +Commit-Queue: 汪 清 +Reviewed-by: Eric Willigers +Cr-Commit-Position: refs/heads/master@{#588316} +--- + .../core/animation/animation_time_delta.cc | 22 ++++++++++++++ + .../core/animation/animation_time_delta.h | 30 +++++++------------ + 2 files changed, 32 insertions(+), 20 deletions(-) + +diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.cc b/third_party/blink/renderer/core/animation/animation_time_delta.cc +index 1b25469c7f2f5..2e30a18890dab 100644 +--- third_party/blink/renderer/core/animation/animation_time_delta.cc ++++ third_party/blink/renderer/core/animation/animation_time_delta.cc +@@ -7,6 +7,28 @@ + namespace blink { + + #if !defined(BLINK_ANIMATION_USE_TIME_DELTA) ++// Comparison operators on AnimationTimeDelta. ++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() == rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() != rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() > rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() >= rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() <= rhs.InSecondsF(); ++} ++ + std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time) { + return os << time.InSecondsF() << " s"; + } +diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.h b/third_party/blink/renderer/core/animation/animation_time_delta.h +index 1903c1150d3ec..95d218466d90a 100644 +--- third_party/blink/renderer/core/animation/animation_time_delta.h ++++ third_party/blink/renderer/core/animation/animation_time_delta.h +@@ -90,26 +90,16 @@ AnimationTimeDelta operator*(T a, AnimationTimeDelta td) { + } + + // Comparison operators on AnimationTimeDelta. +-constexpr bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() == rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() != rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() > rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() >= rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() <= rhs.InSecondsF(); +-} ++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); + + // Defined to allow DCHECK_EQ/etc to work with the class. + CORE_EXPORT std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time); diff --git a/srcpkgs/chromium/patches/chromium-fix_struct_init.patch b/srcpkgs/chromium/patches/chromium-fix_struct_init.patch new file mode 100644 index 00000000000..ab836764dce --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-fix_struct_init.patch @@ -0,0 +1,37 @@ +Upstream: Yes +Source: https://chromium.googlesource.com/chromium/src/+/cbdb8bd6567c8143dc8c1e5e86a21a8ea064eea4 + +From cbdb8bd6567c8143dc8c1e5e86a21a8ea064eea4 Mon Sep 17 00:00:00 2001 +From: Maksim Sisov +Date: Fri, 7 Sep 2018 18:57:42 +0000 +Subject: [PATCH] OmniboxTextView: fix gcc error for structure initialization + +It looks like there is bug in GCC 6, which cannot go through +structure initialization normally. + +Thus, instead of a default initialization of one of the members, +explicitly initialize it to a default value. + +Change-Id: Ia55cc6658e6b6b2f8a80c2582dd28f001c9e648c +Reviewed-on: https://chromium-review.googlesource.com/1213181 +Reviewed-by: Scott Violet +Commit-Queue: Maksim Sisov +Cr-Commit-Position: refs/heads/master@{#589614} +--- + chrome/browser/ui/views/omnibox/omnibox_text_view.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc +index f0a8083dc9300..9021284f166de 100644 +--- chrome/browser/ui/views/omnibox/omnibox_text_view.cc ++++ chrome/browser/ui/views/omnibox/omnibox_text_view.cc +@@ -175,7 +175,8 @@ void ApplyTextStyleForType(SuggestionAnswer::TextStyle text_style, + style = {part_color, .baseline = gfx::SUPERIOR}; + break; + case SuggestionAnswer::TextStyle::BOLD: +- style = {part_color, .weight = gfx::Font::Weight::BOLD}; ++ style = {part_color, .baseline = gfx::NORMAL_BASELINE, ++ .weight = gfx::Font::Weight::BOLD}; + break; + case SuggestionAnswer::TextStyle::NORMAL: + case SuggestionAnswer::TextStyle::NORMAL_DIM: diff --git a/srcpkgs/chromium/patches/chromium-rename_snap_container_data.patch b/srcpkgs/chromium/patches/chromium-rename_snap_container_data.patch new file mode 100644 index 00000000000..637b94d25d7 --- /dev/null +++ b/srcpkgs/chromium/patches/chromium-rename_snap_container_data.patch @@ -0,0 +1,70 @@ +Upstream: Yes +Source: https://chromium.googlesource.com/chromium/src/+/e98f8ef8b2f236ecbb01df8c39e6ee1c8fbe8d7d + +From e98f8ef8b2f236ecbb01df8c39e6ee1c8fbe8d7d Mon Sep 17 00:00:00 2001 +From: Maksim Sisov +Date: Thu, 13 Sep 2018 15:17:29 +0000 +Subject: [PATCH] ScrollPaintPropertyNode: Rename SnapContainerData() to + GetSnapContainerData() + +GCC is stricter than clang when it comes to class members' names and how +they can change the meaning of a previously existing symbol with the same +name. + +Here is a short error message: + +error: changes meaning of 'SnapContainerData' from 'using SnapContainerData = +class cc::SnapContainerData' [-fpermissive] using SnapContainerData = +cc::SnapContainerData; + +Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel +Change-Id: I0de5460f17b13484253e1ff0538b111c9a3b0d13 +Reviewed-on: https://chromium-review.googlesource.com/1213180 +Commit-Queue: Maksim Sisov +Reviewed-by: Philip Rogers +Cr-Commit-Position: refs/heads/master@{#591015} +--- + .../renderer/core/paint/paint_property_tree_update_tests.cc | 2 +- + .../platform/graphics/compositing/property_tree_manager.cc | 2 +- + .../platform/graphics/paint/scroll_paint_property_node.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc +index 0d999d45076f3..1fe1815a5659c 100644 +--- third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc ++++ third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc +@@ -1310,7 +1310,7 @@ TEST_P(PaintPropertyTreeUpdateTest, EnsureSnapContainerData) { + GetDocument().View()->Resize(300, 300); + GetDocument().View()->UpdateAllLifecyclePhases(); + +- auto doc_snap_container_data = DocScroll()->SnapContainerData(); ++ auto doc_snap_container_data = DocScroll()->GetSnapContainerData(); + ASSERT_TRUE(doc_snap_container_data); + EXPECT_EQ(doc_snap_container_data->scroll_snap_type().axis, SnapAxis::kBoth); + EXPECT_EQ(doc_snap_container_data->scroll_snap_type().strictness, +diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +index 745b8c8b387ea..5f87eeea94357 100644 +--- third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc ++++ third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +@@ -333,7 +333,7 @@ void PropertyTreeManager::CreateCompositorScrollNode( + scroll_node->OverscrollBehaviorX()), + static_cast( + scroll_node->OverscrollBehaviorY())); +- compositor_node.snap_container_data = scroll_node->SnapContainerData(); ++ compositor_node.snap_container_data = scroll_node->GetSnapContainerData(); + + auto compositor_element_id = scroll_node->GetCompositorElementId(); + if (compositor_element_id) { +diff --git a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h +index e1479269ccc37..5bd7f65f10bac 100644 +--- third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h ++++ third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h +@@ -99,7 +99,7 @@ class PLATFORM_EXPORT ScrollPaintPropertyNode + return state_.overscroll_behavior.y; + } + +- base::Optional SnapContainerData() const { ++ base::Optional GetSnapContainerData() const { + return state_.snap_container_data; + } + diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template index 237bf4df375..ecfa1dcece4 100644 --- a/srcpkgs/chromium/template +++ b/srcpkgs/chromium/template @@ -1,22 +1,23 @@ # Template file for 'chromium' pkgname=chromium # See http://www.chromium.org/developers/calendar for the latest version -version=69.0.3497.100 +version=70.0.3538.67 revision=1 short_desc="Google's attempt at creating a safer, faster, and more stable browser" maintainer="Rasmus Thomsen " homepage="https://www.chromium.org/" license="BSD-3-Clause" distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz" -checksum=e3391560e73e25fb4afc3f2dd5616607e2dbfc58aa88251a2c5d6b7096fe9e35 +checksum=e956c2031f634300ada8c09e0777f0c560f4798963f144edaaec8d43e1e30e37 only_for_archs="i686 x86_64 x86_64-musl" lib32disabled=yes nodebug=yes nopie=yes # contains tools that are not PIE, enables PIE itself -build_options="clang" +build_options="clang jumbo_build" desc_option_clang="Use clang to build" +desc_option_jumbo_build="Do a jumbo build, needs way more RAM but builds way faster" hostmakedepends="$(vopt_if clang clang) yasm python pkg-config perl gperf bison ninja nodejs hwids libatomic-devel libevent-devel libglib-devel" @@ -32,16 +33,27 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel ffmpeg-devel" depends="libexif hwids desktop-file-utils hicolor-icon-theme" +build_options_default="jumbo_build" + +# Chromium's VAAPI stuff doesn't build on i686 +if [ "${XBPS_TARGET_MACHINE}" != "i686" ]; then + makedepends+=" libva-devel" +fi + post_extract() { case "${XBPS_TARGET_MACHINE}" in *-musl) - for f in ${FILESDIR}/musl-patches/*.patch; do + for f in "${FILESDIR}"/musl-patches/*.patch; do echo "Applying $f" patch -Np0 -i "$f" done ;; esac + if [ "${XBPS_TARGET_MACHINE}" != "i686" ]; then + patch -Np0 -i "${FILESDIR}"/chromium-enable-vaapi.patch + fi + # Use the file at run time instead of effectively compiling it in sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \ -i device/usb/BUILD.gn @@ -59,7 +71,7 @@ post_extract() { fi } do_configure() { - local system="" bootstrap_conf="" conf="" + local system="" conf=() export -n CFLAGS CXXFLAGS LDFLAGS if [ "$build_option_clang" ]; then @@ -89,6 +101,7 @@ do_configure() { libevent libjpeg libpng + libwebp libxml libxslt opus @@ -97,10 +110,9 @@ do_configure() { yasm " - # TODO: is this still broken? - [ -z "$CROSS_BUILD" ] && system+=" libwebp" - - # remove build scripts for system provided dependencies + # remove build scripts for system provided dependencies - basically does the + # same as the bundeled script to remove bundeled libs, but this way we don't + # have to list the remaining libs for LIB in ${system} libjpeg_turbo; do find -type f -path "*third_party/$LIB/*" \ \! -path "*third_party/$LIB/chromium/*" \ @@ -117,48 +129,45 @@ do_configure() { python2 third_party/libaddressinput/chromium/tools/update-strings.py - bootstrap_conf="is_clang=$(vopt_if clang true false)" - - bootstrap_conf+=' treat_warnings_as_errors=false binutils_path="/usr/bin"' - bootstrap_conf+=' gold_path="/usr/bin/ld.gold" use_sysroot=false' - bootstrap_conf+=' use_allocator="none" use_allocator_shim=false' - - # XXX: gold broken with musl - case "${XBPS_TARGET_MACHINE}" in - *-musl) bootstrap_conf+=' use_gold=false' ;; - *) bootstrap_conf+=' use_gold=true' ;; - esac - - AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \ - python2 tools/gn/bootstrap/bootstrap.py -s -v \ - --gn-gen-args "${bootstrap_conf}" - # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # Note: These are for Void Linux use ONLY. - conf+=' - google_api_key="AIzaSyA9gWazKaHaNIPPg2hrMj6_ZSG8AFmq738" - google_default_client_id="126659149423-hoo6ickbk3p1u2qjsdsp0ddciurfvb4t.apps.googleusercontent.com" - google_default_client_secret="_ozIx2D-DKm_se_2NPwV4l5b"' + conf+=( + 'google_api_key="AIzaSyA9gWazKaHaNIPPg2hrMj6_ZSG8AFmq738"' + 'google_default_client_id="126659149423-hoo6ickbk3p1u2qjsdsp0ddciurfvb4t.apps.googleusercontent.com"' + 'google_default_client_secret="_ozIx2D-DKm_se_2NPwV4l5b"' + ) + conf+=( + 'enable_nacl=false' + 'enable_nacl_nonsfi=false' + "is_clang=$(vopt_if clang true false)" + 'is_debug=false' + 'clang_use_chrome_plugins=false' + 'custom_toolchain="//build/toolchain/linux/unbundle:default"' + 'host_toolchain="//build/toolchain/linux/unbundle:default"' + 'remove_webcore_debug_symbols=true' + 'symbol_level=0' + 'icu_use_data_file=true' + 'use_allocator="none"' + 'use_allocator_shim=false' + 'use_cups=true' + 'use_pulseaudio=true' + 'use_sysroot=false' + 'use_system_harfbuzz=true' + 'enable_widevine=true' + 'enable_hangout_services_extension=true' + 'is_desktop_linux=true' + ) - conf+=' enable_nacl=false enable_nacl_nonsfi=false' + # Jumbo/Unity builds: https://chromium.googlesource.com/chromium/src/+/master/docs/jumbo.md + conf+=( "use_jumbo_build=$(vopt_if jumbo_build true false)" ) - conf+=" is_clang=$(vopt_if clang true false)" - conf+=' is_debug=false - clang_use_chrome_plugins=false - custom_toolchain="//build/toolchain/linux/unbundle:default" - host_toolchain="//build/toolchain/linux/unbundle:default" - remove_webcore_debug_symbols=true - symbol_level=0 - icu_use_data_file=true - use_allocator="none" - use_allocator_shim=false - use_cups=true - use_pulseaudio=true - use_sysroot=false - use_system_harfbuzz=true - enable_widevine=true - enable_hangout_services_extension=true' + # Enable VAAPI. Doesn't compile on i686 + if [ "${XBPS_TARGET_MACHINE}" != "i686" ]; then + conf+=( + 'use_vaapi=true' + ) + fi # Use explicit library dependencies instead of dlopen. # GN only has "link_pulseaudio", the other options used before are not available atm @@ -167,55 +176,61 @@ do_configure() { # linux_link_libpci=true # linux_link_libspeechd=true # libspeechd_h_prefix=\"speech-dispatcher/\"" - conf+=' link_pulseaudio=true' + conf+=( 'link_pulseaudio=true' ) # Never use bundled binutils/gold binary. - conf+=" - binutils_path=\"${XBPS_CROSS_BASE}/usr/bin\" - gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\" - linux_use_bundled_binutils=false - use_custom_libcxx=false - use_lld=false" + conf+=( + "binutils_path=\"${XBPS_CROSS_BASE}/usr/bin\"" + "gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\"" + 'linux_use_bundled_binutils=false' + 'use_custom_libcxx=false' + 'use_lld=false' + ) # XXX: gold broken with musl case "${XBPS_TARGET_MACHINE}" in - *-musl) conf+=' use_gold=false' ;; - *) conf+=' use_gold=true' ;; + *-musl) conf+=( 'use_gold=false' ) ;; + *) conf+=( 'use_gold=true' ) ;; esac # Always support proprietary codecs. # Enable H.264 support in bundled ffmpeg. - conf+=' - proprietary_codecs=true - ffmpeg_branding="Chrome"' + conf+=( + 'proprietary_codecs=true' + 'ffmpeg_branding="Chrome"' + ) # Make sure that -Werror doesn't get added to CFLAGS by the build system. # Depending on GCC version the warnings are different and we don't want # the build to fail because of that. - conf+=' - treat_warnings_as_errors=false - fatal_linker_warnings=false' + conf+=( + 'treat_warnings_as_errors=false' + 'fatal_linker_warnings=false' + ) # Save space by removing DLOG and DCHECK messages (about 6% reduction). # conf+=" logging_like_official_build=true" - conf+=' fieldtrial_testing_like_official_build=true' + conf+=( fieldtrial_testing_like_official_build=true ) case "${XBPS_TARGET_MACHINE}" in - x86_64*) conf+=' target_cpu="x64"' ;; - i686*) conf+=' target_cpu="x86"' ;; - arm*) conf+=' target_cpu="arm"' ;; - aarch64*) conf+=' target_cpu="arm64"' ;; + x86_64*) conf+=( 'target_cpu="x64"' ) ;; + i686*) conf+=( 'target_cpu="x86"' ) ;; + arm*) conf+=( 'target_cpu="arm"' ) ;; + aarch64*) conf+=( 'target_cpu="arm64"' ) ;; esac - out/Release/gn gen out/Release --args="${conf// / }" + AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \ + python2 tools/gn/bootstrap/bootstrap.py -s -v \ + --gn-gen-args "${conf[*]}" + + out/Release/gn gen out/Release --args="${conf[*]}" } do_build() { - ninja -C out/Release ${makejobs} chrome chrome_sandbox chromedriver + ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot } do_install() { vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname} vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver - vinstall out/Release/chrome_sandbox 4755 usr/lib/${pkgname} chrome-sandbox cp out/Release/{*.pak,*.bin} ${DESTDIR}/usr/lib/chromium cp -a out/Release/locales ${DESTDIR}/usr/lib/chromium