diff options
author | Chris Xiong <chirs241097@gmail.com> | 2021-10-14 19:01:18 -0400 |
---|---|---|
committer | Chris Xiong <chirs241097@gmail.com> | 2021-10-14 19:01:18 -0400 |
commit | 846cdbdbf965fc50478bcc4c6436e3dc6a489f3f (patch) | |
tree | 4a39385c982291a110f513871aba340f0a7a061e | |
download | ppo-846cdbdbf965fc50478bcc4c6436e3dc6a489f3f.tar.xz |
Initial commit.
325 files changed, 54711 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4a2c80b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +metadata/cache/ +metadata/md5-cache/ +profiles/use.local.desc + @@ -0,0 +1,22 @@ +Chris' Private Gentoo Portage Overlay + +A lot of these ebuild files are just stolen from other overlays. As a principle +I do not add third-party overlays to my system. Ebuilds are just shell scripts +and despite being sandboxed malicious ones may still do unexpected harm to the +system. Here is where I review third-party ebuilds and add them to my system. +Occasionally I also add updated versions or fixes if some official ebuilds +become unmaintained. All ebuilds here are only guaranteed to work with my +particular setup. I don't test them for the sake of testing, i.e. This overlay +is for private usage only. Use at your own peril. + +Chromium ebuilds until fairly recently (Chromium 87 I believe) were maintained +by me. Those contain the VAAPI patch from Debian and are verified to be working +on Intel iGPU. I stopped working actively on them since a) Chromium VAAPI works +(almost) out of box on Linux desktop now and b) Stephan Hartmann +(sultan@gentoo.org) stepped in and started doing God's work. You will probably +never feel the pain to fix those stupid build errors with libstdc++ on an +outdated dual core ULV processor... Current Chromium ebuilds are just forks of +those in the official portage tree with minor tweaks. AND YOU SHOULD NOT USE MY +OLD CHROMIUM EBUILDS BECAUSE NOBODY SHOULD USE AN OUTDATED BROWSER. They will be +removed shortly. + diff --git a/app-benchmarks/s-tui/Manifest b/app-benchmarks/s-tui/Manifest new file mode 100644 index 0000000..743e2fa --- /dev/null +++ b/app-benchmarks/s-tui/Manifest @@ -0,0 +1,6 @@ +DIST s-tui-0.8.2.tar.gz 2231439 BLAKE2B 528144c449bd8c517421d8eac4ce4b45d212adfdbfb038fea7a3e224e89cfc9ff6c4a60edb7464f47fc2fe6996ea13142ee923957b7a83132281c641b7d2a02c SHA512 1e9f815083d23edb8d31a64537d2029c52de7e8ebefad6de6c3100727abc27775103749ce93d1b49df24997ea42240b85ec9983cbfa286087453e471c978c71b +DIST s-tui-1.0.0.tar.gz 2607169 BLAKE2B cc1bc151bb54ef4b4d844e0f090cc801aade109d35a20f581d21587f90d7b25e69375b19c88bd662a7b094535848d77eb23df10ec9d2c1133e79e7dd1cf71c41 SHA512 feb659d731c10bacb666043148664e29359e90558970f145fae063fb3b4c1301c73d3437f92ca9439a1c6029c087f5be9afdcb3f4ad45e057795b1c959c74602 +DIST s-tui-1.0.2.tar.gz 2607552 BLAKE2B 8ed54c44aeab0ccf5806e8fa1cb566b23d9f27f82a281882b36de85c4800515385c558da59b1ba8f039da15d08696865d5ac201c85c1b74316a7757fc2f02125 SHA512 7b475a4be69b702bd0a916e5c4fbec2dc9976e5033d6afb24af0583eba62292d5f7ab26779e1b55d8adaa113c32984a15311d050e9457d791778734b9236d530 +EBUILD s-tui-0.8.2.ebuild 758 BLAKE2B ef60b5c3ac73e7f544b9d2f54213e1f75ae1156b512118ff71024a6b0f72f7c62f58eec0a1d3cab87e36ce159ebf6bdc9b93d0d5e093bdea1e65c696300aa454 SHA512 a4d1f5d307aff5edf1df747afb239214b11e8f8c75590979ad30333a990a21d16d3bf04fff844d044e88c631c8fa8426e38ac296905d8e007adcc45dad848cf2 +EBUILD s-tui-1.0.0.ebuild 675 BLAKE2B 76d8526ce4f363fe1e047ad58edf0a5423c94a8f14a48d844bf81d939942569f84c0d4ab6062f6ca2a7014cee3e874df0c36cea88c54db1175deec305a8fae04 SHA512 c69110313fe3f7f8bd666a559265fec4812bf9f62ea139a6636de3813df0d6594ad51ce7a0239e60bb4226779ba99c5a8544d38d5c13853699658ceafd014d6d +EBUILD s-tui-1.0.2.ebuild 926 BLAKE2B 8293586b2ad6752a6447a81a5a4f434fcc4223710fdc3e8536e0eaadf681c6850d51a13ca886a016eff81d80fd4bc34bec2fbfc5e243a4c47efa0ee4e163af50 SHA512 ac0ef439723a86da6230467e69f82d69b1f15a22629db8de70861a8822604f10c2d164d5c14292c147a9ab1685f33054ec1d28894039d1916f90dadadb61ff93 diff --git a/app-benchmarks/s-tui/s-tui-1.0.0.ebuild b/app-benchmarks/s-tui/s-tui-1.0.0.ebuild new file mode 100644 index 0000000..005cb68 --- /dev/null +++ b/app-benchmarks/s-tui/s-tui-1.0.0.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit distutils-r1 + +DESCRIPTION="Stress-Terminal UI monitoring tool" +HOMEPAGE="https://amanusk.github.io/s-tui/" + +if [[ ${PV} == *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/amanusk/s-tui" +else + SRC_URI="https://github.com/amanusk/s-tui/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="GPL-2" +SLOT="0" +IUSE="+stress" + +DEPEND="${PYTHON_DEPS}" +RDEPEND="${DEPEND} + >=dev-python/urwid-2.0.1[${PYTHON_USEDEP}] + dev-python/psutil[${PYTHON_USEDEP}] + stress? ( app-benchmarks/stress )" diff --git a/app-benchmarks/s-tui/s-tui-1.0.2.ebuild b/app-benchmarks/s-tui/s-tui-1.0.2.ebuild new file mode 100644 index 0000000..53f18e0 --- /dev/null +++ b/app-benchmarks/s-tui/s-tui-1.0.2.ebuild @@ -0,0 +1,39 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8,9} ) +DISTUTILS_USE_SETUPTOOLS=rdepend + +inherit eutils distutils-r1 + +DESCRIPTION="Stress-Terminal UI monitoring tool" +HOMEPAGE="https://amanusk.github.io/s-tui/" + +if [[ ${PV} == *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/amanusk/${PN}.git" + EGIT_SUBMODULES=() +else + # Pypi source doesn't include tests + SRC_URI="https://github.com/amanusk/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi + +LICENSE="GPL-2" +SLOT="0" + +RDEPEND=" + >=dev-python/urwid-2.0.1[${PYTHON_USEDEP}] + >=dev-python/psutil-5.6.0[${PYTHON_USEDEP}] +" + +distutils_enable_tests unittest + +pkg_postinst() { + elog "To get additional features, some optional runtime dependencies" + elog "may be installed:" + elog "" + optfeature "Stress options in program menu" app-benchmarks/stress +} diff --git a/dev-cpp/pystring/Manifest b/dev-cpp/pystring/Manifest new file mode 100644 index 0000000..a6e3704 --- /dev/null +++ b/dev-cpp/pystring/Manifest @@ -0,0 +1,2 @@ +DIST pystring-1.1.3.tar.gz 18364 BLAKE2B caab1a3b1dc688ad6ecbb32e5e8139bb883a88b78ce8a021229924d57376e94b17d89277e2fccf4f7ec478c81ee9259c5e56848f4388c44b2eab9cfb841bcfb8 SHA512 a46bb2e96d6eb351a4a8097cde46ac2877d28e88f9e57e0ac36c42e8fc8543517c4be70306a01e2f88a891fc53c612494aeb37f47a200d94b8e1b050ed16eff6 +EBUILD pystring-1.1.3-r1.ebuild 845 BLAKE2B caf0280c8b205c0b4663aa72a55cf287dc35a2a3edfad560f9dd3a18c938708a67ac06e912e8ffcc31b00cdf6e5db206e8d87966bda2ced5d9c878b8c4874887 SHA512 5616b6e847d6599d46d5b708a0963b7117a9ee09f4d9d788e04b78d69dd07ef9f7bb4d6e2867edbdecc6446e26d37a7bb4d03ac3f6f4c736ed0546b88d35630f diff --git a/dev-cpp/pystring/pystring-1.1.3-r1.ebuild b/dev-cpp/pystring/pystring-1.1.3-r1.ebuild new file mode 100644 index 0000000..7694add --- /dev/null +++ b/dev-cpp/pystring/pystring-1.1.3-r1.ebuild @@ -0,0 +1,37 @@ +# Copyright 2020-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DESCRIPTION="C++ functions matching the interface and behavior of python string methods" +HOMEPAGE="https://github.com/imageworks/pystring" + +if [[ "${PV}" == "9999" ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/imageworks/pystring.git" +else + SRC_URI="https://github.com/imageworks/pystring/archive/v"${PV}".tar.gz -> "${P}".tar.gz" + KEYWORDS="~amd64" +fi + +BDEPEND=" + virtual/libc + sys-devel/libtool +" +RESTRICT="mirror" + +LICENSE="BSD" +SLOT="0" + +src_compile() { + sed -i -e "s|-O3|${CXXFLAGS}|g" Makefile || die + emake LIBDIR="${S}" install + #Fix header location + mkdir ${S}/pystring || die + mv ${S}/pystring.h ${S}/pystring || die +} + +src_install() { + dolib.so ${S}/libpystring.so{,.0{,.0.0}} + doheader -r ${S}/pystring +} diff --git a/dev-util/apitrace/Manifest b/dev-util/apitrace/Manifest new file mode 100644 index 0000000..9059ddb --- /dev/null +++ b/dev-util/apitrace/Manifest @@ -0,0 +1,5 @@ +AUX apitrace-9.0-brotli-unbundle.patch 4728 BLAKE2B 66ff205968db551cdd8ebc7ba33dfcd39fd36356691722f593f7ce0fa615279c0e440077b3e29c5a643bf5be8a2406a656bfa91fb9f128c2afa922b3ad832a35 SHA512 0690f8d178fd7a5ca11b26d1e23c9c26e984214cef2e3619a22fc6cf58a7ee96fe0b046dd038c202cd6f60b9175dbdd346813c53ca85932f9a4d9dd40e9bdba1 +AUX apitrace-9.0-disable-multiarch.patch 1796 BLAKE2B c687c87b23f3711bd9ac70a345e7e2fbe7dab36f48cbf5a949d7fbeab41ac670054bcee203bf4db8df24cdabc418b7a04980fd1436962a15a8c6371e7d8d0f05 SHA512 5bb89dc98e5bbd92b707988d301ec50ea57f1562bd9a54fc2dada9b5ddafde5da66dd02d03efc377cbcf2bdc7d430f0b1353ed7a7f2d8703aabfeb9b563c1278 +DIST apitrace-9.0.tar.gz 3623693 BLAKE2B 885cfd22d1cc82e36f7f0d65b816784986a8a693d04b483c059d3cffb0328c2cbbfd043793b964cea84d7b09a0dc8dda5f464099e91df26fd5eecef4bbeb28cc SHA512 4234bc2d14378b1bd9554752d83f8ce0703b4e08c3edc85769dc988a2b3a44b8e55d2f5856954658155a11d69802849bae6350ed5031a5916c7ac7bc7287918c +EBUILD apitrace-9.0-r3.ebuild 2254 BLAKE2B 93bc1e1e10ddc8a8668f8e90388117ddfbeb4638974d9232903da5196d0bbf4acf5841818a3bd37cabc9a698b9b5f75490d4114d401196b2ef3ef8208110de93 SHA512 b140bfe57ab70a8e0f2b8b7986875170f0b4f7db35ad1c4e7a7f8b4dbd9137c75d96ce1dc39cfbd379df3d9ba82ba665407c5187b640ef1bc318faa10ad1a2be +MISC metadata.xml 249 BLAKE2B eb5bf02945b5d031a07adba28359ab63035d1ce8601c8dc1d9c6aea54de6a55899672c4606b472a308e61a4b8a45d2f752d4472d7b45bb368fccec9c4c3fc739 SHA512 7230e2d97a0540aed68eb2d1f8383c4e5df9b0c09a628db997fea6224615f76744537e5476a7c1984934d27b9ee05d53b0294d00234b2d16cbc722f822a27f21 diff --git a/dev-util/apitrace/apitrace-9.0-r3.ebuild b/dev-util/apitrace/apitrace-9.0-r3.ebuild new file mode 100644 index 0000000..b6a27ff --- /dev/null +++ b/dev-util/apitrace/apitrace-9.0-r3.ebuild @@ -0,0 +1,86 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +PYTHON_COMPAT=( python3_{7,8,9} ) +inherit cmake-multilib python-single-r1 + +DESCRIPTION="Tool for tracing, analyzing, and debugging graphics APIs" +HOMEPAGE="https://github.com/apitrace/apitrace" +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="qt5 X" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DEPEND="${PYTHON_DEPS} + app-arch/brotli:=[${MULTILIB_USEDEP}] + >=app-arch/snappy-1.1.1[${MULTILIB_USEDEP}] + media-libs/libpng:0= + media-libs/mesa[egl,gles1,gles2,X?,${MULTILIB_USEDEP}] + >=media-libs/waffle-1.6.0-r1[egl,${MULTILIB_USEDEP}] + sys-libs/zlib[${MULTILIB_USEDEP}] + sys-process/procps:=[${MULTILIB_USEDEP}] + X? ( x11-libs/libX11 ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtgui:5[-gles2-only] + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5[-gles2-only] + ) +" +RDEPEND="${DEPEND}" + +PATCHES=( + # TODO: upstream + "${FILESDIR}"/${P}-disable-multiarch.patch + "${FILESDIR}"/${P}-brotli-unbundle.patch +) + +src_prepare() { + cmake_src_prepare + + # The apitrace code grubs around in the internal zlib structures. + # We have to extract this header and clean it up to keep that working. + # Do not be surprised if a zlib upgrade breaks things ... + rm -rf thirdparty/{brotli,snappy,getopt,less,libpng,zlib,dxerr,directxtex,devcon} || die +} + +src_configure() { + my_configure() { + local mycmakeargs=( + -DDOC_INSTALL_DIR="${EPREFIX}"/usr/share/doc/${PF} + -DENABLE_X11=$(usex X) + -DENABLE_EGL=ON + -DENABLE_CLI=ON + -DENABLE_GUI=$(multilib_native_usex qt5) + -DENABLE_STATIC_SNAPPY=OFF + -DENABLE_WAFFLE=ON + ) + cmake_src_configure + } + + multilib_foreach_abi my_configure +} + +src_install() { + MULTILIB_CHOST_TOOLS=( + /usr/bin/apitrace$(get_exeext) + /usr/bin/eglretrace$(get_exeext) + ) + use X && MULTILIB_CHOST_TOOLS+=( /usr/bin/glretrace$(get_exeext) ) + + cmake-multilib_src_install + + make_libgl_symlinks() { + dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so + dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1 + dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1.2 + } + use X && multilib_foreach_abi make_libgl_symlinks +} diff --git a/dev-util/apitrace/files/apitrace-9.0-brotli-unbundle.patch b/dev-util/apitrace/files/apitrace-9.0-brotli-unbundle.patch new file mode 100644 index 0000000..5715eda --- /dev/null +++ b/dev-util/apitrace/files/apitrace-9.0-brotli-unbundle.patch @@ -0,0 +1,158 @@ +From 3a07d551949ff488d1d669600a07d9c73ff4cc55 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Mon, 29 Apr 2019 21:08:02 +0200 +Subject: [PATCH 1/2] Import FindBrotliDec.cmake and FindBrotliEnc.cmake from + Igalia S.L. + +MIT License, which fits well. + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + cmake/FindBrotliDec.cmake | 35 +++++++++++++++++++++++++++++++++++ + cmake/FindBrotliEnc.cmake | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 70 insertions(+) + create mode 100644 cmake/FindBrotliDec.cmake + create mode 100644 cmake/FindBrotliEnc.cmake + +diff --git a/cmake/FindBrotliDec.cmake b/cmake/FindBrotliDec.cmake +new file mode 100644 +index 00000000..abb06f44 +--- /dev/null ++++ b/cmake/FindBrotliDec.cmake +@@ -0,0 +1,35 @@ ++# Copyright 2017 Igalia S.L. All Rights Reserved. ++# ++# Distributed under MIT license. ++# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT ++ ++# Try to find BrotliDec. Once done, this will define ++# ++# BROTLIDEC_FOUND - system has BrotliDec. ++# BROTLIDEC_INCLUDE_DIRS - the BrotliDec include directories ++# BROTLIDEC_LIBRARIES - link these to use BrotliDec. ++ ++find_package(PkgConfig) ++ ++pkg_check_modules(PC_BROTLIDEC libbrotlidec) ++ ++find_path(BROTLIDEC_INCLUDE_DIRS ++ NAMES brotli/decode.h ++ HINTS ${PC_BROTLIDEC_INCLUDEDIR} ++) ++ ++find_library(BROTLIDEC_LIBRARIES ++ NAMES brotlidec ++ HINTS ${PC_BROTLIDEC_LIBDIR} ++) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(BrotliDec ++ REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES ++ FOUND_VAR BROTLIDEC_FOUND ++ VERSION_VAR PC_BROTLIDEC_VERSION) ++ ++mark_as_advanced( ++ BROTLIDEC_INCLUDE_DIRS ++ BROTLIDEC_LIBRARIES ++) +diff --git a/cmake/FindBrotliEnc.cmake b/cmake/FindBrotliEnc.cmake +new file mode 100644 +index 00000000..4be347db +--- /dev/null ++++ b/cmake/FindBrotliEnc.cmake +@@ -0,0 +1,35 @@ ++# Copyright 2017 Igalia S.L. All Rights Reserved. ++# ++# Distributed under MIT license. ++# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT ++ ++# Try to find BrotliEnc. Once done, this will define ++# ++# BROTLIENC_FOUND - system has BrotliEnc. ++# BROTLIENC_INCLUDE_DIRS - the BrotliEnc include directories ++# BROTLIENC_LIBRARIES - link these to use BrotliEnc. ++ ++find_package(PkgConfig) ++ ++pkg_check_modules(PC_BROTLIENC libbrotlienc) ++ ++find_path(BROTLIENC_INCLUDE_DIRS ++ NAMES brotli/encode.h ++ HINTS ${PC_BROTLIENC_INCLUDEDIR} ++) ++ ++find_library(BROTLIENC_LIBRARIES ++ NAMES brotlienc ++ HINTS ${PC_BROTLIENC_LIBDIR} ++) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(BrotliEnc ++ REQUIRED_VARS BROTLIENC_INCLUDE_DIRS BROTLIENC_LIBRARIES ++ FOUND_VAR BROTLIENC_FOUND ++ VERSION_VAR PC_BROTLIENC_VERSION) ++ ++mark_as_advanced( ++ BROTLIENC_INCLUDE_DIRS ++ BROTLIENC_LIBRARIES ++) +-- +2.24.1 + +From 08a410f238aaf6488759e023b66d16cbbd7f6d66 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Mon, 29 Apr 2019 21:11:57 +0200 +Subject: [PATCH 2/2] Find system brotli instead of bundled + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + CMakeLists.txt | 5 +++-- + cli/CMakeLists.txt | 2 +- + lib/trace/CMakeLists.txt | 2 +- + 3 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c71d24e6..88e6b156 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -491,8 +491,9 @@ if (ENABLE_STATIC_SNAPPY OR NOT SNAPPY_FOUND) + endif () + include_directories (${SNAPPY_INCLUDE_DIRS}) + +-include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/brotli/c/include) +-add_subdirectory (thirdparty/brotli) ++find_package(BrotliDec REQUIRED) ++find_package(BrotliEnc REQUIRED) ++include_directories (${BROTLIDEC_INCLUDE_DIRS} ${BROTLIENC_INCLUDE_DIRS}) + + if (NOT WIN32 AND NOT ENABLE_STATIC_EXE) + # zlib 1.2.4-1.2.5 made it impossible to read the last block of incomplete +diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt +index 3a3c127e..0b33ddb5 100644 +--- a/cli/CMakeLists.txt ++++ b/cli/CMakeLists.txt +@@ -39,7 +39,7 @@ add_executable (apitrace + + target_link_libraries (apitrace + common +- brotli_dec brotli_enc brotli_common ++ ${BROTLIDEC_LIBRARIES} ${BROTLIENC_LIBRARIES} + ${ZLIB_LIBRARIES} + ${SNAPPY_LIBRARIES} + ${GETOPT_LIBRARIES} +diff --git a/lib/trace/CMakeLists.txt b/lib/trace/CMakeLists.txt +index c68bd00f..ce2e469e 100644 +--- a/lib/trace/CMakeLists.txt ++++ b/lib/trace/CMakeLists.txt +@@ -31,7 +31,7 @@ target_link_libraries (common + guids + highlight + os +- brotli_dec brotli_common ++ ${BROTLIDEC_LIBRARIES} ${BROTLIENC_LIBRARIES} + ) + + add_gtest (trace_parser_flags_test trace_parser_flags_test.cpp) +-- +2.24.1 + diff --git a/dev-util/apitrace/files/apitrace-9.0-disable-multiarch.patch b/dev-util/apitrace/files/apitrace-9.0-disable-multiarch.patch new file mode 100644 index 0000000..37085b1 --- /dev/null +++ b/dev-util/apitrace/files/apitrace-9.0-disable-multiarch.patch @@ -0,0 +1,53 @@ +From 556397e399994b005524b88171c9c103b8cc1b25 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gentoo.org> +Date: Mon, 29 Apr 2019 20:32:04 +0200 +Subject: [PATCH] Use CMAKE_INSTALL_LIBDIR for LIB_INSTALL_DIR + +Respect the libdir cmake already set up for us instead of using +debian-specific multiarch paths. + +Patch was rebased multiple times from 4.0 to 9.0 now. + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + CMakeLists.txt | 17 ++--------------- + 1 file changed, 2 insertions(+), 15 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 19316e60..6c3c4b85 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -438,15 +438,6 @@ endif () + ############################################################################## + # Installation directories + +-if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +- # Debian multiarch support +- execute_process(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH +- OUTPUT_VARIABLE ARCH_SUBDIR +- ERROR_QUIET +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +-endif() +- + if (WIN32 OR APPLE) + # On Windows/MacOSX, applications are usually installed on a directory of + # their own +@@ -455,12 +446,8 @@ if (WIN32 OR APPLE) + set (LIB_ARCH_INSTALL_DIR lib) + else () + set (DOC_DEFAULT_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME}) +- set (LIB_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME}) +- if (ARCH_SUBDIR) +- set (LIB_ARCH_INSTALL_DIR lib/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME}) +- else () +- set (LIB_ARCH_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME}) +- endif () ++ set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME}) ++ set (LIB_ARCH_INSTALL_DIR ${LIB_INSTALL_DIR}) + endif () + + # Allow customization of the doc installation dir (Slackware uses different +-- +2.24.1 + diff --git a/dev-util/apitrace/metadata.xml b/dev-util/apitrace/metadata.xml new file mode 100644 index 0000000..0a166ed --- /dev/null +++ b/dev-util/apitrace/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <!-- maintainer-needed --> + <upstream> + <remote-id type="github">apitrace/apitrace</remote-id> + </upstream> +</pkgmetadata> diff --git a/dev-util/gammaray/Manifest b/dev-util/gammaray/Manifest new file mode 100644 index 0000000..9831c72 --- /dev/null +++ b/dev-util/gammaray/Manifest @@ -0,0 +1 @@ +EBUILD gammaray-9999.ebuild 450 BLAKE2B 155b0c42716f4e723aba7bb433fb036ccf14089fecc3b5916bf03a3503b1de77238c1096d4005b3e024db6f7390e232e48d0d83c6cbaf9271488174e16cbfdca SHA512 ea9d150dae5a15fbe9ab134e68f386debbf6e760cebe001a93da3623f0d69e2eb5c08e2bcbae99bf3a12fecf59422c26fa17f6be1f5ccc9325ae1f094f3e79c8 diff --git a/dev-util/gammaray/gammaray-9999.ebuild b/dev-util/gammaray/gammaray-9999.ebuild new file mode 100644 index 0000000..4cac866 --- /dev/null +++ b/dev-util/gammaray/gammaray-9999.ebuild @@ -0,0 +1,22 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit cmake-utils git-r3 + +DESCRIPTION="Tool to poke around in a Qt-application and also to manipulate the application to some extent" +HOMEPAGE="http://www.kdab.com/gammaray" +EGIT_REPO_URI="git://github.com/KDAB/GammaRay.git" + +DEPEND=" +dev-qt/qtcore +dev-qt/qtgui +" + +RDEPEND="${DEPEND}" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="" +IUSE="" diff --git a/media-libs/rtmidi/Manifest b/media-libs/rtmidi/Manifest new file mode 100644 index 0000000..6ce7544 --- /dev/null +++ b/media-libs/rtmidi/Manifest @@ -0,0 +1,4 @@ +DIST rtmidi-3.0.0.tar.gz 486434 BLAKE2B 189d308dfd55f95780c316dab0e28ef6a4947b874176a6fe491ff6bf25f845e3481b0d0a9caa57f58ac1418d6b14c831ca5f83115a99da2aaa7822970f06a793 SHA512 b5cba769e4641ac453493e2e6ca6f947d7ef5fe71870dd10aa19c93ad18dd62ed01358c468c0e1e326dbc29bd00ecc32b9d8895276d9f46e9e0aa20ed6e0b70f +DIST rtmidi-4.0.0.tar.gz 509743 BLAKE2B 16a43e0c30e49775e7fcf8af1318fb2240b97d2f5e32e043763e51896b95c38d508b3cdbbf712d562f6e57b7b3ed99f74b5a22c50cd298ebb020215c3e78eed8 SHA512 1b7e6698944104f6a80c17c9af85a9fad4b215af47277f4d9f5e61668cdea86886aae8296c79948313b3efbaa8569c441c38b0b1f3bad20dce3cee19d6a5eaa8 +EBUILD rtmidi-3.0.0.ebuild 683 BLAKE2B e146781aea65315ec642c1a7d2ec6777affe2dcc11b17340c3c414ad5100db74163a19cf0bae7c02bc57e7924fe1b6e456a79b9e276e4c1cdc4022a7130a162a SHA512 16188e414de566d229104815eb821c278bb717de4e8c20229b50686ac8598b8c3765ab118c2de95bc4f28865bb1078b2ba66f946fa9c4917ba5462e3fb6d8877 +EBUILD rtmidi-4.0.0.ebuild 658 BLAKE2B 367438b97aafa5a6d96ac3195b11cc1b22d07d0be28311799f1bdfdcd125a191a0a962b09f86fbcc97d6a670a21540838cf6edbbfc10d1589f6821db99214078 SHA512 664f2829df0bf5f7b34a5358b5baf279e3607c2dcb28cce6ef5a5de7f57fcc534b222db02560e0a8cfed107eff7c1ac2ec3b613d6c34af7726c04153e48bf5ab diff --git a/media-libs/rtmidi/rtmidi-3.0.0.ebuild b/media-libs/rtmidi/rtmidi-3.0.0.ebuild new file mode 100644 index 0000000..8ccc4a1 --- /dev/null +++ b/media-libs/rtmidi/rtmidi-3.0.0.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="common C++ API for realtime MIDI input/output" +HOMEPAGE="http://www.music.mcgill.ca/~gary/rtmidi/" +SRC_URI="http://www.music.mcgill.ca/~gary/rtmidi/release/${P}.tar.gz" +RESTRICT="mirror" + +LICENSE="MIT-with-advertising" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+alsa doc +jack" +RDEPEND="alsa? ( media-libs/alsa-lib ) + jack? ( media-sound/jack-audio-connection-kit )" + +DEPEND="${RDEPEND}" + +src_prepare() { + eautoreconf + eapply_user +} + +src_configure() { + econf --libdir="/usr/$(get_libdir)"\ + $(use_with alsa) \ + $(use_with jack) || die "./configure failed" +} diff --git a/media-libs/rtmidi/rtmidi-4.0.0.ebuild b/media-libs/rtmidi/rtmidi-4.0.0.ebuild new file mode 100644 index 0000000..3a4081a --- /dev/null +++ b/media-libs/rtmidi/rtmidi-4.0.0.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="common C++ API for realtime MIDI input/output" +HOMEPAGE="http://www.music.mcgill.ca/~gary/rtmidi/" +SRC_URI="http://www.music.mcgill.ca/~gary/rtmidi/release/${P}.tar.gz" +RESTRICT="mirror" + +LICENSE="MIT-with-advertising" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+alsa doc +jack" +RDEPEND="alsa? ( media-libs/alsa-lib ) + jack? ( virtual/jack )" + +DEPEND="${RDEPEND}" + +src_prepare() { + eautoreconf + eapply_user +} + +src_configure() { + econf --libdir="/usr/$(get_libdir)"\ + $(use_with alsa) \ + $(use_with jack) || die "./configure failed" +} diff --git a/media-sound/fluidsynth/Manifest b/media-sound/fluidsynth/Manifest new file mode 100644 index 0000000..10ec73f --- /dev/null +++ b/media-sound/fluidsynth/Manifest @@ -0,0 +1,2 @@ +DIST fluidsynth-2.1.6.tar.gz 1368770 BLAKE2B 46e049cf46f96d921bc053fd677ea28f77f73451129253bbc3d7d0fe3ca069a46be34e05db6c3047278fb3e41712d42d5fbd6a3fdaebe09d11953de4beb9b210 SHA512 168c882167089b067ec2056c92b19134136f574ca1f793473662274bdb0ae73236711d38ff75a84a738dd866a0f6dd790412d801ecf847e4416d4fb5cd20ae45 +EBUILD fluidsynth-2.1.6.ebuild 3312 BLAKE2B 1c8a6afa7230da8a6873b141fd8d8e04c1bc028fa554e8fbb7ec0e22dcac7e4bc54f061276aa00d5ad68d95036ce45d17749b6158f6de6a0209d7eb448f9d46e SHA512 28eed5a1a2dc075479633380c28f4be8f46270b7244cb900b37a9d922e4e014da67aa690671a593b174f013799d9145281cabb9ac44c23cc34a7fda1700172bb diff --git a/media-sound/fluidsynth/fluidsynth-2.1.6.ebuild b/media-sound/fluidsynth/fluidsynth-2.1.6.ebuild new file mode 100644 index 0000000..d5fdde4 --- /dev/null +++ b/media-sound/fluidsynth/fluidsynth-2.1.6.ebuild @@ -0,0 +1,115 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +CMAKE_ECLASS=cmake +inherit cmake-multilib systemd + +DESCRIPTION="Software real-time synthesizer based on the Soundfont 2 specifications" +HOMEPAGE="http://www.fluidsynth.org/" +SRC_URI="https://github.com/FluidSynth/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="LGPL-2.1+" +SLOT="0/2" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86" +IUSE="alsa dbus debug examples ipv6 jack ladspa lash network oss portaudio pulseaudio +readline sdl +sndfile systemd threads" + +BDEPEND=" + virtual/pkgconfig +" +DEPEND=" + dev-libs/glib:2[${MULTILIB_USEDEP}] + alsa? ( + media-libs/alsa-lib[${MULTILIB_USEDEP}] + lash? ( media-sound/lash[${MULTILIB_USEDEP}] ) + ) + dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] ) + jack? ( virtual/jack[${MULTILIB_USEDEP}] ) + ladspa? ( + media-libs/ladspa-sdk[${MULTILIB_USEDEP}] + media-plugins/cmt-plugins[${MULTILIB_USEDEP}] + ) + portaudio? ( media-libs/portaudio[${MULTILIB_USEDEP}] ) + pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] ) + readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] ) + sdl? ( media-libs/libsdl2[${MULTILIB_USEDEP}] ) + sndfile? ( media-libs/libsndfile[${MULTILIB_USEDEP}] ) +" +RDEPEND="${DEPEND}" + +DOCS=( AUTHORS ChangeLog README.md THANKS TODO doc/fluidsynth-v20-devdoc.txt ) + +src_configure() { + local mycmakeargs=( + -Denable-alsa=$(usex alsa) + -Denable-aufile=ON + -Denable-dbus=$(usex dbus) + -Denable-debug=$(usex debug) + -Denable-dsound=OFF # Windows + -Denable-floats=OFF # loat instead of double for DSP samples + -Denable-fpe-check=$(usex debug) + -Denable-ipv6=$(usex ipv6) + -Denable-jack=$(usex jack) + -Denable-ladspa=$(usex ladspa) + -Denable-libinstpatch=ON # https://github.com/swami/libinstpatch + -Denable-midishare=OFF # http://midishare.sourceforge.net/ + -Denable-network=$(usex network) + -Denable-opensles=OFF + -Denable-oboe=OFF # requires OpenSLES and/or AAudio + -Denable-oss=$(usex oss) + -Denable-libsndfile=$(usex sndfile) + -Denable-pkgconfig=ON + -Denable-portaudio=$(usex portaudio) + -Denable-profiling=$(usex debug) + -Denable-pulseaudio=$(usex pulseaudio) + -Denable-readline=$(usex readline) + -Denable-sdl2=$(usex sdl) + -Denable-systemd=$(usex systemd) + -Denable-threads=$(usex threads) + -Denable-trap-on-fpe=$(usex debug) + -Denable-ubsan=OFF # compile and link against UBSan (for debugging fluidsynth internals) + -Denable-waveout=OFF # Windows + -Denable-winmidi=OFF # Windows + ) + + if use alsa; then + mycmakeargs+=( -Denable-lash=$(usex lash) ) + else + mycmakeargs+=( -Denable-lash=OFF ) + fi + + if use systemd; then + mycmakeargs+=( -DFLUID_DAEMON_ENV_FILE="/etc/fluidsynth.conf" ) + fi + + cmake-multilib_src_configure +} + +install_systemd_files() { + if multilib_is_native_abi; then + systemd_dounit "${BUILD_DIR}/fluidsynth.service" + insinto /etc + doins "${BUILD_DIR}/fluidsynth.conf" + fi +} + +src_install() { + cmake-multilib_src_install + + docinto pdf + dodoc doc/*.pdf + + if use examples; then + docinto examples + dodoc doc/*.c + fi + + if use systemd; then + multilib_foreach_abi install_systemd_files + + elog "When using fluidsynth as a systemd service, make sure" + elog "to configure your fluidsynth settings globally in " + elog "/etc/fluidsynth.conf or per-user in ~/.config/fluidsynth" + fi +} diff --git a/metadata/layout.conf b/metadata/layout.conf new file mode 100644 index 0000000..c673a95 --- /dev/null +++ b/metadata/layout.conf @@ -0,0 +1,2 @@ +masters = gentoo +auto-sync = false diff --git a/net-misc/modem-manager-gui/Manifest b/net-misc/modem-manager-gui/Manifest new file mode 100644 index 0000000..93c35c2 --- /dev/null +++ b/net-misc/modem-manager-gui/Manifest @@ -0,0 +1,3 @@ +AUX mm-strftime-null.patch 1701 BLAKE2B c98d1e9d5d20a33f8f4c8f849242dadeeb74120039ede011feb01acbd0647540f1913c207b8758dea1b2aa866b8b3436b0432a98e6a4afa83acebaad3e6d9193 SHA512 fdb69213bef0fabdebf23a5d083ea1610b5836e396910ce3dc06eb9f37ac5c86bc887185b61c35b49d5edf551e5f0c6b5232949b4230350c84afff217f3bc060 +DIST modem-manager-gui-0.0.19.1.tar.gz 1055105 BLAKE2B 940633a933638361ce4630387af96180d7ac2b8a5e14ea352d96e6654d9ec374d91f6e86a510cb6fd146b72b3919cc5a9133cee2b42dc8b8e028259838270f05 SHA512 b369965c0f8c4804aed649ec2d449910324fd68979ad13fc1a16a58a2a61fb88795c5922ce725fb48b701ce5f5295f62e266bd049395ead5385dbc04c1636e19 +EBUILD modem-manager-gui-0.0.19.1.ebuild 504 BLAKE2B 16c690550853c4709c854c15022c865672df4ce61a3d93460ebbeb5ebfeb44bc820cb53add77f28ff56e3bed7dad880a2a54f0fd441e3c9c0864870be86f584f SHA512 4731e44baf284c070f25cd09aac2162ab5d25d86d0eb6979245203483299ae59c30dd4409b7c0b39274d55b63d2dd64a4c6e814d76171a68a4c68c77b173ed8c diff --git a/net-misc/modem-manager-gui/files/mm-strftime-null.patch b/net-misc/modem-manager-gui/files/mm-strftime-null.patch new file mode 100644 index 0000000..b73e028 --- /dev/null +++ b/net-misc/modem-manager-gui/files/mm-strftime-null.patch @@ -0,0 +1,52 @@ +# HG changeset patch +# User Alex <alex@linuxonly.ru> +# Date 1558782045 -10800 +# Node ID 83553d042443c71be71533b6b91ee10f228d935f +# Parent de113e8953ae708043823578b64882cfc5a45ca2 +Fix segfault in strftime_l() because of timestamps from future + +diff --git a/src/strformat.c b/src/strformat.c +--- a/src/strformat.c ++++ b/src/strformat.c +@@ -1,7 +1,7 @@ + /* + * strformat.c + * +- * Copyright 2013-2014 Alex <alex@linuxonly.ru> ++ * Copyright 2013-2019 Alex <alex@linuxonly.ru> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -182,18 +182,22 @@ + + memset(buffer, 0, bufsize); + +- if (delta <= 0.0) { +- if (strftime(buffer, bufsize, _("Today, %T"), ftime) == 0) { +- g_snprintf(buffer, bufsize, _("Unknown")); +- } +- } else if ((delta > 0.0) && (delta < 86400.0)) { +- if (strftime(buffer, bufsize, _("Yesterday, %T"), ftime) == 0) { +- g_snprintf(buffer, bufsize, _("Unknown")); ++ if (ftime != NULL) { ++ if (delta <= 0.0) { ++ if (strftime(buffer, bufsize, _("Today, %T"), ftime) == 0) { ++ g_snprintf(buffer, bufsize, _("Unknown")); ++ } ++ } else if ((delta > 0.0) && (delta < 86400.0)) { ++ if (strftime(buffer, bufsize, _("Yesterday, %T"), ftime) == 0) { ++ g_snprintf(buffer, bufsize, _("Unknown")); ++ } ++ } else { ++ if (strftime(buffer, bufsize, _("%d %B %Y, %T"), ftime) == 0) { ++ g_snprintf(buffer, bufsize, _("Unknown")); ++ } + } + } else { +- if (strftime(buffer, bufsize, _("%d %B %Y, %T"), ftime) == 0) { +- g_snprintf(buffer, bufsize, _("Unknown")); +- } ++ g_snprintf(buffer, bufsize, _("Unknown")); + } + + return buffer;
\ No newline at end of file diff --git a/net-misc/modem-manager-gui/modem-manager-gui-0.0.19.1.ebuild b/net-misc/modem-manager-gui/modem-manager-gui-0.0.19.1.ebuild new file mode 100644 index 0000000..bf04b6e --- /dev/null +++ b/net-misc/modem-manager-gui/modem-manager-gui-0.0.19.1.ebuild @@ -0,0 +1,24 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=7 + +DESCRIPTION="GUI for Modem Manager daemon." +HOMEPAGE="http://linuxonly.ru/" +SRC_URI="http://download.tuxfamily.org/gsf/source/${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" +PATCHES=( + "${FILESDIR}/mm-strftime-null.patch" +) + +DEPEND=">=x11-libs/gtk+-3.4.0 + app-text/po4a + dev-util/itstool + app-text/gtkspell:3 + x11-libs/libnotify" +RDEPEND="${DEPEND}" diff --git a/profiles/repo_name b/profiles/repo_name new file mode 100644 index 0000000..1821bfd --- /dev/null +++ b/profiles/repo_name @@ -0,0 +1 @@ +localrepo diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest new file mode 100644 index 0000000..9a9497a --- /dev/null +++ b/www-client/chromium/Manifest @@ -0,0 +1,336 @@ +AUX chromium-71-gcc-0.patch 2531 BLAKE2B 141886b7e9c6b627ba562d33729b60bc8b9cefd7792175e542527cb97c16a772f8b7a868fb3bdef8d2e89bec5e991b88a5fb074afc7dd2467de20cc6acdeeb47 SHA512 1c9875c087776b1675049bdfb132b55ea74a6015ebbbcfa9be412017bc877469ddde35ddb775338d8598fcc045de7e3c6c39d5b8a1d59c82447eb4bf5214b2bc +AUX chromium-73-gcc-0.patch 4483 BLAKE2B b0759cf95146f483bf246c20d3c62956f6ddb5138c9436f9bf823956eaaab06de150eb90ec1d535d86965077a1d0e051e81d00a49d8674b836085d8a69f75570 SHA512 de7101ba00d8c1f00cd3f557574653cb9df80e59efe869c4fb127736b0f0793b20157169af74c8e38057c460e29a7e90e05274c749dbb6a30aa0aa7886b74b36 +AUX chromium-73-gcc-1.patch 4194 BLAKE2B 23d94aad7e77fae0d11b44d3e4cbc1af7e01f62cf2991b6a625d65ba8fc53a2ef369e55e2308739a89a1d68df09f99f8382d5bccab798074b206728c7f666b1d SHA512 802ac452eece4b64757990315bb5c38d7cb2ab9f4916b0c5457d9f04a47729e81b3b1dc52c68c641f5cbc20e45a509e721c211d42abfc22ebb0c48af421ec688 +AUX chromium-73-gcc-2.patch 2193 BLAKE2B c1a165a02428a4c033a5266d8cd607b54f2f5c98c08a332c566e2db2625e95cc9313f7524922915f6bc66b73936e2a628bfbed1b33da60cc64ef6cc430000c1c SHA512 a242e7669d9c4b86f39dfe0516bced6b234336f4671514b1eca647b3d82228602dda96c69370326eacb3f68b5a47d58a2d6e4f5d97ea67583caf0c2b4430f0d4 +AUX chromium-73-gcc-3.patch 3683 BLAKE2B 5da3b1a107a67afe837a6baefd74e68e1f643e5e2f6edb6098a77015bf4a7b819f7cdc5947aec95dd7243243fcb970a0dde73d0ce355d9beaeeecbe189aaadbd SHA512 93173033df16138b94dda215b088dd63937f738536d6cbcc4133258502e1f5bdda45bcbbd95250bc7f781839544c3d45e2dfa8aa4477a0617cfaa723e9140085 +AUX chromium-73-gcc-4.patch 3500 BLAKE2B 0446dc3d5a073d0960fee4338a59452002734dd0f7bb9afcc9a8e56f70ae5bf755e3a5e772a2682df2734e928f87906630ed87d2a1ba4c3114a9665983ead970 SHA512 c3f505fe943460774a4f5269cad878b37cae45edae2838e6fec8228f5d7c77cb0435a1952fe0230a33e57798ebcc5cd5f0640ae67c301d9983224bb7f81ff70a +AUX chromium-73-gcc-5.patch 3388 BLAKE2B e8a2940ad9e6e23fe62d0897e5f24c38e9e9b75a08326ea0109eace1f3be8afba269d207a208289e0c9bfbf5be165e345594b97f2733ff0d895c6e054105b714 SHA512 524b3a0f9fdcb5a78a9e94a1e6ba8bfaa632471cb3cf3b2d4d32704744154ebec2b81178234259e2d1486694395c707050696874527375290564672417e64daf +AUX chromium-73-gcc-6.patch 4452 BLAKE2B 0798c713701fcf438a388e47d89de454e27e7376494192630cc7bbf9edd4690163ba3ed450e52629a4adff67ce36a09c01dc95f450a5bb603bfcb02582a2c164 SHA512 f5d8ab6bd3e4cdb4aee6a7b7ecb552b675893c8902425b2451032372a2905ef2aef983e1a0660ca891dfaf5603c7ce79d979068ba8aafa2c5735d9051f7dc58e +AUX chromium-74-gcc.patch 746 BLAKE2B 24a9ace196f32a0db8ca5e572d21afba9ef7903945f22181e003a13bd58690a062863a48dbcf25610f173c7c0f7b643b2ee8101d9def7f23c5bf4be0821cdc66 SHA512 331dc70a793e867fd19bfdf12246eff6be1b940bd7bd1220fe1036a19ea7c45b25e5ae8a90a6bdff808313da13cf9efa48b41d38c918506615890fc9096b1052 +AUX chromium-75-vaapi.patch 10170 BLAKE2B fd1707255d7eb3ad12c633703f672acb6aedda21a7ad851db1e997046bf58f2926ffbaa87a60766b2ecab62bc0a31ed4dda295dd04898c0e989f579009801ce0 SHA512 a98e6fafa92da18d6a9915676524cc8b2ac1dd63e13502d787d10d7cbd051ca1800bf48fb2d4d570ec0327f1a938d778b142e16950084d99d55db1909751ae12 +AUX chromium-76-arm64-skia.patch 1747 BLAKE2B 7f01fb83d1d7d71fcc98a6e144b1f83a72c15c3d98e1619b2c850000d5c7f9c5aa50bb343ec5da8ce7accb9a2752dff1993d04e83b1ce7c28924735bca730926 SHA512 76944f24374f2a751ae547501dbd3aa3e6c07c09b31d5a3911009db09aec2742aab6e46d3615122db83a5e2fbd1a9d98736671c081ba2734549e4002a86a1608 +AUX chromium-76-gcc-ambiguous-nodestructor.patch 1697 BLAKE2B 80b49601d4ed8b2c315cd6586829d0dc6ad984955837b52908446ddaddaf5f682feb160e81b68c33eaf29d51564d481e1911352b2a043f9fbf92a9c6bfe37ee7 SHA512 c61cdb814541eacc3b78a950b5c9cac312f00e06748beb1dc7f1ab64089ed6e5189981538c0b992eec2dd9444e44fdd7067323fd9cc9a11fd2c5d90593000a56 +AUX chromium-76-gcc-blink-constexpr.patch 1329 BLAKE2B f1edcd6d8ef86ebc9659838a30d2ab1ae886494f4c8fa8cc5cdd71ac22fc78bbd0aa4bf68a7111e050e28271a951affaaea088eff71ce059e76c930bffbf9a8a SHA512 adc40210cb1b5a863e61ae08d6b62bf9e294159b75572a6e9de1615a641293e5b2931a4c92f07d15a4ae1e557c98cf7c5ef5ff6f476325fb1bca5e28396e9aa0 +AUX chromium-76-gcc-blink-namespace1.patch 4188 BLAKE2B 31db4c911676c8982d897bc10ad9544b166b224259612c2cca9420c347f45d99d430faf9678df3dff493f0af10bf8104c2b8e20b1e92f8729def89bbb68c9327 SHA512 dda3ccd155e6929604f67a40386dd9cec3c2cd0697b3a62d579f696142d1bccc6ad9d414765a028ea630473944a33b9a63beb5eb49b4b0ec666473cc674fef38 +AUX chromium-76-gcc-blink-namespace2.patch 3529 BLAKE2B 0b71f2dc7ce1d1859e0e00f31afebbc452ece141b4a0b75c58a8da05dc2f5af3f157d8e1afb6e6022d4b6c68248e5f8c6e492d07b2d4d129f3af66d3bf3b3599 SHA512 42050d3f1c12c469197698e11f411dd76bc35abda0a94484153a9f4b0541e7e2708aa0abfb80747618eda67b85bac6915950e711338799f858202ec17f806389 +AUX chromium-76-gcc-gl-init.patch 1288 BLAKE2B 6055ec1281e601c8442a2708da7bd7d0265c53b61922394cd38239d02ff8d180a4300a514ee2dc97ba436ed36b990e77fe617fbd8d62494a5710687e7f93783e SHA512 0d6ee660150c1fdcc81ecc31488d423c9126eb8443ee29329d97579509f25c52da34e05f267804a4c3eaf0f3708839524eaed9ff66fe5247b665308329ece340 +AUX chromium-76-gcc-include.patch 410 BLAKE2B 7df5a173aa6db4ffde17fe522bf87ab20cb11d5a8b1869eda70a472af9c172a613e7a94b6d7758bc2f3341ed9b770d8b662aa5a5e0b76285857d96c769199838 SHA512 9fc238c81de198551d29579bffed031e5c837feff76cafbbdbddc182ccdb26a231ed95c8d1851281f705763a50e89b66e05603a754671c376b2b184d66a1d7df +AUX chromium-76-gcc-noexcept.patch 14063 BLAKE2B 589ae76cc5f465f9e034fe2994ad0b389983c221a77c84cb679ff478b0cf727514852245183c1ab05433733a618de029c9bff4f90ed5eafa006168db0d29239d SHA512 17dbcaa8eb76a1d515ee782b71008ae760be552a3c4cc3656ba496560c0495ca1ac4d093b76de8b7f90102581d86060b3f761b03fd185c2f70dcccc2b201384b +AUX chromium-76-gcc-private.patch 3159 BLAKE2B 0b902c4f3e679af034cbe557b057cfd6800c0ba000c2760367b147e3715726742426c94b0efaedd9a572cd91c0ae8ef30145528aa847e6a01e445a180b62e281 SHA512 6095fdcc33832fab6ab61be5a2c62610a3db0a4b86ad044594b9fca53325dece4930b3d8ee317d75e2fdc81499dd4ba6b4ab15f6fe00c8a23eb3607a7b9f212e +AUX chromium-76-gcc-pure-virtual.patch 2358 BLAKE2B e591bdeb128877e2d0ee1e873033220efd4c75f4130bf1cda940cd2596c7ccec92d8f39e6b57b55fc72c4a9c58ff3ca634b9cb66064b5e4eed6906ef24c97071 SHA512 0401d9c105a1e8d13018a1d06e15e163c4db40810188a8f2623808e5ef2c220b5a9da520e20ffac8a91220ee13f51f391a82401b8d1de47476557e30d853cb65 +AUX chromium-76-gcc-uint32.patch 1203 BLAKE2B f87e17576c32cdebcb59d158bd102b12207549d553d94c05b397f357308eb89eb44a317f2368247670cd74b8ea17be2d6f81545da411f5b4ad3fe7d5cc27466c SHA512 ff840d0520b1515b64ba5c4e7d8f17f58ef783b8b9002f6952e194887dd7b78ca19c743e7c3c5ef8d427ee03559d3ad5b00bb518ef12e8688fa7335ef50b9dbc +AUX chromium-76-gcc-vulkan.patch 5870 BLAKE2B 3bbe5eca8b70d244a734e1c2b4e237dfb67f1782206d50663caf47035c53d422ab33c82ba13af9ee668463f2c55329b228f03cbce4152f0b809f7f486c2fa4bb SHA512 77ccefbed977e92dc1645760569a51c1602b0701aaaddf9141ea946f1762fa2eeb7e9e8b2486589e7a21822835ea70ca230dd9fa392d3a444efbf14afeaa746b +AUX chromium-76-quiche.patch 10020 BLAKE2B 54b2bd89ac3bdba6e770e55c03957af9149c6259ae33e1e57a50feb7fbc7d6b98f02f0a9212acab8a075f682121f4e8413b3f5cd03cf3a557ce0329c17a7f661 SHA512 759db973253687e915e446aa92ae882d0e9a030b10ac134bbae37c6b43b3e91cb47a11d50957a860e3d0c41f3ae07e091c917626d38a0eafa06b9fbb68f91915 +AUX chromium-77-blink-include.patch 1065 BLAKE2B 09efdaac62f5bf47fd368b08c90b58d0f61d849a8a365fe3963712d3adc3dcea4fef36e15666b5fd907e8204c7bedc400c8c2021425fc9b98b2e2328b6c5ffe7 SHA512 2e7ec441108ef36a6cfd711a35ca728a5464bfd0dd3ee78ee9659eed3266ce673b53402499fd8b8ca5f1366e2d1b8f8c5903585fd20924d0393a655d5d0ef369 +AUX chromium-77-clang.patch 411 BLAKE2B 95209cbf367f62cd77c7acad3b4a0e55e0f3fd509e58a53cbd3579edf37211f4a55180f77e8b1589fdeb0b6e1d38ca6eada6d67b08c19fe2a1bd019c587afeb2 SHA512 501c33ef25abf8148c4b0ae474cb354c2a32edfb36a4f041a14a5d1a8706a80395a2e2f117bcc31e5671e6e58710faa29f9ac9dcae8b4af8952310f578a572cc +AUX chromium-77-fix-gn-gen.patch 383 BLAKE2B 63cc165468ef1db93b9b4764d73790526cb71d91c384dd2d7d3a4c9e212e34ef8edbdab3a01213a0fc7f378cbe80d3a6e726f2448a1e9f97fa31848a80b854fb SHA512 3e690af4cd5e5631da30abb75704270fd5176419e515c8e6541265a73d490df2018646b27e867bd2f26d7ca918ea276a2a7608b463d8a2acc26ec43f8f52ee6c +AUX chromium-77-gcc-abstract.patch 2667 BLAKE2B ad316c185b12e1c7b2a378eac908590e7db546ab72387266db4315bf7a40015381a0cc494aa9d3d6e14873cf28d7e5bb5f6dde4576f301297e0f711eeaa6fbc8 SHA512 e2c69dd72d7cb9f0fa29b56f5c9788cea7c60e753129a69731b94e1854a3db0e07cd4cb53e3c8c2bb1a999cdda546886292e47ba159f3138c211ee3c3e3ffca6 +AUX chromium-77-gcc-include.patch 2306 BLAKE2B 6a5189df9411e4f1ad71d68cd28a24fbf7b5aad6ed48e8da98efe0e68252a0758cbf84726462205a5f1f9223d01554a6e54d9ea489d32f9ff37f340099f46e83 SHA512 11ba37fbca5fe32ca94473e8cfd1d5124745f63bbb9dec318828727e4f9ac03ea9946dc20fdfa920c5ccf3681cb9922c2a16b119266e7c541663da3d588ab04e +AUX chromium-77-std-string.patch 4640 BLAKE2B 9561bf2049364960b0cfd340eb29b86810354a5d20f5785b2c1fbe8c44e584f2c98c4af9e80633760c09f3908266765c0c234a38dd3e26601b5fc21f0dd6127f SHA512 9dbad2497cd3e5a47e9135c1553eebbc8ae8098dd6cf2a9a5625a6bbed70a478434167f2de7c52ff84711a8da0c9636c499dd6c4495bf6904796fdb023a6510d +AUX chromium-77-system-hb.patch 459 BLAKE2B b1ac6e0007ca3aa26acd7f60e1c48ef8c0bdd80fa3e7f6ac97dc6a977864208e66e333b28bc64b9410fc368c27166b177669d09caa42909a9249059848a9f4aa SHA512 03696d8083127fd689a7953724c625a5eda3f67bad8121531dbaaefa01e2a91007d4c27bca07d137f50c5c03f14d45ba76e79ca859abf36f0fe34b9ec56dd1ac +AUX chromium-77-system-icu.patch 649 BLAKE2B 7910fcb64460ef965eafdd05e98d41d14399fd337ac8f79bcb2c7059fccd61d552ab6efa1dbf8bdcce564716b3d12b41a587077034cb72ef610eff76f4e052d6 SHA512 7413e0cca7102008dd5bee443dcde90be69ef1d0973fee576f70544f0d0a66aa8bc7099e619c89160915d6cd6186384be46ffab4a1d747000133dda9a84e15e5 +AUX chromium-78-include.patch 534 BLAKE2B 831b26734ca029b64069f80c339170f8d06e6300f8f3c1228eeecf6054bba4f58b9a384607414da3b2467ea1ccedb7db8d6294ff30258f10f00197e54400ee7a SHA512 bc27d07fcc8747948976f80b538dae304d2f3387caeb2e93dd89e03d4c0a32ce8158c250e1e26c152c0ceecf40861ac3639949dd166308f7bffaa7dd94fdd547 +AUX chromium-78-protobuf-RepeatedPtrField-export.patch 694 BLAKE2B 3fffcb6a7289bac848b89275a9f76e4302042362fa9bcf2689df01e0a00806c7e838210fa8696ee8e2134127ec4cfb5c3b632e2739c225f8e9586e01de7035ce SHA512 e3a80775d958740eedc7c3df0e9dd12b0e6a51ccf871a2085ab77246814e748428133d27c60322a102eb8f50bb65fc2c607e0d2665a92393be55befcbf566ab0 +AUX chromium-79-gcc-protobuf-alignas.patch 3581 BLAKE2B aac0afac1b67639e630fd974118e62b05e2b4871eb62f8e6f13c10b360a5369568d3b12780262700d4ab6079e3c3fc9b0291e32b306c0f82f3ca2e19c936c658 SHA512 c4d2924d1169f4e8f81babeddf4b009c135997e87c188faecad3f2fb85d0ee731cac7a437b8a4f4f237d84e5450d7d8b95409c979ca89a3adbcf978722e1e6e5 +AUX chromium-79-span-stlcompat.patch 547 BLAKE2B 29eb5960c1d4ef44e76f9a90d9b4b284ca8912a4eea36d2b777761cfc45e6fbcd93d8ca55476176f9c8503914367a8f8973aa6ef8313040e7a28d467fa948345 SHA512 10c27f2654d9379be21a17a22ec23b8151f601ee3cd1ce0ae33811bc65636c43122afd5b4ca047ae78067592420c8abb2f3068bd48dd65a8cd3bb0c9c684560a +AUX chromium-80-QuicStreamSendBuffer-deleted-move-constructor.patch 1351 BLAKE2B 7bd967a9f3cd544368c623d3612632cd2bade48ac2c099c4570d5ead62ba28487e1fa222ee0bfe108f3d4f853744d799d2860f703eae3b7d6d36af77cd328508 SHA512 2f147e77d0737370c5dea8b575c0e631476bbce54a7b1c46d0bffeb56706d6ab695b8a9a7e61402430c57ec1f28668dd6682aa5d32d32762fc3ba1735f37542b +AUX chromium-84-blink-disable-clang-format.patch 1571 BLAKE2B 98da06d2bd7ba764b9ba105e0831f0b9284b6c6d11356a37c7729b595680e8f7defa10bc12d01f9e998a44bee7b7acae1c64e958e50d7b5cebee46299f14cbd5 SHA512 4319b487f08f076832c6235c5f1b802c89db09658f8aaf7778f43e1e3b41665f9f14da0a8bed6ea34643df388c9a730ec37da5491b98d53a5f60379c6e5a58d0 +AUX chromium-86-ConsumeDurationNumber-constexpr.patch 1685 BLAKE2B 411529b2e6ee4af4981bcdd4b290ba858d736718460886fb3c37a493731eb346fcfdddc05e5d89b1abb0d9535d0cdd81f409f0417921e6db9fbc3249445b8e97 SHA512 8631cab051332bd7b005b0681b9f59867b015667acb0b2a084e61264178a29230a17c905bd45aa5b18c6ae1261cbff05c0a91449272f25117ea342cb8f95ab59 +AUX chromium-86-ImageMemoryBarrierData-init.patch 1185 BLAKE2B d9e7676e3adc73eb0399db15f479e88c45d49786fa021c8da722c3958f3ea2c0c18b85a375041c9270418abadef386a4b3fda3a7cb707f9916a09c810371ab33 SHA512 d7e1cc221fb42fd2028ae80daf708ccbfc71d8dc43ce6af09d72f81d2f061d67d548463f5863f20d4213741d87aafec8c2eceec056ec0d01935516f5a4c0a89b +AUX chromium-86-compiler.patch 5160 BLAKE2B 8dd3041fd68c5813e4d95be9876fcb1e976a4a3d5b54f87d631b5ad1d8f64e4a2dff8bf3c17db1873af778a20588573aaccefa8fd098565190436a5bc1357e77 SHA512 50d7821c02e8cee151c92d3a6c0ff2b97aac0e89a10b3a8bf34d5d87fec0074cb8a74f269cc04bea823c2285751f10cc4332a35c270e3f0b6730e33c93dd3537 +AUX chromium-86-nearby-explicit.patch 1036 BLAKE2B 3b276d7bc048c8482fa9c47316370a2207aea3358f648d52d393b5212c5aac97dff077774e9f17b9d0ebb23af0e0929494f5342e6f61ebf368471f95f0f75ed1 SHA512 2c24c4d85b4ad555b55351d786a6601bf4cb0c559e5fc496433ad064e3f26062c96ab55ba12de0cf474ccc90c6644190e112410cb3ac3b16cd4611e66efdecda +AUX chromium-86-nearby-include.patch 748 BLAKE2B e7aed70358baef16cecbba929b263a445632f52f33ef18f681ac71f347f1e29b116e52f5b5a0360950d7c427e638f5ce80aae9146e8dfb30703b39f367d5886c SHA512 7d4afc7ed2c9534543d4e27ef813be4438da4a46d6c7e9cedd8f3a7db1b67b8228b92a85ef95fbe216043f3ea9fb0736f59392e15f62b7764bfb391863c83e56 +AUX chromium-87-CrossThreadPersistent-template.patch 1519 BLAKE2B a2a9707f94a6d659235cb81017dc1786ff269d5ffbcddc4907d08c18c0332f56e3876bdd5eba69b93a197cb2ba32a6fa5ba5e24fd27c22df6f7cc093a8544576 SHA512 cdd37bd2329d6931922054531723414375bd2fb83152527c983d20af197885117d6ffee3d8590d49522542e78b927e003e9c457dd6776b861a148225500eb84b +AUX chromium-87-CursorFactory-include.patch 1251 BLAKE2B a9f559bb26023c2ce73d11c77e7ee657b322bb615782e3877b58b1e4bccc46b8ae12f91e6677c98a6b5ab3297a53d178ef4e1d6dd577bd31e586b384642b7aa1 SHA512 03f8dddab38c9893e6dc79c8157d9401c2bf9b34daef38974ee3200a205ea154794e2c982bb9f3b6ddfcf38b974265cfc2cff5ae0c494af38adc5c8c0c2edab1 +AUX chromium-87-SystemMemoryPressureEvaluator-namespace.patch 2957 BLAKE2B 78ac47cefacc2c508a278784001b50bdcd2df1c9942d6253ee5a80ec53680b1c628517118dcf3802e7644a60de20463dcd85ab1cef0f1aca6681a92107cdab6a SHA512 0ae36256cb7b8cae26a49eef46037fa89629490a8c61614d3f7348d9f1d693289874edc52d0644114d1d3b094f01b00deb956ddfd1fd4dc259fc7a9188e39e5a +AUX chromium-87-Thumbnail-noexcept.patch 1477 BLAKE2B 959f305da3b387ad724ccd7e53874554e525a97fc5bb5ddd91315b6425b1436dad53212814fc386ec108392b9e9355b0765404120d4eb331c004718a02441a68 SHA512 72827bcc70103784a5134b61978c604b4aa422f4a4240e459291d0de1cd26694b649f6cc44629dc574a6c3a8bef4fd11d18c8a01384b0c4b53ec53cc0dae659e +AUX chromium-87-anonymous-struct.patch 1578 BLAKE2B a849cf216f76bdc6aaeb02220281c0fbc01a01afc48869cadcc8d558654e9ea0f6f37bd5f3a2c5955355cfa2ba04c7b9b8b5dd9ad8c3ae27d5d46eaa849fe950 SHA512 90d581c0d625fe8d7de409963caa3979c3d9b8fc8471fd29af151d1f8f4112cb7582c7fbd5c7abdf7f44cb83a26f8f2f8dd5d9a589f8eeb83d2b4bec69b5db59 +AUX chromium-87-compiler-r1.patch 5467 BLAKE2B c1137773271cbf0ce884913ab1c009a08a391603ed4fc5749f7813fb8175cf894bc72cb80edc321322a2a534d28469a530b51b2db99e0eddbd1ade1deef08d1e SHA512 6a75b09195caf40f1e029e2c78092eb5c3dcc3e442a8212206338755d21d1e9f10a5f18f19cfdbe249c84256c14bf913ddc9d6e5754db3948eb970c11778932b +AUX chromium-87-openscreen-crypto-include.patch 351 BLAKE2B c05481da0bfed1b2f10b7a8aa89ed2a7df902ce1d467eafcc8df8305f78e8388240ac7e5c76e703e6fd6aede6ae94494884c63d9b1b7d9dfe340b41c38897b12 SHA512 d279ef4b7342960dff7c1f5a2e2913156e2b4fed43b5c1f0a32999a8a1880a7f1e63b0de242f364720a9b5fba696ab4252d9a250c5098e1133c4b9b677102351 +AUX chromium-87-ozone-deps.patch 446 BLAKE2B 4d57b75e23a3315d5ff6a5cce32a195559b9ea0563da02a52f820c9d7307a7ddf46938b1862ea6c3da10129f9168a1cf62e79af505e6c01de67be99b2fb741c8 SHA512 9600b8a7c9a753190728b7601859d56b96b8086fe921074ffc5aff41c070142f58deb07e7c03a9057a67dd79ec7cb4e79fbf34922530bb1864704103193fab3f +AUX chromium-87-remotesyscall.patch 484 BLAKE2B 98e4f1bd25b2573f66f69afb511b15956fb6473bf08c258dffe69205085b7c46db14702d1d3ceaf53d09518ee5af1013e75176f1182ea30c10b6d58dbffdc3a0 SHA512 29c5a99b56c117a15b7d76646920fa38aff2c491216f7582757f319ca1e93539fd9489f18612e316c0dab7e2e42e5a3c786a72909624de8b8bb24bf437fc208d +AUX chromium-87-std-max_align_t.patch 2002 BLAKE2B 430062e76986bdf13f5e438fc280c97e2984660eeed25b51fd6713c3216433ffbc04d4eb2fcafb3dc49cd24b601fcb9fa1431653fc425b97a43f2b2414e85102 SHA512 ceb945709fdcb4d59ae0f190d1ba87aefc4c40793ed8d576cf43998e3c25b22f17880b758b542a0a5b3d5dc9f9fc96711b839c4de559efc8aa2746ac3570912b +AUX chromium-87-thread_cache.patch 1043 BLAKE2B b815b245bbc2e4d8c09dc7ff531e1f4c0fcabae8f8ef426e16b7465bf8bbac9181d04e982c5999414889b5834dd7733ee4bbb1bb0766121e6208e89efcc7097f SHA512 24273d25853ac0cc35bdccf4031d916efa41329784b11a87d1eac737909f81fc6669fed54f82c6ec0b7eb4bfb17b02242511a3fb90fa7c1db1fd2f8a973bad7c +AUX chromium-88-angle-renderer.patch 399 BLAKE2B 7cdc6570fee2347837cb50b5240fd9a4049bf1b5f153fff5bcbec691e809d565cb29bbee8c9bc1d6ed7b1a90a0868c6e321545d25bb0aa0dc078d2b4094526e9 SHA512 d0a93a16021405828fd3caa41cfbba0e88e2e63829b128d94b28e9afc2d0edda987cba27f3eafa6d06d10be93f7f6649cdfffebed7650d585d58eb87d056721a +AUX chromium-88-compiler.patch 4825 BLAKE2B 4a18c5ffd635a62ec3fc7adafcf9526f86220da3287674eab1ba83a8dc0d614e503ccc92b8776ed5b82d4d0c4c38beb6bee803fe405ab821b1d7fd06cbf1fdc5 SHA512 8d3841fc1eb184ca1a4ccbcf9918f84e9955797133d8a9e1c9c3f8b6412d0528131e94d81de8a70e118f44fa8a7bdd38b187944808eb96800772c24a6533a14f +AUX chromium-88-compositor-dcheck.patch 697 BLAKE2B b1094753885af979726efc2fcf6e45dc69b9925d88e808c9c7a28cec0d5381392339b2c3cc1ac4d8d381985df5e71f3e65d56fdcddd4fb43edaaf879dac15c2d SHA512 cd7965553de11cd98fe4de20f74b37f4dc644bdc114f8679b113fda39ccacd69294ffecfd95a88a0e28ffd7daff5d4243246faa8a5397d63ea5fbc742fa048c8 +AUX chromium-88-dawn-include.patch 401 BLAKE2B 8fafc8e69e747752b7c3774389f1e90ae42f4dd9367dc494fc4c9be2be3d9b631ae9de8143ba23cf4f5e042230b3d202f9a87c9bf5418ad67a840e09001b69a3 SHA512 9ba5dcc71d6d7f4e630d2e7f6ceb3dc679fe9d577c4b34c94d29cce31181ff3dde97ec0e71ae68ef2136dc968b3cdf84d83c783c0775f112523df118b3c34d63 +AUX chromium-88-dawn-size_t-std.patch 746 BLAKE2B cec4e83c34d779c333c657a4ba15e365b8a5b823bd99a6c56ed3b24db6cf9cae49e57fd8e2fa7d28075e4f49d41d240ea93e7bf8445129857b9fe58320c2d59d SHA512 16c5f89018710dfbcace56439fd31823af50f1a5882c63e8e693655bf9351bd165f71e705c240640e6b5cfdc45adad84906a71076e0409b1ff308d50e1d4201f +AUX chromium-88-gpu-internals-ozone.patch 796 BLAKE2B bd29e0882171b367dfb316d4254b80fb156f84bf95d83ebc160a549c5ae7e4af134e6f0c27e389fcc78d0530485f85955ee983800d4fb4ff7c7df294cdb6fef1 SHA512 21e3ae4326b8f517dea88213e5c8486e1936be38d40953f69b9f9c0d51e7b08676d481e093c06c7354e1cb330d11d6095d2bc8d18b41b6784656079a66617722 +AUX chromium-88-mediasource-uniqptrostream.patch 1242 BLAKE2B 24fa44c5c4a426c31a5f3a27af88d18c2892d921dc7cb9fc1117b126b6364da3fc03b644b6fd6e7ae101c1a0896f6a6ff8b0403a71e878b1cba0ef26ac35300e SHA512 273c7551605aad9345136199059702583fc964248ba2d5b5444a732977efa427eed340131e54620e73aeae7ad91f1b300d35b2987f4e576d25827288070f8f43 +AUX chromium-88-pcscan-nonfinal.patch 523 BLAKE2B 60dc93f9761f806676ffebce9afdfac5dbbdcfd7cbc1c9b277200dc09a250d8e69a19d9f46aa78a47d41b59a8bcaccf439703db89319cc29d7f8334787882037 SHA512 94a32754161ccc2072abceb8cf74387391fe4e3e82849a29c5dccae015aedb39fd061805a61d7951c3704869217bfe59cbc092b548988c8f58c5704bcf83cd5b +AUX chromium-88-service-worker-registration-crash.patch 800 BLAKE2B 54dbf204cfa1e224cc14db10bf120801b895ef17dd606598773aa11b44ecdf1448b703c6e9c81e98e63bba45944bc4a5286cc60bec994de41df9cfd5e562e062 SHA512 8927694e96ee99c29e7a0a4f2f85e8760ccbdbb533b1edd89b46fd7b8f392a7073e85cfb24ee387897f495193b8e4a4727015a00bac037b7c276666a02857d5a +AUX chromium-88-system-icu.patch 842 BLAKE2B 5df9efa7b51832347787dc7de1c00a0a72d575f27248ae75f89be54530b0da6ec61263b3d05b3f278f538a2f727de78aa94b4aac5bc8294f60c81d640df4731e SHA512 1c8fc55bf33b06179920f2bf3004ff61c7372b2305dbbb7aaf72d4d6e925ec05213bb47ce7c4e8f89ae8613a17f3707454d276ef7df3610f5e9db93ad6e4cd42 +AUX chromium-88-tree-formatter-include.patch 544 BLAKE2B fd6444550cde4434c0471b439df70edd4dfed41c30dbacaef95dd280642e6f38bd0b45951f5eb2dbb18c59a571d38ba7c23dcd17467a5bf0c398a4ce693c320e SHA512 a00cb3bb2d5d4969bc18cd78ba41b6119c9a81f4077a3834249181fe38c76b92157dbfb657031b9d83f31de075bc57d1df182669f98ada07dc26925ae653f20e +AUX chromium-89-CursorFactory-include.patch 866 BLAKE2B 4aa06aaf0a8af6f2dc047d55cf0ad6a1e84a035ec29cae85b22c4c677dfc39e7f102fbef96aeb91f1c65af1a6b0a9687765027f3dffddf5ca97e7918138545a3 SHA512 59b3c37e25c30bc266569f816e5443e2d7ae8491372a1bf2afb0b77ef471682bbed4a5937fa64a7ea6ee654aca4e8e2254162baeab941078fe98007bdb75da92 +AUX chromium-89-EnumTable-crash.patch 2712 BLAKE2B 6715f98a5cd2c9886050f9d360938e261308a3def252e25642a473e86626594fa6c06cb3231dd57dc5428db8ee118848a0a085abf741c9555778f3ae3d9d374f SHA512 07ecb68d5ca2d732c9ca58b4dc007eb2f4b842bdf6ba46cca9050bf1c582439ebb23db1149c76d5a27f4d8de548de946e80eff0c5b1759e4b6714e0c6a7b26c9 +AUX chromium-89-angle-display.patch 92655 BLAKE2B 18ba36e96bf613c0605c79e7b19a986db9412890c626a77a02ca77d23714a8b8416038e654961f0a1f0811edac917b8d1950da626d3ca7e097454b77d2c1eadc SHA512 8bee41e9596684bb852ab3cbccfcba146ad24ed403532321d4408d04d031b897c514d38fa2cadcc29d0359fe41a8b383a8b9ac59305797bff8459ba2a3b7c8be +AUX chromium-89-compositor-dcheck.patch 673 BLAKE2B d9013016bb4a130e4296fef2b2cee92bb169671fe06c0a9b14eccdd8d008cdfb1d56da178a0b07e49000c511ff2f68ed3289b1de2dae3fc81ac64d31534dd55c SHA512 91a45748d30eeca45d2d6f2eda5eeb4a05fdfcb3f7310cfdbd37d12f9b556fc72eb7cd161703777a89ccbbe36ecf57fbcb57f74f3a04511f1c7881ba004dad2a +AUX chromium-89-content-dcheck-uniqueptr.patch 879 BLAKE2B 1153d5357d2d932e635831282dabb666d3651eca96a7581cce511a53ef3b1e165f9e739750c5800beef12c91ccf43d9c87134a3fe0a9cbe075902c720551f247 SHA512 3d152d56f45e95092c6560b4b6dc53110592fb8e08b7256f1a0312c446f62e940b1f5b65905369f99fabe000a305e452af812c33018bb8d79f640018f3285103 +AUX chromium-89-dawn-string-include.patch 427 BLAKE2B b15a85d432c4f2996d3aeab08ecf09310abd0fd5893a9ebd9d1f3bf6c277defc634ffec7f3291dd70590a827346930bd79a75a8b4c1baed5f21ace398c474059 SHA512 5f9358a088c5baf90246bea9c2a0546ce0ebe0d6cf8ed6b184e7dbabda906fc647fef7acf12c7e5350b912737c533b548bc6bdf2b16d220e4b8ae46274289d16 +AUX chromium-89-pcscan-include.patch 399 BLAKE2B ed12634e3c7d1228fcd9f9eb032fb3754b5a94171f460cac592c94ba74fe4b0d3b29b1614c62562f14ac2f817057885d50cad07a3129bae3732991f75199f862 SHA512 1d6c7016a6da664e9d291bed37bc8d76a93d4ddebfa25ee8a2c0680f477ad7175d26af78f18ae368a55ddccdfee0f6e33a23f3d1e2a93ec5db08f03e19b059c1 +AUX chromium-89-quiche-uniqueptr.patch 698 BLAKE2B bd445db77129684e62185107f7faa79479cf064001def7143e0e3419cb8a29a2be52e54bafe94dbea045977433e3f576e9a7e9ffc213373cf8e1a0a82e0a1736 SHA512 1d8f219f9ba5d721dc1ad233d9f52ec53e8852f863f8e20fd98feea81c7fef2595a7f4fe096653f3223941a29c02034998f6e03ba9ab9eb4a55f17472c037764 +AUX chromium-89-quiche-uniqueptr_r1.patch 787 BLAKE2B 8baa60543f23556c1bdff9fa48b9d8011a8e1890afeeaee96c93322c93599585c45c2fffa30333e13592c74164fe5028eb3c964a4efc230e57b4473e10f955ce SHA512 3077f794c1ddc9eba282a8441d0fcb67c747ae400b3f51c9e02553326d128c6ec04dd4b636b07878623d7cebb960fc545b29ca5632ca233d681cb492f69c3d4a +AUX chromium-89-sstream.patch 16863 BLAKE2B 92f7cfc1faf89bc4bb9106c8fa01a9d5bb0571d7d6a9673c4bc0486ddd3b31dd95c927c1bdd3545181b8f879a24a616c7931e03b7a1e145bd40b8bc11e21d818 SHA512 41a756bd421b8c1aba3b6b5245e0bf067ff757b3cd6e6e5e25aeb9111268a0a5447872c65f06c884576974cb858d93200b24c27c38631cf8346e7fdc85b1fd3a +AUX chromium-89-uigfx-image-skia.patch 1049 BLAKE2B b12b11dcd6696db6d76c7da9521b936bf79aa25449c75ba512099c7fa6ac4c8ca5f80a832e104d529ce211a3783b120b0e4514d4e1d9e20584f7cbb05414c98e SHA512 718f7747a084967240ce2bb938a151758d5535ea373e3dbe6be57edbec8a1f20934cf76bb28c793e3e7db94c5814b2b163bc8c9d5cc6527396b1c45f0b23c494 +AUX chromium-89-webui-config-include.patch 291 BLAKE2B a78689e0b0f3c233159053219415714a7800816835446efe7cf28fed75cdb75b92279c39ec79d542135fddc0f1cef6877a1883fd108369dc3149302da7f25a90 SHA512 9b2f064c6a1502bb90b618d7efbe034f54906aec98d3db3eb5bcf66aa8e85d252bb9fde204e8e8af63640a0499ec1a3e017cc2f6bf6afb53e6609b34bb2ba222 +AUX chromium-90-blink-disable-clang-format.patch 1052 BLAKE2B 8841a44b1b55175459ed10e9535d5baf6c56b03b405c661e134f15a93cb3ee67de922d1b04c53e695e2ea29c292e486102c34e63e5a7786e056f59a66fbf0317 SHA512 586d7e11f238e22ab172861b7aa65edbf7776efe00e6acb3c326fc5cb76540b7ec7f83ce293583030d847cde106a3ab2bcf6d3bb1ac715a482c1867961542194 +AUX chromium-90-compositor-dcheck.patch 659 BLAKE2B 584a45a4b21b0544c0b475bbd41d07f153cf1c23c116615b0c2d28b7c37f53046e6bdb131a58f597fd39855c3a3d0b67b837846c1f61ad6776319ff306eb769f SHA512 6a031d434872eb165cde58bb43864d5fda14289ba2e6aa2362704f112fb60aa43bc98082ff4037675815ba1700392783dbc4719c572b218a2bfc6223a438d368 +AUX chromium-90-disable-nomerge.patch 501 BLAKE2B abdd4afab53b6aa825d8831c1b656f7aaaee135434e284a3b9a5eae3c4a7de3173e6e86842cce459b384926d78a43ea6ef883f2d2da3565f62557a59dbdc303c SHA512 dc6b00e9b164afb43dc76147bc1ba63ad7b7e796449dd74e5c9b12fcbc4c5da0202105dce465e9c61355813cd072a61336e17d16f76d484a3a14fd524d2a837f +AUX chromium-90-langdetect-include.patch 524 BLAKE2B 8c45800f03c4a185f19a6ef24215dcb3b5b292e7c37cc30c0585c54633e90683230377d35e687c10afeb5181bab9880f13788071546625f591ba1215557ae17c SHA512 0c25db8178f135bd2f6a04b79c9c631fa3d8a6da2f9417c3592ca70996a698c519f29bcb94f808fe90a682185f7b6f7cd81d585a9ff5a4f74594c653b2f3bed9 +AUX chromium-90-quantization-util-stdint.patch 430 BLAKE2B eb05fc1f04a171b3e0e0664540de2490a326aff8a68c6e04feb453dd9f9e02efa540b193c2dc675ea6249a9a83153854ff5f9e43bf883b449783d227c6c88906 SHA512 2e4f97f3393e9c26e4c87caef8b52969825fe1f5639e25b4f90adc77663993f2b2070d9631aa7d6e80c9d3cc9e2c96ecc8183011694d5c0d82ae6091f51ca715 +AUX chromium-90-quiche-uniqueptr.patch 777 BLAKE2B f010f67ca9273d6b4e632f20454d8351aed3220a9d621c08b3f2378e3eb688444fe401a0e036612c2dc10a1bb82ef839bacb7f9687053038cfb39705c2121669 SHA512 739195d07df3789a2773afb6523ed5b43ee276d12288974014caf8d3537b98ca125bff024f74c3f235b5cf0794994e237cca1a1c8d39b08a35a8ba40cb286a4e +AUX chromium-90-ruy-include.patch 680 BLAKE2B be143d5b653f26a96b8d68dd0a3f525446bbdc66c16e746b5ea6c693616e2b52bdfb7dcfcdc464d6ff01381475ba1618204af8b54e22b349af18c75b4f6c939e SHA512 83986a58df6cae77890190dbc6a4ec8097794de6ced274e5e269bb086dde1e6fad6af01fef53c73f80d2afb8572b01e12c28f5ba47cac0465933551008c177e7 +AUX chromium-91-clipboard-ozone.patch 1909 BLAKE2B 280d4e3bab64d5b889be1bb2aa42e1e88cb000966e671752db2179a1f8ffd473aa772c646c91de91f6d432ecd0853eb198387dec426c44084f240b9bcabba989 SHA512 365c9a2efde3ff0740480434458564061246e7ddaa47d6abc88ac51227905a929be11228cc57f8407164e27450f37c44c94bd39769b679bffbcb673d879ec50b +AUX chromium-91-compiler-r1.patch 5406 BLAKE2B bebb5a2fbb65ad3a217089b497e526a2d6bedcfca1ed1322aa6fd30f99b1901cd1a3a5a54901c531a841e06637b9a89f0987037f907000ab681a91e879db60b0 SHA512 ddda71d8d8cc88a4cfd2a9fe3afb0eaa3c1bea2891e3833bc3d7590d2d024c919e4ff88585f3bf39c786d757d946e7cb8a4f69cad8002a831440a51104ce6f3b +AUX chromium-91-compiler.patch 5073 BLAKE2B f09c254942dc3656de2b869e59ec75877d2c38a504093995d3978cae467017f384f4fe8bcb80ae1f473e99435781fc75a6edd3f2b096477883ffa74e20bdd5b0 SHA512 b1732483e3fbba25b70742f138a0a809fd91f2a5c558dd58541ed62e5768377e3d6e0e27c094bacb63f98d861965999c444a79998d2f614276d835ca7ccbf2f4 +AUX chromium-91-disable-nomerge.patch 476 BLAKE2B f41353f235beb815dc3e95bfdb73c3a3c58911c5226450fcc258fe00dcf33c76683da71d630b0bc1cbfaf70ab681ca19659492d0fbcbada9613d6ccdf4bac484 SHA512 638e846481f2a6b7d73fc1faa2be32b711e79cd84f277a13900bee2f9231773cf2a8d892444be0bb32ebdd912cf4c620a6d644e287e331e98c22816df947b244 +AUX chromium-91-libyuv-aarch64.patch 4724 BLAKE2B 1caf26df50e181970960461a8b9d5531b37b46cf16f6dacf79fc69d6e468dd815a02de2cf18a77daea9e6723305bb000c0c1bbe2dfb063b41261c84eca24f606 SHA512 0106f7c3b6fa32872ed1f59a6786168d0ab69dbf5722ece10623d37bc3282b144ac6b120f86f8696ec2344ba5d67dfc4f46864916fd6a253cafa20a5427b40b4 +AUX chromium-92-ClassPropertyCaster-namespace.patch 1377 BLAKE2B d6bf4f14045ebe4eec47c5a0fcbb81631bd8b13d3b436fbbc65c38b8d968a4de0c4b07d0574d76da27bce987ccfd44ba75e4fdfbeb005e0818b931e8df7bc9ab SHA512 939fd46dfa89cae2d6d23a84c8f20ccef31b53cc58f6d1f6134fd3a18d22b9550344a1f8027c8207bd98aee8b33fc452f352dc99fee211cac0b862ad07a3980a +AUX chromium-92-base_atomic_include.patch 334 BLAKE2B 3ddccfdac06d4bf5e64b83c2add91457da7bd9b03d909a2a1fa0538591782a39feafce6eadc46a6904f7dc6c1f3e7441f2a044d50bcdf9eed4555310c5243bc7 SHA512 d56b9a95d58aa0acab21b0ef418c27b5c4339589e23f789dfe43cfcb28fb9f743c6ef46e65232708dbeaa68558188d90f99fdf97ca1c9fb18603c1f985f72ba5 +AUX chromium-92-glibc-2.33.patch 5263 BLAKE2B 35d47398818faf4804d3ce95a4af070083a24120b8c87747652bbd66f2fa1aed9fe1b0d4b25d543eaba2f93b31062fec465ed1115d2700cfbc56ab9e6888d432 SHA512 168a18fd844076891fc87d0b9060a0c9185bd6d911bbd7864726832e904162832628ab0b49a619f2b5874bdb5b8fd3f1012d8a71211858325d0a79b8b384b92d +AUX chromium-92-platform_thread-include.patch 630 BLAKE2B 6fcfc173e908b1a6381437cc9705b3e15949d08a0bf8a4c864e0e815acd3db011c1bef17ff5845bcb5ca99eb89ca6b44f78b21af1178a113392ad722d33092ee SHA512 633cc3dff3d6efbc75eb5f187627185577bcc5783104968696d766dfba37a44b399cfe369cd0609b83412104277cba6a098325cd8b6a82009156869a9f3bba48 +AUX chromium-92-sql-cursor.patch 8289 BLAKE2B c7ed88ced33c23b016da150eceeaa2738c8ef9b77ba9028cf2321b287491e021289f951ca626b14ca659ba41f7826b01e8988e56102b8c56d566583781485faa SHA512 9914bc6e9a3354c5eab565b3570a68979cc376e379d4ba61b838e6298bd6283bef84cf9eb32fd779bdbd956e46d2786a5aecaafda35987d44f0a09292b04e799 +AUX chromium-93-AXPropertyNode-private.patch 1707 BLAKE2B ab638613b0dbec1aff1e994863418f152d45f8ab42a5ca64f7406308b67f11db9e5d7f1633dcde7efddd4eb1533f97a5f169372da39f5646b3ebf389781cf662 SHA512 a1ed5312b0b3d3c2d2266c502aab6dc058f6343e534b34d091818c2ac7fe2c332ca468a7e978888820ad8aad9df09c018ade1daddd7ea7a12decf16ced723295 +AUX chromium-93-EnumTable-crash.patch 2863 BLAKE2B 72025b6fb1b8a2c3bb6d54ca9063c0cca8b8dda1344813abf55d361d197b28ccfffcc9d0bab7ef685752a8f9a4848f13b1de61e676b1d4386ea59b5cc137b68c SHA512 8a56fefbf99f9bb0262251685fa47166b27786f283ee3b84664a3b054da160647d7e359bbd051b6516c92472e5b19e55b1ff23b0021877712a78c8fc2d81963e +AUX chromium-93-InkDropHost-crash.patch 1134 BLAKE2B 1593c406c48b629ea3170a518cf86e936af36c554bc97a380324ab6fc930e49a359dc3ef6787ab08314a6a8f5da85714b0fa9d8589d6a46b1d06cbbd7e401f22 SHA512 474d7f55505e1275238d71d1723d74a66fc9f27a16ed293aa80ffefbe5500cd65a0bf13ec76a9bca0334a245f22120099fb367d12b93adc14500104d11cd3bff +AUX chromium-93-cart-include.patch 373 BLAKE2B 7ba9e04a6bb0f7db129442d34f4cf0db16a0a14e898cb482026e94e6cbc5d904b678945f8d37df1fc87734ee7ba189b686d6de5299eccb3271037a045b18a37d SHA512 239157b2718bfcf5b7516af409c0e53c8ce6b25d4c31bf392c7f1f8243c16137d1bb491566259b3b3914f7a0343798a262e14d2f01d8934c94755175f579f95c +AUX chromium-93-devtools-msg-dispatcher-include.patch 469 BLAKE2B 61411c6491d9e8ccf12af4ffa5733a73885e66680dd51b8c4b974e1a877365fd4021d252fc60ff3182f9357d69fbdbec2812760943b2956c747f2a7f4363e192 SHA512 5b97fad78f085dcd72c5b643cc08d249575afdcea2a3b42315091bfc1b19ace18559dceb67c96ee94180ff5f3304e8e06e6eb2535fde8b4309b67a97fb01eeff +AUX chromium-93-dnsprefetch-include.patch 423 BLAKE2B b82dd08f6c472921809a65f33264170f8561e9875b9584bd02048b408fef2f5eed46e29232cedcb32c4d1a5c478247bac0f640ebe2934e42af993b6b5f9f652d SHA512 93d08f55a79a6ba5884d09652c4bbeefca44660839d1b858438d25ea2d449e8c20db103ab08e9cf2895e641efdcbbf5a189358537f400f638cdfb32aebe84df8 +AUX chromium-93-ext-autoconfirm-include.patch 419 BLAKE2B f165fb97876bc85b6c266f0c5fe2340f197fcd884f02f635f59f1c05f380ab07e1cd23f0f9f2bfa8df29cbd501b4c2e6cb587cfc1c7255ff9c7385e78c7a19fd SHA512 6de1b10b0691f7c1e6682abcdc1048bf7fe84251bbd3dc8836baab1462414ef5fb521eacb852aee71a14f9978904351147e4195e399b26a6612fe7a42f9af2a3 +AUX chromium-93-gpu-ipc-include.patch 468 BLAKE2B d15c40382ee211aa482a9f0bdb1dd7f1348c5c4c6121d22c1679bafbe709086c1c6630cb7cf892bf09d5e4b687ec15d98604aa489d9fb12047d23760de277918 SHA512 4017e590995eaeb2a864aa9e53f0a81cf17d241a8e8ae8121f0460d3f6eace2b8212d8247955014a8f133a3cb459f193df5918cfe8496a13d9b6cec3136b94be +AUX chromium-93-hid-chooser-include.patch 448 BLAKE2B 20e3e0ba1312b79ad8e1d8eb6f1c8b58b5a9edbdee946b2ad7ed2883c6bd8a48a169f633b509a35cedcb273cef72bc60a57dfd55e47a6ddd234c98f96c788af3 SHA512 e1607c771e209f468a003cfb9863180e999a3dcd05e1d65cf125ccb49a6e916c6f2c511bc7219948d97a6d789097d4e7b3b26de531851b98dd6981c621037c40 +AUX chromium-93-lang-prefs-include.patch 401 BLAKE2B a59f44feebbf792cab5a17fcddbac9d540bec365d1ee9232c5aea56729888decbd03af2a9d84eaf7ded7b70ee52d44478bb610cc69931a61b22a57b0fc223dd6 SHA512 debc36ed698472ebd282b5fba1fd0ba61d1b9d34e627648d6b0f8e421c72f005772ce34a24ef591ef2f256c1112eb8d1536a77a87b88e1dab0660e9f0b315689 +AUX chromium-93-login-detection-include.patch 431 BLAKE2B 2149fe7d73f530f78598bfcb60b0afd2d159266fbc24abd673100733d7e0a0ed05560113c9d7553b7dbb01658f217baf89d141f6dfd5668625e9cea2ec65be56 SHA512 87c4ebf9af169521ffd29eeb88f40d1c3be7253b3e1354747c5c8354c2e01a6d97e036cb56a96581a1fcaf471775a60fc5e707e846eb962cf2ed5a9181c86027 +AUX chromium-93-media-ffmpeg-type.patch 1550 BLAKE2B 12f7738dccbdb63b1171c3faaee86d9278b3b37569b284897e22b978d120827b5f37963f87679a40a0060818aa22db0771db34ad833c63a3183f37b707070ff8 SHA512 85c4dec91e6555bef2f445662ecef00e14b7a4f93a23c9ef6a0e2913c45f48754bafcda1df357a659b3c8fb02420372870afd45b0dbf19581c1e907bb8dc7001 +AUX chromium-93-media-history-include.patch 539 BLAKE2B 453d9182f81fae0362c0d7953f4dd809a89dcd0c122519a21a59b19c9a6ebf48d7d0a3e397c33828302c85a119cdb144e9156549adffdc0fb21c15f72f60eef0 SHA512 92f8fce962a67f1f61b3362845f53b24052ff9d797c3968c15902ed0e947e15603457b48cb68c583f3afc11d6d3b5066ef933cd539b20132eb867322706cda01 +AUX chromium-93-net-http-include.patch 316 BLAKE2B f5bbe5b7619d8279a1162a38b2d8e10d724c39d05ef958af84476d981a9bb53bc7b21db90a2284f58e557705c009cb12165c8c13bed7b75900fd3c88f09c9dc8 SHA512 1b663e3c3edb68cbc047aa2ce2678beec1bb578c8d619df818ef50af9269e3f5aecd6c200f2056efe5bebec590682cf2aee4a4969da36a3d2e6a501ffd6f44d3 +AUX chromium-93-payment-include.patch 394 BLAKE2B d5438ac23a10c2b0583831870b00cb4adcf524002d7c0fbb9faf6bd5a9882446718c55876848702859998d3993d63490721410ea15d0853d70fcf8e12429bef9 SHA512 986cfbf0a73932dd189031e61d014f6cce1ed90026fed7ef41ad4c6a73333ac008e68d78b5c49a9599b9e59953ce41c07e4ee9bb6ea4beda799ec3c83dc01ca7 +AUX chromium-93-pdfium-include.patch 418 BLAKE2B 7f13285432973ada1cc0fae4ad9742e18c36cb326af47d6f0731095932eef52ad81db4c2410c0696090ea01b4359d452bc380418ae51f94e72eeccb1fda9014c SHA512 43b3064d24f75f356801f8e9e62200fd6e8ca0431c65fe4486cdf51327c3632a0d5bc9c5907653db58ce003b556244ad16fe4fc6cfa0b87ab00c2a6aeade5045 +AUX chromium-93-phishing-classifier-include.patch 544 BLAKE2B 04f3dacb77f1a77cbafcad9b9a03f8a31d74f9de866ee6aa4ee2547489051b7e71b4f014b572501842563a6da95d04e86825907bfd4d8fd4bcb8e025ebd62b48 SHA512 e4f12e1517f0ae1afdf8e76f3b7d45c06dbd1e010dc36e7bedda0a853f5d54c32738aa18d972d0491f47831984c4e5c56bf8f5084ff0443c679757b0b0ef7394 +AUX chromium-93-pwdmgr-include-r1.patch 515 BLAKE2B 8a72606de29c4db5b29843410d225b6ba1e4c437c20e24e21487e68ca93f6ffab5c67232cf6621cd3c5f7f40278e94eb58d7c644f75c9cf7e0ea307baf16fbb8 SHA512 7dc22d06d2554765b43142fca08ac842a78efffc9e5e561e38dd255c3c02117a7c0bb5c0aadd1e64165c026baa27ff4c7e3ea50b5278ce8a6c3c30f6dcaf78ce +AUX chromium-93-pwdmgr-include.patch 1109 BLAKE2B 89884b2eb1a18e65695b2321052a8f0d267f489460027c85d878e60f46c4c815b9687069c74541b513aebda18772ae9cb8ecc5b6809986200d85a23d6a7af0de SHA512 d7a28c829dcba07eb019bcd2d19c0b231a5c643f902476b7ebef474748df3ad3ab744143de519dfc99379ed0cba633b58494ec45ef9bad24cc59f14c663005f9 +AUX chromium-93-quiche-logging-include.patch 661 BLAKE2B 824e823c774992f46f7c9eabc03e3a27233c10726eda1347395e78022f2089c4378603cdadca49c4fdbd5ec6b9b74a492fd87df015cb27a56848d152f307efe5 SHA512 1010e9f935b0d2e4c5f3340a1c75cc97ff022ed1a31ee281b0cbd5441924889b141aca2446878127ac3b1b818ed5f5e3a6623b96936030d23976c532224f6ebe +AUX chromium-93-site_settings_helper-initialzation.patch 1806 BLAKE2B 506f5e835cd87436976a92ec983eb950dd22785a7f62f71a892066664cd1c833d0d57ec383592628b6f00ce6cba17edb064873f83c58c932a13c94b6435d318f SHA512 dd389207ea9f43fdd934e3b24b08a74d7172d153e8f3014a0861895fd98803510964604ceaef53f7d828055991f042fc586334007bc1a26a1c84643e7f843a57 +AUX chromium-93-sms-fetcher-include.patch 851 BLAKE2B 6c79debbd8087e89b1d79133a5f659dfa35bfebeafb5992d27486030802d585142badb156023a4bcab003816e1be32ea7c04f12a1695edc0e560cbccc399faed SHA512 0f6ad37e7798dc96dbe28723bd2b5debc9f730f831d34596424372c6f46563a3400e36f235cb8d51256d5c133f8e899f91da6ed26d8ce2813d30241aed5706d3 +AUX chromium-93-sql-virtual-cursor.patch 8289 BLAKE2B c7ed88ced33c23b016da150eceeaa2738c8ef9b77ba9028cf2321b287491e021289f951ca626b14ca659ba41f7826b01e8988e56102b8c56d566583781485faa SHA512 9914bc6e9a3354c5eab565b3570a68979cc376e379d4ba61b838e6298bd6283bef84cf9eb32fd779bdbd956e46d2786a5aecaafda35987d44f0a09292b04e799 +AUX chromium-93-tint-include.patch 780 BLAKE2B 155322a7eb6eacf6b5eec38304b6f6e0e8ab5b9d40240da6a3928305c8d6edc15e0cc91dd1f7df531bbf1d5b8fb8a656686fd5ce0b0d83e83ce8dbb4748e7768 SHA512 211bbd5972cb9b56e26626c931b9f86a3b3d8c2f1b2b89b76df162647546414d0e00f8a93d3ede40f143734dc505c9dc59afeca4e737839544488d493c0f5de7 +AUX chromium-93-ui-event-include.patch 390 BLAKE2B 54e78d7abde93e3beff1075a0334a93647293a2f7d495a117bc4e46a0b7f76f471b743e4ad4fc90ef4c9be7a1d7af6c50a0dec997f070a9de5aa4a802303a063 SHA512 54c7ca3a8700d59e0cc7aaa42c01847de8040c6a808585f2f29c81555b84b8f431b8b82ad8c2fb6b3953748671f2469c614beae20e2994ebd6e34735255057b6 +AUX chromium-93-url-loader-throttles-include.patch 470 BLAKE2B 71f1c4b73157f8ff9bf99035ec10f583e2c8b6871f333bdbd0947da984649ae84e5ea38694e62ad7ca3c4b9fb9709be28c9d2dcffb70fce81073bc5e8b70b89c SHA512 61abfc84052f6210ff7809224e87793d010c2eba8fb6b9ba533ef6f398024fc4814503be6ae35129eb5b8f161e046d43938ca1745db148569ba95df8dc292f81 +AUX chromium-93-webapp-include.patch 499 BLAKE2B 69824ebe5cf6a3d1b5a665f782b22231891ad8dcc160d7fee1e92f00d82217b204887ae8ce04e397490f3b4e40a16112b89ad8836e4524a393a5f847795fc70e SHA512 ac982e06acad9a9d86f8507f5991fafcf7f7158dec77d3af949fa62f3bfce99b65a7300a7d76615710ff3fd73ef4e9427aab6c4871a18cbb899edcaac6d65584 +AUX chromium-93-worksp-ext-include.patch 1141 BLAKE2B 3257a298c4f8cc596f3c587a08429d9a7d700b8a5ae04c13023319df1341f371692b440e6c236ee72fd4f0fcc96be49191039734725dbcfa00dd236b95bdd96b SHA512 b435bf4e57448946c1d66be38735ea0119c31827abb92ff201069c965245fdd88c3a11f2acc1d52c8a925684872c38d0a65eb0f4ceddcb874bf6af388593b712 +AUX chromium-94-ConversionStorageSql-lambda.patch 1359 BLAKE2B b4aa74d6f8890043992cc15ec4ec4b34526fe51066ca912e655d47435d0ae9994fc11103f8b3f85e964ecdcf75795e8e5d71014fec264b0ba71082a69487965d SHA512 ec88f7474329972cdb7a770a1dcbc7b7892fd23e3f0b38000cb5772ac20a539e452ecd2fa6b35589c1a44b35a20f5fdf89425bb97abeb03bdd8881794a852d71 +AUX chromium-94-CustomSpaces-include.patch 964 BLAKE2B 965c6082af90eee07654f1dcb7678e6dd2d6a3a767c86a84762d9f11f5bb4c322d2e261fedf5d736b31f726f01548f33be30252fd8b937c2633394487ea4eee1 SHA512 b4df37e944f6b9997cd1eac6d3a3bb85fae7e268dbc8ee5b52f019990a3bc43c7dbb16925589038e26351b32cd12e1fe1698c1827fa196776191d07fb79afa38 +AUX chromium-94-compiler.patch 7553 BLAKE2B bb9b9364b7c1ed994a9e69ee5f16419482975f59cfbb4b8bd832bbf8b65c7be475f181e14b8b9f7287217bdf0b57d57627e1991769dd7426e811309688ab2e12 SHA512 512fe012b75d3f1a2014d31118f380b61013fc977579b7dd1f2a096a71bd06f3e44f4e6c7723aebbd907e62c51dbfa33543093a545890fcea2f54fd67311699c +AUX chromium-94-sql-virtual-cursor.patch 8262 BLAKE2B 228f1b361ff67c2f6417e49bbdd53f4e0e9fba2e2ef04462a9a5463b9e9785dce93b471a8118a30b56084d38fe2f58be25bb716cb0dbb6ffd5ce1d13c4f77f22 SHA512 5289e79b7bd684da65f340abb7b2f77c9dda63c5f7761afa8d2cacb7d98632e85d30d2ad46fad526c04cd587e3018f991890775a24b8548af252d820b38c3f85 +AUX chromium-94-translate.patch 3869 BLAKE2B e8376032b98174634b209586fbf93379b8a7695330f4f0ca8c3f6ef0dd8e977ebfba009556ebca0d7c5798448d848707eeb6778bd175c8b1c3e03e774d319000 SHA512 8885e1a6cf7478a8f10d0944b47e4c0ad834b33565ee929dee1fc54503ef5639667d5fa9accefc39c5c2f45ec502eb6c600010b656a5813cc8f6bcae6f781a70 +AUX chromium-95-hash_traits-include.patch 1066 BLAKE2B af4ec0696a81d1a4ce215a5223460622b625d9391553f718f183d3738ae4695c228c6af177e03813a9961614d1ea7a3c98ececacca03eb1e68c0acfb58bf162a SHA512 abdb327436cbbc17d7a3d9190b709a826d34a452b46aaaa3037e290593c0381427352e7747abec27e89c11fee7b3b28897d0dd9b69ad87552b4445ea68f55596 +AUX chromium-95-libyuv-aarch64.patch 1215 BLAKE2B 85a29aeff0f89a7a7979b5b85d8e212bd631c2ec4c1ec1bfba2ca751beb8fe9765cbb2683630a92908bb91f8b9539195d07b031a248b009e7bcd933632625351 SHA512 6375f8a3c8033af000f424ffb21e5b5077b3cc6881bf5d2dfb88eda0cd2f5b21ac2ae286afc9f83ce91dee93a88d21ac411027fe2331e99c67cbf1698c79e576 +AUX chromium-95-text_fragments_utils-include.patch 1371 BLAKE2B b2a7055834ea7e56dbf2cdc2c32644619cc360dab18d0a539ae1a495f996601888a221151f3a8632b3bf8db245da4c9e385bbb3425664ad19a5b59c124660e3b SHA512 7a700239b522f27f1e90edf3c3fefdc5524f55ae40ba323695287809a09afe39e78705af5bc2ff557741e6e93eecc85b01c41d7ec993f15b404b90c52430e67d +AUX chromium-96-AppliedTextDecoration-include.patch 1079 BLAKE2B 8a8ffbc2b4dae1204d0ca5f1c971bb8242504276d079808bf4d41865e6bb5bddf777a04241c6797776d481f3b47b94c5e5b749045875cd6e6c95027888223352 SHA512 55e303672c5c5971a317f6e51df1516b0bff436796516aed3b6b29e99f036048be515dfb0591b32f04ca2e6711a12654de9589f4f0cfb74ff5d1a1baa7e8c1ff +AUX chromium-96-EnumTable-crash.patch 2850 BLAKE2B 196f5f739e96cab32d9ac7585ad4a04505f71e2e147b03e5f6e618ceed5cb37591240fdea48e388c0aefc567ecf6b369026a1d9c250112e4c0b2bf7952fcd21d SHA512 c968cc19160a4d91e0000a7ff2efdaaf97a1cd43ec68dbb335493f1bb1ff3798a6b5f33baa836ddc601c7017863655b00cf4d32cd9c9c94dbfcea7187dbec937 +AUX chromium-96-ax_platform-list-init.patch 917 BLAKE2B 8442723fa8e4bfc2eb1362cdefbc915694f865bda7917fb761568504db56f35eb194860cde76408591fd222ed4d4bc5d3caa5c897016aee6f1a3d1156eba147e SHA512 db54293ec7829801ac8a53023e5605da94315479c4da672fafbd40f8e62d0496b9be7d2a6fc555e11de8945484719352959318358247511035d3dc3fb4ebabb3 +AUX chromium-96-compiler.patch 7005 BLAKE2B 02d46e8093b50a2e791a44d6e2d5154365cf0c8ab9d36cbbd01c417afbb80bdf57f3734fc3ff35cc1ea4821e702bd8fae9f0f0c1b5626c23b02f9f13539312f4 SHA512 167db2af5eb2fa347e28e1c2c97a6d849ec969e8d53b6b513f2dd4853381ff977933ea5258446340fb10bace310f26131bb0e0208ea08396a754910fe3668078 +AUX chromium-96-coupondb-include.patch 478 BLAKE2B 5ee5693d06f9731e63049e34c416b2e6302d5480692eb53c13f1a00bd863d2ddff01f69d60ad829fe84b679f44fe3ef12130750fa5aebf1f82a6c4c556a050e3 SHA512 02089dc550657608194a967767e01efeba95bfb096cd910ee4adfb4166d2bddd09c0ed2652a956c275011132de9842d096f12a9a40b89c6375a017545ca0fa50 +AUX chromium-96-template-friend.patch 1257 BLAKE2B 2b413e3b5058cebcc86d8b0491dab0d9d8902a467db521ed85cafcb2b93e382e001bbf6b840a56b0a933b012c26e63f39ef788ff3572bafc33684d47e00bdc6b SHA512 8680cf842f5149a89cfcbb0d8cdddc6a3a80724557da1b0d1371b144d71bc399a5016e61cf192c0b0f6f2095246b8ec4fb934811a915f5868e570cd7f55aaf05 +AUX chromium-angle-inline.patch 4775 BLAKE2B a4021ec1e11309bf901b09e6925d7bc90f1b30c4db08dae7d80d97a9ca4111f1f34c169465017b50f459f2c638b0ba8696fd8ddf01aa27bad3c2b3bfbf22ebb9 SHA512 ad413e8178b6004ec03887132d77d8648e5a0c9bf48552c8665f0782c8cb342d4ea417caabbae3a1e62d32046afaab0033574aff2399b0b74a721d44fcd257e3 +AUX chromium-axobj-ancestoriter-cat-84.patch 1401 BLAKE2B 21951725d5011f043ad9c9b9203916fc4098d751eee0913c976f51bf3d7f180a97817386497da09c97dcdf5ecd7f9ee8f39b2e1cea179dba57b5b7c18c19ad00 SHA512 7d6b58e1fb4389593e76a9268f7bd0b0e899c08c9aff3862467b72408b5628ab8518acc7eeb6377362f4e2f246a2230c13fb43eb72737a4b74da08fdbd164a4f +AUX chromium-axtree-incomplete-type-83.patch 1378 BLAKE2B da3347aef28e36ad4d5622d7fb3e471ba7c73f99afd6755b5b42da02a5cb13c478eb806ac4f9f5581a988bb6232294fdaaad1f43fa5db2e75cb94e2802db7657 SHA512 cca71653c65d4d8cd74b4ffbfad8a4bad7d890ed0a293131a7a25c47e2a2d6b9e51f99734010c951e1abf39f34bbf2de6cd355f5712358de45ea4bdf0cbf99e0 +AUX chromium-base-include-84-r1.patch 542 BLAKE2B 7156e2c2a66026e1e589beb34a44afbcdb6674dd6d9d892e8d740664247cded529c99d6d71e8d68419192ec4c41d283165f246d49fd710db1104a243dec94b41 SHA512 97f200c5575e1edf77b267ac66636a57cc146dcf9c5984c24661a2f196135463b968eb55f2aa253f52ffc19ce2f38627bb86194d9d89a119b7830ac78a90d95c +AUX chromium-base-include-84-r2.patch 260 BLAKE2B 2df23b7a96f58b01ff135fd8ec2749757462ce76965cd93a89fdd4aa3d4a1d811fea9f695f350601571466f226c606d1e0b749822c91a3606e531206b72e9bd9 SHA512 f0199b9d4c5bfa05814c506405254a5ec04d2dd0ae5402a0706de020a99351c65cc9fe971d865f4208689f478548831665d164d4e12348fba503753eb55853af +AUX chromium-base-include-84.patch 9653 BLAKE2B da0a79c56323e6d40ec5a21979e7071d391430c964882b2cdef58872a5929881191efb0c742173a59200102f583bae318feaba9e40ecc53735d699faab7e7670 SHA512 d4194153560dc603b95324df4614c7010245556b873ed442d94c4e88fe1c234c402ff09d94551c6ea498228eadf409beb6e9f9131bb932476693fc7472c6bef3 +AUX chromium-blink-include-bitset-84.patch 404 BLAKE2B c5e9c2e6bb202e4d18c2ca419e18fe8de811a094a5aef672bfea0a0d0905dfcf4d3b4ba60ac6f5e337a5dc83960dbf41e58d467253c007b498f063be61014808 SHA512 446a1f4e016bb6c012e8ce0b9f03e758498a7f95d09841071549df386836e583732ccbd7425f5db2e2e51af96af85f4a714a5bb8e38f9e15737b46544aaacb46 +AUX chromium-blink-include-limits-84.patch 522 BLAKE2B a2a40c1eae860c1c6b4bb156557cffaa684557ff8a4dc2c89e6d75c06d10da80ca8291a8d33d4a2e596534c6d92e591e00a2da9309382ac7a9ad9a4576a940cb SHA512 a4da82942cf22be09fb51aca26a4b8828af4f03c630d9cc6cf0e1b480af9f176ff19bd4ca6b006fbbe0f1171cfaec821100c11136fbb571ae056812773b58be3 +AUX chromium-blink-include-memory-83.patch 697 BLAKE2B a775f5b0e46b3c289f55d947596a195ff9bf958b681e2aec4978f445cab0f08c78973b85fb8219e6bf478ed5761536ecb061afba433e553ea12e81cd652b68cf SHA512 75aaa1ff27faa42c4bbb17c9b29e05307f511bbc93b4c2468b538cad2906a27993cc1997f5254b046ef19782f41e3afe48627d00602b549407e0cdb253743f3c +AUX chromium-blink-template.patch 891 BLAKE2B 00ed2629b466bbfce015f473bb7b50e7a97bd442271ead146aac7e488548a71aef637f28dfbd09d26e7fbe0b6a437d874949f2662902f72ae460a6a13d6f930c SHA512 534b811ca3a381ed3344a3406e1114fb5bab45cc153bd3086f94627e596def4d341f29f1cd997b8c9bf5a9687e2313f55c7ac4b8f1229f58ddee3e30d0b68dc7 +AUX chromium-bluetooth-tuple-84.patch 2421 BLAKE2B 251ea94dc9aad3322be90fc95628703028bddad6003278d51112b0fc6d6f6ad5fb2a875144238fc845349d47d12139cae3eabe8d28ec639d281edd0d45061cab SHA512 09891aa82e30b5b85e5f6d996d2448607ff4ab7231ca1aa382536cd03791bc233ba1b93ac82106eeed6e452af6e9083bbcb0b24da22a8383e2a8a9dc4774577b +AUX chromium-browser.xml 407 BLAKE2B 168d78b0855546ca559cfb51aff0bc85d5e6ae974c25eb76e4a02f6d11659489c6e40397a0b2f7bc1fda336fd2c6dd8c863fccc3340719210b41c7fef51927f4 SHA512 b767fb4fd1925029d95560fc14cb7ab12ae43b2fe923e92d75e733b9723cbe1dcdf6df041a2b62554e98b79b47ef3f6028c773e72e6fd53166a021d49657aeca +AUX chromium-build-gn-83.patch 1520 BLAKE2B 8a1abe464e071f138d7d02324f0559b5ddd65b772ffdd5b5235f5ab667b2a83987507f9ccff1109ba2935fe1d1b2c7b5617f38fb521ad52cdd6015eb2d326e9b SHA512 b98afcfddd235e5b5cb359f14f9428e9ed74decd5442c963ce46a43d646850aff8e49ea74f90e5822af8975fe2aa33da014a6f333f8eb07999cd0facefc943ef +AUX chromium-cc-matrics-include-84.patch 381 BLAKE2B 416cbfeaa579e6837ae718883a8cd695784f8a2195fdc92f24f804eda576eba30d30e0ed3041faedd55c0bb265d9a871d5b0e31dc97b3e162a60bb4e664318c1 SHA512 a656337365d3ea26a3a28cf3fa5d173b52fd2730a156af5eef7bba539bb43032557297396726682808b1bb2cdc5d9024709b4ccc0a9cb8d0f9e74edf97f955d0 +AUX chromium-cert-share-encrypted-85.patch 704 BLAKE2B 2997e18b236024fa2bfcd81224884c503119d10a799265ed6a278966fea43171ae176eb1383527cc47c1ffd2604429e6935f81ed99bf55be8d72783509927f07 SHA512 68761073a38fc34c396e986b1260a257222987c04c9882c2147de7bb44eb4cb1cba6df983a42ca07068adbdde0b2a24e03cfc9b6f645ac21289a204befb96134 +AUX chromium-char-max-84.patch 342 BLAKE2B 91a499599f1cfc583fd877337427895118270f4414b7fa8ed628ed1314a43914bc3eb2a4240ad5e7d00204b19c3e458fb4e78e4a8389e88f789dd5ac43a5e7e3 SHA512 64c4962dc6fec6f7f291a50fada0e8fc655c6c34cf6087382fe0cb9b4ebc334ec1610f9914d38328336bf7d05026e5021c238b9c81f7f1f17bb5d982364ddeea +AUX chromium-clang-format-path-82.patch 712 BLAKE2B 19d7b0be31dc4120c5f0b8a7a8c63cc3c09049d630c7fa5dfbb7a8ff32b995497f5c652e29ad0e68d8208c723ac6ca613ed882b2493bcc6e33e1dc2e9d39dfe4 SHA512 042e6be2d623f8f08d37a77cfcc8135b0a7fc46aaf57655203f46f00b68c3e997eeb5bdfa1f976dfb14ce0418292597461085632860f6323facc6808326ee48d +AUX chromium-compiler-76.patch 5130 BLAKE2B ca5cd4d035f8f598561a5d15a7c63bcc0c1d9923cdfeaab1ba25242aac8e62a77f98b8f7f789ac4810fbd7e64b71fd3f4d1f3e4746ed3aaeb5fa399f875a9f95 SHA512 5c5fdf71dfb5a7f54acf95dc501499356d46f5ad3b99731cca80ac9ba8114f0c488dbf860eebbae313f9ca14edd47ea4bf54bb7c454dabf4e0b4cd2855f14f55 +AUX chromium-compiler-77.patch 5134 BLAKE2B 432695dc82015369c71cc5bf81c2b9ea64ac624b111eff16792b56ef28b75483eb0a748bb7c682f0926becde55d2d7ccfca288c4e911fe6a605ee0e78f2a9575 SHA512 4b9cef01907bfd752ed685e13134084af0aff7ee8e2cdddcc03727e12769053ca85be6532ef0dd20c07e647ee163d6d6d7614d8195b8dd4891bcf50cc9b794ad +AUX chromium-compiler-78.patch 5134 BLAKE2B d9db40f91aac56a974c83f9df42e432f90758ae421677d2fc286ff583bece58308f47a8533b1e81f689e64c8fceb1f8627c1a8c88e1aef90b83342391bc4acf6 SHA512 85725be4e33bdfab3439894ed360ce4f8cec3b485ba752ca18080bfed2c96294bd670370a8c53c7afbb397a20be8cc56c3c6f7f05eae9c65b92e92925685281c +AUX chromium-compiler-82.patch 5361 BLAKE2B ce8adc543d6923758bdd880862e19025556d7dd93726740b3a4492b18bc6c739cab7b018d942a53373b4dfd3bda026faa2598655b00b0467bd734bc31e0e5a19 SHA512 cdf89e3090247c9b6f1d2b8cb49431604b6cd383181a3f97aad4dabe3bc92f7fe1d7827656f38216a4dcb422c634023888c5bd66b7c321e0d3ecc154c41e2e9e +AUX chromium-compiler-83.patch 4872 BLAKE2B e272c4b64250346698d06f3a8d358106880240de35ff516bb1fe3935c4e88a54f1f7f70aabeb8d5563682769219306c4be265d993f57c47c1be364b9bfd8a3da SHA512 9f340b7c407be819a5d4181fd58de7af63e19320746c3bbb39a4ae059156f3d72bfcd7f634ca4006a6a76577eda1a96adbc3e782f36777ae416b4ececcca3066 +AUX chromium-compiler-84-r1.patch 4923 BLAKE2B 226e5de095618a0e62d4230473fda9c420e9ad07aec4bc9689a6772063a5269f33de916abc2b86f640dfaffac2b4ffa33addf3dc213b3136ccebc6b5907f4a5b SHA512 c1d114fd0f260d1548f6b8a2bcdb8e2a2ca59b64b90f08bc2d7aecf8bac5aa29ecb7a59305dadb102e783b2b562ffaac6e8a9dac33bfc8bdac2962c4d372d80b +AUX chromium-compiler-84.patch 4919 BLAKE2B 42da305e7cb47752fe6782cb2baa251b1de1624f1be732ca38408ca15cae459d67e1b637bc33de4ca12ff46fdf962dea1bc1b1fbd937300046db0e7006a5c9a9 SHA512 6100dc1f1d860e1224d0e7569b112e7379cb78a7d6194746196e2435c82ba02c3cb8ede5f121d17f3291a663c2327dcf4a52a18384a03524c94743cec44dee03 +AUX chromium-compiler-86.patch 5293 BLAKE2B 3cabe5c5a6aabfd98e3c0b7e2fd69863c97bd50d4af2f5c57403ae4f2e264320e014ef7d2620038805b21416a021e187f1f674f06a62d80fad692b231fc4a318 SHA512 90b3f51e279bedcf16d055476ea77bfa271783e9afd79e807870e3f045b909812af2fb4eaa03ff80f0b97851f177f64e0b8b98bf726404d65bef2a66cbb5b85e +AUX chromium-compiler-87.patch 4821 BLAKE2B d12781fed9ba543823b93184a3996b63ac5a5fd93ddce5b973bd1c19576bb910fde1488ee7ed991664bbb7293ee05c5a34d960399a7e921167f5d47882703c34 SHA512 ce022cb2937ba4f540bd2b89c3735b0f388031e43cf3b6beec25b7f06396643503a243e81de16fa8e46fbaed5383f33b6b71c31c2411420ef5955a8554798390 +AUX chromium-compiler-r10.patch 5917 BLAKE2B a16ea6a1eee56a7de06f82e161536dab19a507f675fe8268b5a455bf36b9f5e6c1df02de73b303ab61e33153f06f118e22623d01f654d4a7c88ca8c3f8326401 SHA512 e64f9f75e685868cb8da8851e84362952a18e5dbca674c853a41feb582bdd4dc59219727f2c77440ec2030e21d7b436f144c552c30b2a4960cbe0da32c6f6c5e +AUX chromium-compiler-r4.patch 5640 BLAKE2B 2fe93975237f112bb280bd5b51f48e0e8454d11a91b81ce2ae0520fb59ff2c00498319e202e34f4c2abb1330ba2c7dbe9dd1a75bfd578453da533531b7dfaf8e SHA512 34e32d9e46a5981b021cffee3440582ef312e78ec1bf287c6d0f14f5ff7921a5b229238394259b8df5aa081360dd76aa6d7db095ed4e1841479d8fe55cde9fe8 +AUX chromium-compiler-r6.patch 5675 BLAKE2B 94b38e63deae80aa5f98edf60d35d2c49d57b84feda2944b363a8a230f1282e6da1c7175383bad8ccb7e272a88532fa9a718b824edfb1d52902490abc3b832e9 SHA512 455f7d1e5eed767c7917cd8cac842c51447f05d51110da5f3509fc21870e3bc1775029cb90c39b0522ac16b239565ba5e19fe0513e609128eb59a1759a0de6cd +AUX chromium-compiler-r7.patch 5729 BLAKE2B 66e7b417d685a3371684a4e173bfa2e6fa49415311ccbd16b60806c3b9f70c805db13c973861033444336d6f714270e5953f961bc54d42fca645c940ba30b706 SHA512 5c6ec5bae53c7b2a1b409a9b4ce8f2e7b1cf95421647b3c1ab49e6f3886aefdb858980065cd7a214e89dfe348f4a5b557c304a94bd7681f5bf4c73c74328d1d7 +AUX chromium-compiler-r8.patch 5383 BLAKE2B 1b746feecca55f4a0c4d154f4c0799fd21b073826025b161ed992d8ff812bb6fb8f45cd10dfb65bf20c0c3239d0f56a44abecbd893aeedf46d8c6d7781f247a0 SHA512 bee5ce216210ae8d69666a992517ff49e4b0170c2df2f6fb414dc510e47e680dd56a9e0e45294201b291f80a922d7f7b84dfec5c5f0fd0ffe4aecac119c55a94 +AUX chromium-compiler-r9.patch 5216 BLAKE2B b61d5a931b4501ae4d0b22a9c27317f464b57293d6ebe4ded52d094a78b5be3877306095598742abbded523b6bab40aa4a9cf7dd60f07c23ef42bb2f7868bcd2 SHA512 e780012264d6bbe09d871486b9624516e7e0d9b6bc714b66d4a1a768e3f7be02ca13c1e585f5da65cdd8da1c84dbe27c2e0119b330d98e5ea4c096b9da62c7d1 +AUX chromium-core-management-svc-84.patch 455 BLAKE2B aa156824199a2cbbb4f9459dbaadb6d7da64111698406ec8df131f8e6461d6e548179ccbb3c95c90b3be78dbd2b9372adb2e4fa18aaab19ab453cf28593c97c0 SHA512 966afbb727b2000c98b45ddcda37435fe0e15af4a31efe6de7c43aac3ac46e9e70630f2a8dd4d7bdee2e3c75dfd5e418411ba94682b0c1376b9aca41bf084f2f +AUX chromium-crx-install-err-include-83.patch 483 BLAKE2B a789afc760f37c4c0ff6238ad1fd818315b5e7074414540ba9d871b257d8edc21f03e196e30ce8b3ec3dffbb4a33d9abe8338ba045f593e549ba55d182805676 SHA512 33fa91504a9b512c09a3745a6d28d10552a840d43f857382f8e411d67948bfa3929b7ca8ff6ad3027b7805c1afefdcea66b8fa768f20cd35b5098b1607451513 +AUX chromium-cursor-80.patch 3845 BLAKE2B 2ac398eca2229b3497f1ce4e12d196217e7893251aea77b575b4814363764f9a9257eced12d22f3d1776c255712f1fc54126f407aa8b8e2f2d426207cc80e2b6 SHA512 c6d6a8eda1a02e41ee638df21bafa4f0e7cbd9f674907923912b7c221aef83be7d8858fe08d34aa16dc043e82212b9208887a7f79de049ef320e4a95ced534a5 +AUX chromium-deque-constructor-82.patch 502 BLAKE2B eed6b6fcd582dbf8495854ab10cbf19cf0c288d2a2b90c951339d82d5cc0ff93d7e2fbee260203f9bd4830af5bc5e9e41cff980f3d2ab8edc17efa7a856ec95a SHA512 07478fd059bd3aba62c519d87a28d41bc050296b3b6d542cd6435ac6a685b77af722a5fc88ec3e49afdd5fcd30ec476cad4b32f0c19850ac3eda0309db8977ed +AUX chromium-disable-mojovdec.patch 761 BLAKE2B 6d321fa5a7d4e82cc2150c8d7270bb3d7e2a964093dba7e599355d47b19518318f94ee8968bd1e5f587eafc9bcea0f8808350d195843fb98b5d363d6e4512548 SHA512 f291c3c8953b92e55e71d4617ef2b4db9d69a41148e823baadb5d697c469980012b54d24f0d9d6f61b1380b0d7805c7fd796256d78ab91074705612afb1a4767 +AUX chromium-ext-no-vector-const-84.patch 1853 BLAKE2B be5e898bce8ee78894f8562baf9ccce4062f790cc620ce854e7704f559d337945b423acc60d9ea14acfbfb11b3f02bc3ce744754a89b0e9b3529575baff45a9a SHA512 17dc1fceec1d560133020133ecbb990e10e59c51f646a3150d3bb9692193894ffa7c56a284137780655f6f9e943d32d2dd55c90de0f24a82adad6eb2e279c8cf +AUX chromium-fix-char_traits.patch 355 BLAKE2B 5269c43c4d36dc1cd190aedc04e3172fbef0048484ac7e4db15fffd69009c8ba02f0ed786c64b292fbbcd2409ad70545817cd7d45a2cb51fd76bf72250ca0018 SHA512 85ab70f168f56c01e01bdf210d107bebd7c344e95dcb692a19a0f7883ed6aec5325b38c35cd3c9b37c1915820d5e8d401e8ee92c289436fb8bc8341c3c6007a8 +AUX chromium-gamepad-include-84.patch 357 BLAKE2B 3295dc05f9718d88facdcb867ba59d8bfcc0fd2d9eedc4e78eaf630a69074a1767373127f9ed555cbdc154562b8214912e788704db553610720ff80d458330c3 SHA512 667af18a9650c55f1764e61c7c5d87976d62fffe273934b2f8deaac97bc04b1b319bc3a714e0b79e54b2d21e5c98e5f25cc9b535ab7042c9e41c7f02f861afe6 +AUX chromium-gcc-89311.patch 4280 BLAKE2B 3a1705033464f6421698d281d43aa68903fda2d268aae54295b94c75343facb87b67e5b6570e8ab28759cf478abb0ce44be47b6ad36c86ed32a275bb03974496 SHA512 869b694928ee2255cabb24f4be26e8a174395f36560835229d6381aee02ac95b4f9dbcd2c5c67c7e0c50a27bc7ee005370bd18919ac6c48048e9ae0762856fe8 +AUX chromium-gcc-initlist.patch 923 BLAKE2B cbe7020ef5c1f738a02e4e064fb7ff23e6aac6dcf659a06e7d3a47014a864e2fcf7afa9598dfdc9dd3a29c411b9136c0b902f68f427ff4715cbb2b425cb6d18d SHA512 a3365245184953cbd927e222cce7fcf6b36f2b6bd111cc31311fdc2852c6649bbaa37ddadc43ed401b23f79833f48c5ce4931f50e32d8763825254b63d5f9fc7 +AUX chromium-gpu-vp9-include-84.patch 373 BLAKE2B e572af184c5c63c1da8d85b706f62144418450f807f5a2245acb859488d0e625bbbec04a7f0303fcc91286d3ef5983512af23777bd154b902d3915a0c294588e SHA512 e9a6b3023418f36c629202ab2d2ee1d34cb72951b2e3a2d324b1cd6805ff8f36f7612ebcb6c0958782e82c6ebe53f450e54ff24486ea2cd5d0e114fcbf4be94b +AUX chromium-harfbuzz-r0.patch 4173 BLAKE2B 5c74627b52d004a6b108c69a87ecf7472a7d1c213cba3801d28e83806df5604de55831ac348561a3cd9471b3b3a69c6e08a2b1271b980478c1b815f14435c575 SHA512 174b1fbaec1b8a88f41a06855f0475ca18f40ee5c0a9ac8a9223c7d06fcc1173f36c85d90a332dbf48bd315bf646ca1d4943d351ba510f3045500264e82c037c +AUX chromium-hashtable-iterator-cat-83.patch 2767 BLAKE2B 5af4d1ed4e3af95c6f7d77f44c3432d3783ad11075b00fac0b15d79150f271aec374ab6d6ce8db586662b534e708b67992ad78cc3b627c7f89cdf949ee652f37 SHA512 c2527b6f59999bb883418a1c62efa30895bdd939fb7e720826354f525c4fde3ae8ec7ff72f356a3e0632e0cd6883566bf798d81fc42172294065144509dd3adc +AUX chromium-include-limits-83.patch 701 BLAKE2B 60a2be430c24effb4e22f77d67cea8ef5ae90499c096034e99c046103a22608ec88adb5546a700f87d6bdd3a33031324ff57a3aa766035a68469b5478cc2d592 SHA512 e00369db46c1c0db2c78580e4e992b9f55c6fdf6948e08e1205de417a9632d19b297c0ec162a544b19cefd61c3b9a90a7cc7b0f6e1b0cdaf45b3721eea17b16e +AUX chromium-include-limits-84.patch 614 BLAKE2B 698d2803f738c7e693f5a2929f8bc22cd70b5660ffa44979dc933ef867c8d7df5fba79a2c82301a568ba68f093cec63668c8b807f028326c0199d6c3d7894079 SHA512 ff6b1e1159535e9143454d2ce3f810a5eb38dee1ba4465972492b87d4fcdae2944301b0096f2e18e3a1e516fa91bc2ad07eca17dbed0a4e1a90dc749c65d0fd4 +AUX chromium-inline-node-ptr-84.patch 716 BLAKE2B 51a7927355df912de5779e0ec92ee838e10d671280a580789804733a6a661df1ec8944ee78ffc2057f095ab7e201ffb7c32512d07b99f6d269abc59973b54af6 SHA512 a44c9883f978313d8167723db608f46d33566a96703d7ae8562d77c4900cdb639c3a68d887e13285f8a5c62b5a19e0641570447a78be451b710f5bf0fe96302f +AUX chromium-launcher-r3.sh 1199 BLAKE2B 85f57b380cdc25bd000cf57d3c129b67f6e55d96dd958190040b0680f8d4d358ac777e0c1ebd6a1b32dd3821a377bcf9f598e073584528d0480460978c4c1fb1 SHA512 f1909314ae74985c85740d26c9bfab694f3202de8ccc392a1c4ec5c8760db21b6cc46146c78a9abebd09e6d24f37e19466f0c4d2d61815400b48d859f8ce154d +AUX chromium-launcher-r6.sh 1593 BLAKE2B a871bd572239552390b216c89269dfe132474e1f57bfd0429f605af8285634659725c550b701e537f56adf20cba2dcb27dd9dadd390366dedc147f1ee987f462 SHA512 c01cb376eae2871dfa7a488d96ac8cc3445230eeb0fbd865948c5b3b601820468e85f2f0b9b30fff940c736aded050b7802759b8562e6378747af93c1d4f08a3 +AUX chromium-launcher-r7.sh 1631 BLAKE2B ae28d758264446511fd2b64ba69fe920144b351e8833e0e98f43d00633e850094c288b5d97d1a84801ea13aceb294623692c86c1b9be5811b7b97fa8a07a1ecd SHA512 1e97f8394bd8bb4b29570b1b85176efe6258314a596f079bee1c4018113e0023aa54a93690ba8de2a00d127af10dbe2cc3fb3127b72b841c6f28f9e7bed820e0 +AUX chromium-layer_tree_impl-stlcompat.patch 599 BLAKE2B 5e0f1267f87df14d3d7a46f5f567886ac9603fa977a80c34564de9567a288d06fbd92f1013a750accbf43e2c382696f7864a92174b654c9c78c83412bb8374f9 SHA512 00725253785311f6f9ce98f03de331fc781ac7dd7f6d824628fffbacbafabfdec8176ec5a95260bc8a54d8fb4791cad3b8081a373adc85fe6b3304573d442550 +AUX chromium-link.patch 676 BLAKE2B 8ee29004a66d2499bde54c1f81914f0530014ea3fd5ec3cc3c3edea8fd9b01cccb40ddb9bc9569b82e1097065679e51f8664f0b168f7bb66d15cc8102629ff92 SHA512 36a66351ab51ccde888048af51fdd9abfa2c01de890ff9f97333f33123573793f009de752e5f466f65b46a61117a32194f3d139882589ab44fe2c9454d9f8e4b +AUX chromium-math.h-r0.patch 1092 BLAKE2B abdef69cacaa5af0cd84b293b300fa5db631b7df8d4f1237449e858dc3ff56589a3f46d8228fc0c969552f41bd9cf2a0c2cbf4a1936c2729f701aa1d4ad86b94 SHA512 91a0d74ec51a6776bfc4212a132963fbc4688c47ee1da40cfbebf696ef26a766f5189cb0a972ef2cf4338daa5355ce79002d624b5f30a7c2de36e40b07355f8d +AUX chromium-media-alloc-84.patch 674 BLAKE2B 9b2cc7170e5ba39804e4654a6e906003a85aa3d85482bebb37db3dfb9fdc6cf92740c1bce5caf6a5d26d3b47ccb73bb72a4256515f5f6ea6c92513a677bf0949 SHA512 c54fdb3be12b4e0b166ce4a5a4abd7aa1ded9b0dc3ce1079bea62c0860f936073dea8e2062ae9248a89f475daadc621bfe6d2b22bdd567e9875e472fc8e30189 +AUX chromium-memcpy-r0.patch 1306 BLAKE2B 585c015fbc6cfda61fb28c451da1433047c21e439c6a23e2f27844c308984a2066a70913669b3e1797233f86e25a119e494156c0b869eccc94d21c2abaeadba4 SHA512 1aeeb70929acee529dea66860b42f106afe18c0f6219eb03c9c710faf8d20a997135550e289839599ec325d8f032243fd70c07d397bd89302a192c41e8c4660a +AUX chromium-mojo-ltm-83.patch 3300 BLAKE2B 714691d9e0766718151ef4afa9c4ffee9ec0ea554bcfdb663b61d32d87816a6b391249923483207dca0c025fcdc765e763b4f0e81bc90f4ac06801b95b236868 SHA512 08c3ae8e0dc950af3a0d0bc8363adbc977574aef57e2293dc57f6f0d7409997d315200f8c29977a4a2747445f64c0d31f8eb0053efbab787ca3bb913578eb153 +AUX chromium-nearby-inc-86.patch 339 BLAKE2B 7e3f5d89d38b0e36504181bb978b662ba8285c6fe7916ccf126301632f4052ef58b78bae4e2d080856a3c6f7b4592ec1ef12b5096a0bf454b8696e20f8fab274 SHA512 8161ba06a708dc31700b108b6ff6ea228522680d3247d9575485a17aef7cbd955d811dbe1bc408a29f4bc1f8618db3bfb2e43b1371a0a3126597fd26ecdb27f2 +AUX chromium-ngphyscontainer-iterator-cat-83.patch 857 BLAKE2B 3ec9228375531323beac35c266ffcf73253e7232284b90cdb4a6218ada0dc74e743b46f72105721575224a153a3b434e490baf15a47acdebe7ce9f09e4a6ba13 SHA512 f78aec5874f7ed5ef74682604e46de2b04121f7a54fab9877e68d6981ef57b7004f3cb54bfc2533e543b505556b57e09f0f46fd73abb8d7e54719bc0442ba4ca +AUX chromium-noexcept-2.patch 1503 BLAKE2B 74ece36641a0a41e2c2a0cfd21fbf0b5b3a23c0282c0fde85dfe5d99289d147c9322abd99f29a09ddaa69be581487e599c73233181ef003186e08ee9308cd0d4 SHA512 c4eb7e177774351c0adf68504b3329f66145531c3d75b7bf93799dae889b1609aa34a27a02f78aba12132376d3684a7b57b5e548eb17b4b4dabd2248dc3441d6 +AUX chromium-noexcept-3.patch 1221 BLAKE2B 2e3e7b73d45fd06624d7e1b195c9d87239685bc4d3b18e1ca162c9a77779e52adeeea924754e28d2147a15ec9d67ac2650eaf57dd5a2413bd1ec6dffa767e9d9 SHA512 6bfade674951bf3e7752b201d328a058c54cd1a20526b97dd5ee874cba137dfb54ae8995ed3620473ec13adb588b69c11f9bbab755bf1cded5f570eafe8cc295 +AUX chromium-noexcept.patch 1235 BLAKE2B 22d4a86b33f4c9eda93486bc5dfd6dfed615baa07c74cf182b3501be0f05397b365006f765300c1a362ddccfe0713b98f3b2c5ee147b3979c91db9eea6e6ba1d SHA512 3f79ea57f264f125c5ef2b9609beff90cdeafcea1b4f8ec1048e91bc0998813944c17e1d5e4557d910ba70b263a52da6a6855914df4a7a5be3e2b967af69aaf8 +AUX chromium-ntp_backgrounds-include-84.patch 458 BLAKE2B a54a17eb402c6f11607d72bfd938bece610e55dca5aeed5875bdf60c5c79fa3d01d4c122a760ba4097ada7e8aa0aad032708b9ab46cebdab0a30530dcc750c05 SHA512 ca16a12e91ab025d49ffdf930fb19357efe39dd516dd559c872ba7044d1b4f56438e195374659b29a4141e7d9bea2e4cf340644439b3f3e9262859cc3477a405 +AUX chromium-opencv-include-84.patch 318 BLAKE2B 641c499e0ca35cf670c56b084c9d013b5c32ec218bdf16fcbf9d095bde46a50561d5442f097c6f944794c2e3fa575a0c0c7b43b76a177b3d70f12e3d749fd593 SHA512 d18e7804fc4de56a48f8a14ba6edf6b43b8b9d83cb7e28524d0cb8c8942a5cf6f1386a1c479a941c8e300050578d653b2d3f4a3ea3313ebfee906f7d1d0b53e4 +AUX chromium-pa13.patch 4402 BLAKE2B 967593e1fdf05d9bb1c7a489b9156024cef3fc7c49a1b1bfefbb8438c42b9bfb807422cc67568d425a37f181e6863d12c9629856852d5ba37f93c0c45919a1d9 SHA512 4aee9b0d31a682da2e4362856532965608a5d718f8f74812bb240b03f94620acb502c9f806c788ea26da386eff0b6c5dfba15cd4ce84b11e6381d70bf59bc483 +AUX chromium-pdfium-stdlib-r0.patch 986 BLAKE2B 58dadfcf17149382890e168cbfffefd245a7df5b6a1465bb9706a5b08aaafa2fa94683a7c3c73a98c832d08a053bd20e8d81de13e89a52651b591a545ca849fb SHA512 f401b632ec6cba9a119b623aa08e222ef72cc080d61bbb3fd58eaf44ff950f89ab0a6bce1d5b134ed6d389de8375c0dcc3a8b4ef4ff78005e05490f6cef3e4fa +AUX chromium-remove-no_check_targets-86.patch 34863 BLAKE2B 3d09f864df6c283de45694c331d1589992c3cc06f8c3f1f65c6c0186496f9ca385d3e46eb16b3132718a918def96e936183ad62502970d8d8565492b1dd0050c SHA512 c6196c85d966f0649f83dd03ba4a95844a1363c24100c14becc9b175dc7e3ae7211906275ee56b22608e340410664c7ca5cfe35a48053f9797ac7620fdb6eea8 +AUX chromium-renderer-std-nullptr-83.patch 641 BLAKE2B 6db9bb8470d35a59391ce7cdd0a3755068d1f710f9b140ee6b54fd4beee3330927641ceb32370aa209625d92eb6066f51126093c3e3a6022bdcc60112baf2cde SHA512 77122d0ce2d57c7758e8ecbbb665d9ea5e1ef77d161edcfca7f42c347819d11458cb82ce72e7b5cda6bcea71538bfb757e0f27fb59b9c7b7f20ffba63f8dcc63 +AUX chromium-revert-crrev-2147485-84.patch 16187 BLAKE2B c4150693fcbc3e73e8107054c2ee81ea4ae65a5cb842a299216ed3cee120c1470a413422d777f632ca322719bcfdc1ded1fdbea6b2b9ad9d744fabc63179c65d SHA512 d9dcd9788a6c87e5de2b3d0fcbdb2f3371853a5d6bf527adc47f10dd8f4612f9c1f2d7601ce8a0386e947259b320ea4a69372df4ece5d2aabc4bc375d3faff36 +AUX chromium-revert-e7963c4-78.patch 13922 BLAKE2B 988948a7c61e5282b58e6d0c010238ce3e036038bc2988a4a1560db6619c33f712c24169b3bb653ed01ad1331c3455bc31de37e4d0b229f2632fc0ee957df24e SHA512 dd7bc2f4a6bae70dae39bece16a3dd2279dd66f75efb6418518e317ee05fefa92d2714041072558b494aa63f5ea8678154d2f482b8479308000b92fd3959e233 +AUX chromium-serviceworker-83.patch 5784 BLAKE2B 04716147312146254b4507750e0f946032692ce12186eb710d9373ff24b80b07e8bfcf449fa4cff622c35946f07de44d7115297e3a42d9fd679e17db9b88d99d SHA512 8cc321621a2412859fe436340186a5de0a042d1bc2fa1d99e828222a14b3f4117bc2ec2a1af976d51b433347d3ff0a2d99caa785a6a6c49134ac16b9f350e6cd +AUX chromium-shim_headers.patch 1510 BLAKE2B 9716cd250b249c6255aca01a385ef8a2a6f1df9ea3cf7499715543c14f8be62fd323b6048b890aa2be45891e7a765d92de3f41c3b3a88c08dae4b806c048e20f SHA512 c74bcf690a41b4f9b364477d23408d493aa674e3bd014940098a594471297c2a425241f908510061b5f11c9cfe009c4a803370edd757d3c0ab8d9c0cc128135c +AUX chromium-simhash-include-84.patch 820 BLAKE2B 0bafca40d5a09d8e3c38393db7ac4755a9c1c0df25b4c4bce8e9763bd8c3a98999c4a2cab9c14d6157ad2f5c49dd5af645ea2b3737fe64be66622fa467acfa53 SHA512 cb4ea9a550d49c8905cfacb7f5938f5d07369d1f5bb84cc2646391128c232ca47cb57ea0704398d29886c18e02ebc48feea7622817abd64f775da252f09bf194 +AUX chromium-simhash-include-85.patch 464 BLAKE2B 7729543d0e8e1075b62c0f1177bba72d2a00c4a81859c85315f880c00b20fd7713c61199890661827dc6ca720f957801f867fe6a4a506a5c8dad35baffdb4365 SHA512 b9a68a1c421babb3a044ae1a7797d80244097e31187686789f99645e261d5a60aea482278fea42d25cb309575f2c45f3db68ba9f4c20fc1bd36efdf5b09620b0 +AUX chromium-sqrt.patch 610 BLAKE2B 84614133989e8856529099b17df099496b569599a7d94bcab64cbdc40343cd51dafd2ff054c4af22ba55a2731951bd3a24209b4c5e13721b6c4d3f69db8d5cc6 SHA512 297cd7586358b6add1ea8d29f69738b3c1c2da166fa8fbd3f13cc575df40dfcf18ce527149692e446b775b5965e07adaf3e964df19ba726beb0988ede49c65f8 +AUX chromium-std-nullptr-83.patch 1225 BLAKE2B d794d1b576b6a236b27ae824e8b63badea2aec0fa3a6e0dee27022a6af3cca196837c93cf93c538172699dcb2da22690e6ff8513a200e435343817d4a1663812 SHA512 de1fdabe36f6256792036cd75407b20bf8ef45e4922c89c74d7dfb9c859beb38434e103567f3c2c5c9548bad16cddbfbd31acea03eb09dbb817f88162f67197a +AUX chromium-stdint.patch 623 BLAKE2B a4bc24a472bef266cc8e67fde8249b17dcd407fd86e6f614f24bb5acb18426b620b7b5e8e4d392940cab3474e8e8ee9633c61a99853f6316c77417ff78f1c034 SHA512 adfd265ecb2326f221eae07f910b7217f5bccf6be4ba750069bc05d7ae458f3b32ae825782d032299330e7c29a93a76fc732c5f5865669ea5eecbe167e04133a +AUX chromium-stdset.patch 600 BLAKE2B a5d8c42aa9bd618b9afec02f08fe37b04cbcbf34b7ac038de37a0cac4ea044af9575c7c4d11b84d1f7b519dcbdc528f73548015fef1b8d11c1ef8df3518178e2 SHA512 329dcacd4d688809f73e439574747bd96aa9891481067d1136832ce049f25dcf8c6c7bc51f01b3622368caee2d1d708f4f760bbd07100ef73149fc2a8d26bbdf +AUX chromium-string_view-79.patch 3433 BLAKE2B 8f7e6cefc0e98179f5c64db59fb542b5f2acbcfdced0186d4871d16c49885fb1b731cecd370aeb8d152c5ebab82bc7fbe42f04e47085e4b31869af4d88f6c64a SHA512 a68b9176f1e88bf64d552f99637b4142a40a4db7f17f82a0f4a6a8186d00fd18b4a65d97a79d09a98052a8d03bbfb9d16938b9deb02267bf66a34dd1e5c04b1e +AUX chromium-swiftshader-77.patch 1780 BLAKE2B 5f7636ab6871e164258be3937aa0aff4e8c2b76a7ed1e07a7ea9b98c0283929937e2a22435e9d0dc75eff967de7f364a1332d3d7516726a994fe11a7bdb55768 SHA512 cd0d5478ec42a7c9340016f68b4ba9b026bcaf2be66bc908089f33fdfeeef951613e13b50880b663a57f3d1467eeff33ddf78897b48c36fef3058ac10ff08477 +AUX chromium-unbundle-zlib.patch 750 BLAKE2B ffce4f4069fa8f04c41b8395105d4dbe2f7e38fb9a3b2fa826972b894825dd64ed23c2a86d1445e454a96d35ebaa059ae7c2df3d2baf986be068a47be072563d SHA512 539990ce23d38c10274d9f44bf61ad53adacccaa16646ebe9535c03d2fd468d5e722aadeae82ac244d64851bbfa48832ae0895743b957fc0f4e8f47f959b1e97 +AUX chromium-union.patch 1455 BLAKE2B a644ea8d7454182cde00b62a17e5511e25523f011b0e004cc906ecd54b3124f25c15e17247c6d4883c3df23e96071afc94c0da3727187e5af26d16bb8b5b4a58 SHA512 41e6c2bc3562dbd4af9306d5651e703ae23b8228c78374ba7a3e5e248c662db889c3067e51f1eadd77521fc46314e4e57c2352981a389d705965c84d793088be +AUX chromium-unique_ptr-80-r1.patch 599 BLAKE2B d9072fd4f5bfc37224c4266e7a164d5329e3cd7d9527652f49c88531659ac0c99b4a1f448a58a5f4fd19fe188820acd99de825a05f73c5ec347cec717081cef2 SHA512 29ac28df532937cfa9dfe54fea582e8b37ae11d23d0d170b1d75bd5d35c8eaea878c518439d43f4a22fc72ab69b3c733cc5b05a4c73650cbcb3263f2db0006c3 +AUX chromium-unique_ptr-80.patch 295 BLAKE2B b4366bd7afbc02def60e1052df921338e80b7f7fdaa2472ddf6069b9b5d5e93761e5df5ce2cc8aac27bef32b93613310bcbe5a4e5c781da703a8399832631909 SHA512 2e8ee541dccc37d37924cd189c47dc7398f1ea1214d01bfdebfdc721742c0e09b1044b5e8906f93a19971eff2f2793734d37274c001efde0a48644283de4349b +AUX chromium-use-oauth2-client-switches-as-default.patch 1085 BLAKE2B baf3c463305934c126af4f7c5be305863edc7eec3add5b5ada30565b49b5944021eb40f1a9643e7eec3f973c502d9b02426f00b760570fcea5f1509219e41c6f SHA512 fe2878ee45778bac894ea17a668511d27ad2ca40988d5f11439790b700bfefd6560f3931415b4e6c543fcbbfc7cfef55cc757ed4ace1d111039ae78c46b81945 +AUX chromium-vaapi-76-r1.patch 8406 BLAKE2B 856a012bec286fb153f371c75f96e2667b8f5a405f4870dbf46d55dda42b0b9daca216b6a2cd7c70e5c851ff95b8782adac1e19980d684ac82799f76d581eba8 SHA512 2c6a5f8703ccec3118c798043199b853b7cd0f13aa9781fe2a48eb6248ae915fc9bedd95b59c603550a7a6b429d837e0af5cd8ca05936e53dee0976ac030a0df +AUX chromium-vaapi-76.patch 8464 BLAKE2B 5759a5ff237c15c9667bd303eb32b36e095f6b962a3374d54d849c1eefd483252a1652c0c7da70455838a226caa9f78fb7acefaca4bf6c930a049dd2df9f2338 SHA512 2ea428757cbe0d27f5f6d57d2e0c81ca449120d7f53045a3dde6e37f2bc3eaa183ce008029b7b882c4a540348122ca2a14948dcaee376a17659a19c796e811f0 +AUX chromium-vaapi-77.patch 8412 BLAKE2B 68688ce1fc410aeee78a7702e0963f973354f0590d448048ef2e4a6d99748aa2e6e9156d825f98f519302a82b666c1cc17fe32fbd3e04d5ca8654b6eb081bf26 SHA512 d8e759b7ecbd415ee9b00d7fe9105fb34ebcaed4ab941fe4375a8d67c4abd9b03de77cd2d349ca5e200d7ef848574f8e82f623dd3e45c16cd663a28c6cec70b7 +AUX chromium-vaapi-78-r1.patch 8384 BLAKE2B 63ec4860823b38eeb686f629f4200937eac97dcfc1b67a8cdeae723151570c1bb1e0f126d5a9c6d7ba648705e08c95d2a3d3a4cc0537dd27a7132982b2e5e752 SHA512 72c37f29762fec712712d0010555a2ab5cba6f3dd050fe541ab775ab9aff7686d27da5eeaceeef963ff90c1678ecb0e2a95b81437cbe8bb13fe0b04f9ae0d524 +AUX chromium-vaapi-78.patch 6538 BLAKE2B e3db5bd4d99ed9dfe08738f9ede01f7390b2699dac7fd01102ea3e93274af37a1e000fb4909ab0e70625905ba494d2c07e02fe368d809885027e91f97811cfd1 SHA512 6c48a3e33d5b0b135d251441ec925bce401e5ecb48f2a575e84ea44b06d0dcc548825716622f2226231de63f7af74cfdd42b527d077d2c6169fccb77a17a46d1 +AUX chromium-vaapi-79.patch 8396 BLAKE2B 52eae5579e090f4107da874634beb17d31472f0eb86f7fe2d150921f2cd2841246b70aa10b7276b3fb761b572b92e15d0ff0ed09e347d0d1bb1c7350b34d2fc8 SHA512 80b7882122a0bfc49aa9af802150bf45fb751fd6cc1967362672d61a06dcad5fcfcff96516e71a6d66c7d9b655756e8ee60b895f16025ef879c2b4117358625f +AUX chromium-vaapi-80.patch 6259 BLAKE2B 6b51a93f998e03e176b42ea2344ff5e7685fb1ca311af3b43f05d2aa7644290829ed35cacc34b907b3588740c5f70b4b0038bc1e34db215dd90ed36c527d3172 SHA512 9dcbd1af04687991e1993c52ee870ec3649cd2b1fdfca67b17b9392845283ba8715655726eda5fc6cf5762baf7b2d2c197bc654ff7085d0fa1289bdf9bbf78f3 +AUX chromium-vaapi-81.patch 6626 BLAKE2B 3a186a2a112338cbda944b9397ecc55ccfe28abfb701fb0bfde3d4c567c89992a9c3f4a7faa61cefc65f44d279d6a36329fe9b63d897b2be8255b57277045301 SHA512 ee0d66789344c755bff39a5902d5f302f2e46e7ad49be2c7d8d128e71b40e9d03c469868a639fff59176132479c4e89c203b33f375d37be9a8c88cfc427f2bff +AUX chromium-vaapi-82.patch 6710 BLAKE2B 83a2b8d82da55bbc6ca29ac7a668653940798f573f6f0a22e6e69729cbb752aabfbacd79628bc9a1d76e7a9e4d7c457085dc4da375311b5f643a00d7b23dfdd0 SHA512 c78e114e57d636bee67e9cb48a8c3be44e94882dc7d46f1680de12cb37a0bc4f438a73e834430b9865abbf1842ee417d0aead105e321158bdf03eb81c54a4625 +AUX chromium-vaapi-83.patch 6731 BLAKE2B e93b896c9884a92d96da4ed555177015250f5f60233cde07a728c3b779f363b8e1bb18d65e38a3883da5e267ba8b82a9b096532878c41e539714d6f1fdb59cdc SHA512 6c5a4c76f6e1e188c6dd3803e5d7c6ff50aa9a345e339928e31997085756fe8c786ab3444c1e70379aa8a834bf2fe098eebcbc8228b4cb5dcc5106c1082c861d +AUX chromium-vaapi-87.patch 5202 BLAKE2B eb93513c311f11d2de6aa7d4ce2edc8b7cb78354611e4fafc44e497ae956d42aae3a555b8d074e60844e2003f7f7ebb2ae69932c43f3b0a33bd7f22062473085 SHA512 df26b0076d1a04cb24467b78b72c8d25d7b46588be1bbdc7d86d05d6011450a393ad1500a77aa7447c00e629600f3f5c0bd38ba9f597befeeda769d3d2b3275c +AUX chromium-vaapi-fix-87.patch 6993 BLAKE2B 93efb66324a850d73fdc4105ddde6bdd873fcd1e1ef750dadfd6dd31c712bcf2c552119472f52ff66cc6721bb3ec525a2817199fad2ee1f1323257ae9b09b4a4 SHA512 d056d98a69a62478949eb057ad5b86edb7dbfefb71cde23b256947fd2b3988b1ee91ddece09437f8afe4ee072c5c922c87d662c6f2dd00ba208ab569ee712ab4 +AUX chromium-vaapi-signature.patch 1275 BLAKE2B 9a06778c32dea2b2114125ce1558d3a2063b04b43fb72aae994ecd20227a35be0dfefe3d62f531b765aa8fa339b04e488de4ffb0a2fbe5dabb49960d11e4ca86 SHA512 e394a135bf1b1efc3892782e69a79826360ccce65a3bcc6f9db2d6c5486df64aa5d9fe1146423805550ed15a5753c3e83ce4c8acc5be9f27f24aacca951b8137 +AUX chromium-vector-include-81.patch 658 BLAKE2B 033c9113aedd8c08d3ef45638d1e04e2e1d12c7250b308682e249164a436f869a5ece63a83a4852c79fbb2737050fc2063d41d371c2fdea816f5a478f18d7bc3 SHA512 e1d32fc474090130d9affac38dad7917030de3c10b9788f5dc2d378842b03f8c7dbf6712163aa6d3543ad5012d2f69f55112189d78075637d639b1f2e813e203 +AUX chromium-vector-init.patch 495 BLAKE2B 7bf63961346d2be39941d878bf5e5b22203db5f0f16d6290ab44aa9409ce201c3d211094c544ddf3ea6e1b785e2583035945bc26139b02946a895d6ede305bd6 SHA512 86f597835edcfefc6d37042634353f2d0097c5bd36d614a9d9c8babfb00fe89175fb6972fe8a01ddca915301622fadf36e9f3fd4a636d0d4dadfad1c0462f5f0 +AUX chromium-vk.patch 797 BLAKE2B dc48f2085b170b07729d2ac608976965649cacd1398f8402b7e742493b6936230e9fe732f121fbc3979f991226bfcfc9abb98467a0eb8a2710d10a3e2c2c8191 SHA512 1f000a145add62cffd046f0c7819f727bfea423c8fa0664cbb4d1c929864be24eb3e85ea73168c00a5b8f60924ece592a5213f10354f6a1c497f87513f8b1622 +AUX chromium-vr.patch 1646 BLAKE2B 5a381a897dc664e8c0dc99404ff6c70c89e2f485b3cf1821ae89c742d151450eedad63ee313c84cb1f736828a71d63575a8ba31dbfcf127bec6c8461e5e1fc33 SHA512 bd29969eb1af322c23c88c694e413e706a5fa95de6507db9530bed208db64fe4d07ec8edc68b5e59a56602a3a7417459de190020667f816f909a4217fb852ace +AUX chromium-webrtc-include-84.patch 430 BLAKE2B a75a502f1cb17446a1756b9cc0f57ad8cadc94e629c2740806133a643c1cf9804df93173b86db0d1e0f64135320ccc58b5596a7c5af3dea829f956fc459d3eef SHA512 ac4868de1fd353fa53ba0c81c051dc9b2f0824d80cd5d304844ab9dda8df00eef9f488e33f7ee89a5459b6a87fd446264e86f60bb70ca735674f8bb1ca9d930a +AUX chromium-webrtc-r0.patch 972 BLAKE2B 1c49db0ba631c8e517a5b361e2882e7f00d9b018af2bbe7e701b878b78f1480317bfb6394b0184b49da3c4361acebf6f6eb164b12246a61a9b205e209d8e598b SHA512 325e269e6c24e9d3103ae360653e0bda764356655534be08cfe308d8c63ed8c93c80c09f58d023afbc6e141f7cbe5b86f7983c57b8f6c794b7675d332439b051 +AUX chromium-webrtc.patch 563 BLAKE2B 0b819b72f1eff3eb456c58fd54f4663934707d3c2f9d814fc6a4c64c9d7f944024782e12202f0c268e210f88d18c04f0c5613e8c27980c3795106b2225841c58 SHA512 642b2d77233b09fc674598643f6bedad7e3a996c2871ea0b90569227affc6e19a573048124172747da19722bc2822e151e9b2ca01e71a8ce02b04892533b69ad +AUX chromium-widevine-80.patch 538 BLAKE2B d94b0c48652de93fbc377b234c07b0903fdabc14cadb8c5854b2a07fe83eaa620224b1b8b42ed62d13348d2687819f56f25cccc00bfbc862fc43f873f53563f8 SHA512 ded21174bd168ee8cef847eb51d1158e69c886c4326484d3ed941dd54067e9945e105f13a4d9943acb83a7e33f92ae69c251b3dba94d1f32f6beef1298ed5a10 +AUX chromium-widevine-r2.patch 1488 BLAKE2B fc4dc6ce40b2d2a152a0bbc5958d8050d9a7f4176cd0121d81ae1a9e76d361c064f54e034fb9213fc802e0a4b1b8d661788dbe9089daf8b197414724a057d4e4 SHA512 6fe8eb7b0e6c88e00d1b3dadf433b886c71cbf9b3dd4e712845a636a689cad6bc58fa8b20b412a1f7a8a1b649bccc8c961e762fa5f4d4ae092355e70db0a9cfe +AUX chromium-widevine-r3.patch 854 BLAKE2B 27c0366bc9a7a38024a4ad6a1ee2f4730443984ea70fc1b248147f18f3f73bf87fc4c0231c071fd712f2b9cedc17126f53d8f95c96dd608d7281404222558e08 SHA512 997199a748fa8e9f552f6238364cd2430675a6eee915f76454c0d5eab01eb089d14f8ab5fa78eb37acfa1fba527e206320ba9a3ea13bdab39a5d001238df8c91 +AUX chromium-widevine-r4.patch 1155 BLAKE2B 7ba02c4b80883fa7ae5c46d95072798683bdc5c9d65b3cab40e6a3c21b29ce7eb9c45493ec10e522341033a80132818f946569ee774c662daafa4e09fbc2a988 SHA512 8f78c0e22f14f81f1903a77b315c7818603caaadbb5d517a3184a11e9553b99fd42d5a1d2ff19b3d79c03352b2e279a5102afa2fa66f276da2d9c42988a94366 +AUX chromium-wpt-gn-78.patch 503 BLAKE2B 1d3aad8a4781b5e43e1eb59dd1b2fdff28a920da9929584b2d3fe1556b4453a4252d3e4ae73b4f60c6be4a2b5f5be9b7a548faed39ef96193236fb2c63a9aba7 SHA512 adbfc58a527a7c0915e67c76524153a387aea4a4e28b5c8887efebf983347c19d6f4649d406499c9df03e6b91cba2520cf638ca72b1d65fb90e2797aa36205a7 +AUX chromium-zlib-78.patch 408 BLAKE2B b623e5ce39b53718779bb0418ac6af4f90c05e8f8e65c9018dd8c8ac8176494d07943969fb39ab32cc1b3843398d9557d071c590df3c5a4b284b9e5087ebcef1 SHA512 ed73488dc7cb0cc4afc4b30d619a6b5302edd5acae46bb20175e02469fc6248f7cbd052b4dfacd6d5dfb7bed215b5ac28c9c8a82a64c6ca7e6670059937bad69 +AUX chromium-zlib-82.patch 398 BLAKE2B a7e4f98bbd0c19765b819dc322b14eb1abdc94ebdbec2f14fa0e19a8601125f347edd8e8275ff98328791657ef4968bc97a8321ba2ce64968ce26092ac11d08c SHA512 138001d8b638e12e9649be41058bcc71d7ae291423adcea6f074c977ac6868489b5108ed7fe689dee61619bbf07934cff58d7a65d303b80babaf31876981ad0d +AUX chromium.default 148 BLAKE2B 5ee5b582c59a6e4bef87bbb0e232e2470ad412b1fbbb3b9af6ef7153edb55c5b9080cc16a5a115b0c5b3c381aa87ce57a7b12bdd2070e67dac10a6c2995ddbaf SHA512 0d4849e03592fb58b05e62a43021eca7e61615616c8907c3b2e445402e03adaf9e8fa25b0a745d6c31eb037456215cc02b59e345a3a06d932e76cf990c92d739 +DIST chromium-73.0.3683.10.tar.xz 710000528 BLAKE2B f9b3d9387f47a2a07d9b4876d032a9c7f6be5c381028cefe7c2d70d59df0ad732049bdc05a1b1242b3699b3fcb9696368e835607da9c980c96cb11c10605c0ca SHA512 b034b04c8ed402a590a5140a642864698fcd8a42b9da401cd72e44e755d6e949d388bc9b609dee6d3f61f4cc0a896e1fef60f9c7cde2998b1e2b546be48f053e +DIST chromium-74.0.3702.0.tar.xz 709828348 BLAKE2B e59a1d591299f38f92c94a13088ab2eb79814b0458e6391d6979d1d5c370c88453799d8a90bff2dc9fd94d1ba3f7330fe713d4eca45f09a953d1ac201b7f2f6e SHA512 fc063bc89a48b0301c4f4e6c7eec6199ded9980b20712c22f320e01947d40b3b7776149b21caa16df5dfa37aa160ad12377347c2573fb693c93f891fb70009fd +DIST chromium-75.0.3745.4.tar.xz 749282112 BLAKE2B a6f231c1fcbb2063356222d8698ec97a369a949a01015de9e40fc3423da7800580bd4d52ddd5622bbad8f764c90cf530c48db5b29cca02ec33937945e5477e1f SHA512 2f1cc85bc8f7d07ae5e6e4a96e7087a666e7dd8342ddec9dd2e4cf70d5f989a951a5e0a6fcedd0f18060e57325b5f15afb2b19887f3b04eccfd6523026d76db2 +DIST chromium-76.0.3783.0.tar.xz 705120060 BLAKE2B 56923249fb5497e3f12f44d0c24da96a05c84e0b3fa2a19e6caad5238fcc7ad842d666d0dbca4a0deaeb8a0aef3095decf52926bd1362367c988c35d716e72e6 SHA512 09c2d450dc2639365b1f6d78c8b534c098715e0b327235b9cb934136db579a0cb1da8e7b4e01790d248c8898e46376ba6fd850759b24ccd9af03a26b1c2c8366 +DIST chromium-76.0.3800.0.tar.xz 690561748 BLAKE2B b476db5b707a00f0cbdd9a0c8348c7bf8cba72bcf5c634152ec4e50fe0e665feb3629e9928924d8ffe2f5936a6febcf26dcd6e397950c26a677d69530d4adf13 SHA512 b63e484082c6496b54d9a8ee0dcba64f0463836d84cc9a462c4330010cc7604b25cd65aaa157635a2943ca870b502b88fa3fb051c1cd47268a3bc5db98150762 +DIST chromium-77.0.3824.6.tar.xz 730704840 BLAKE2B ec4a5552633170c20427daf22a36638528db42e49935048d156e8b1054b611b1e28dae0f5758cb65358dc9ed1e1b5cfb2ed86606e578b25436821838a202bfb5 SHA512 9d5b37c69c018ae59a53da70bfc0a97ddfad45ac8c0abd817c0011df7d4e550d88573c86405843d2f81b0dab5932c88bc6b71cf532a46696c7850c0e316509f6 +DIST chromium-78.0.3876.0.tar.xz 734181968 BLAKE2B 8f9d368718dec697f8e1d5fb850739395247c65fd1cfe9a420c46ea2254a97c54893a0fec9a3366b3b0a62720ea20d5f090f7edde3503cca1d2fd725aae6bbd1 SHA512 9b0b71a4084db3e5ceedea5eaa1173e168e73ace3215ca2cc37309b6cd7150ed6dc63d2ec43387d305a4340036988493f1644db354c620bc80a02b97ec3e0315 +DIST chromium-78.0.3880.4.tar.xz 734959036 BLAKE2B e93497cdc00c123f31b98be87c2b4c7e4e7ac18fdddf15e9c4ba6c08c89386c38f9451e432a8365cc6e1a47af244ba8d10da94acca3f108c0993f993b47a18b6 SHA512 4adf66caca7565c17571b2c9056acac3b1edbcf29ad9f8937cde241406242f4e30ac361047dddf2a60f4319245698d6872a24eae0374a142d13e3fea0c5b12ea +DIST chromium-78.0.3902.4.tar.xz 741347064 BLAKE2B 496082e9b11efc77a544d513051c39d257c5dbe9b220eb888a5aeae323f0483a4bad95845682284fb4e3fcb14e92165672b79da2aa26ae754aec51131280e7c5 SHA512 ace315c9ad6b72f1481bd18d26504c7b23606dbe6df70719b710f8f9f06307e8d0a8c3c15a011d8b8b3f85dff9ea11feaae9f2cc1629982c5f2ade8062505cb3 +DIST chromium-79.0.3921.0.tar.xz 756661964 BLAKE2B cd1255ce87cff5f55c8a5e447bf0e316a8489f013e902c209d5296c34ef6d9a21547eaeceaf06388f56056c5e04ebf4e67d015c79dc3d5753d8c1c7478bb7e3f SHA512 b8b50d2c1708d5c29ed0d4c92ee4bba3807932811479edbf91625e367e4815d8f0fef9c6471c4823a37acc63138e648ac262c3282f1456241ca10007bb48ec2c +DIST chromium-80.0.3955.4.tar.xz 797260532 BLAKE2B 3744b5cdf6bf2230461987eb97c88faf3b72558e9561e5a7aaa7d4648accd173bf377925dc747dd32fdd929bcd6a266252a435fb89148161ee919ca3b2cd9714 SHA512 f676ab4b9ec1373f6427b5f868b4604a7a8788a2cf7b06d2c6c4dcbd87c41332085a343062f291bdb79dce5df86a4435ec99021907fd6596078fa3d0d1d4d39f +DIST chromium-80.0.3970.5.tar.xz 789810132 BLAKE2B 400fcefeb58cb784412eca7011267c9224786036494337ecb8dbc7f3f483ec05d6e26c424ef55286cbebdbc872e1c15acfb62413264bb8843334a11bbe73ab4d SHA512 398666d81beaeef3eeb3f00a9a512b2d4c4e74bd9f01f20fab06901eadcb6fdbd345c39c54f2af57c4e485f2cd35700cde6f6a3d6301df7ee920bf067bee31d6 +DIST chromium-81.0.4000.3.tar.xz 807382668 BLAKE2B e36ea286c3d47509d79390069abd332cc2aa9aa7bc4a571047aed2bfe6b6e9b1185056fac0ede0c3440dfc2e141e06bbbe31a428467fcbe830f1da98be49dbe1 SHA512 7c46d915b8e15072f3c57339b99b54b7f2cef21a0d350279d67ebf17ff5ac27cd46a6fcbc7499701d8b3ae522f6e52466129ce26c30270641b8376b467e127f8 +DIST chromium-82.0.4056.3.tar.xz 796919020 BLAKE2B 89d010fef567b3b3f76614f8097697f71b5b1222faaa9738c639001748d8fc103eef0c6b0c90154be36e2deeb5b7c2b1b5a61c9fe7c11836d8723819466c265e SHA512 83a160ffad9f9b10fb498b61e0f6427ee88fe73928d5956b60e7bd0690bb279c1fa749105c4996da67d1ade80d62e9ccad0b9a8bfb3691a17574ad22399ae55d +DIST chromium-83.0.4093.3.tar.xz 793608324 BLAKE2B 014eff6deacfb308eecc76a2d9a13ddf13b2eefffe044df25e2c20c3695f2c908604751ed7e794e053280fc32449381e8dfd73300201e67a9d84854f9fd851e5 SHA512 d37ae4912d3a39e4b06c91601d941ffb8a77a4b7380a603455c2839f6b8940acb8803aa32e8ae14c5033c141681ee41716a54ac2f8632240e54367a3819e091a +DIST chromium-83.0.4100.3.tar.xz 801342020 BLAKE2B 504c4d905f7ed91050f54e19e215fc2827c7299dff75e57282895f6f550ad323070ab49a2c597abfe0e88308d31fe613e8bd5bbcbfbc1b63bbc968148f939332 SHA512 d9037a7db5adad46d562f22e5ee53016170f257678d25acb124c432dc4ed4c0eb936ff9c4e0e39653a33621208e5037924ff94a9c98730da6ef68cb29a5a0f52 +DIST chromium-83.0.4103.7.tar.xz 802381832 BLAKE2B 5e1d204dd799a11726e9e8247598e28268e0689462cdd0b35867c63b1f578fcd356fbaa0f9181e26ed67f798100464f0cd218d83874df6d3b9c55f29aa4e176f SHA512 42bc38921ece136cfc24a5b9c15739f336524a5a178e57b11ffebd897b1092354e35da144f9b11d91569f07ed480c3e565e4d6086ca3be84d139633e000a71d6 +DIST chromium-84.0.4115.5.tar.xz 813755400 BLAKE2B 44d87e3f9bf26b30caaa64c3781c066978dd7092dea514306133698d9b3e7b76b2cc95daf6a9c67a0de1a6a23b405d671b0d751c02d349a81ef3ad2f23144ec2 SHA512 a4bfb212b6f45246fc24c74f223cfbc063a3316377ec32821a62be90a55bedff8f2ea989d23dfae56d29713e29203948ae1a9eb6d78adb8bc296132a4422e91e +DIST chromium-84.0.4122.7.tar.xz 814208068 BLAKE2B 7457cfac173b8d111d6f31286ba93a565d5474fb2d5f6876e22c475d5ec02a093b9fc442709f9d0dca3fffdd41457fc81091796485bdd0e0d9fb506d24fe6696 SHA512 777212d49c2c53c5d630ce3a8a56508a683d95e4f6fef14b0941316deff3bc754426a8f43b551ffc71f9639d713eebd6e358bc6224a4e55a1f68acb5d9dc042a +DIST chromium-84.0.4136.5.tar.xz 840308252 BLAKE2B 3f10ea5dbb48dd2a39cfb8d39289ad439d0257bea6e40ff130d427f96252890a6164a8dae3b5d30b7e74bcb87815055a6f27826add3ef5e9849e72c6a7dcc3b1 SHA512 9b6285ec2bb9790b8e1593473f8e1f2642a6fa851fb5645c282c48911dffabc2107aa99c90b6d6450eb8c0dc38daa089c514801921bc1ac782b25e34d9b8fd84 +DIST chromium-84.0.4147.13.tar.xz 844860980 BLAKE2B 814fc5f94ed3f272b147d0b74bd2c5a5b8ea47886ffe4bdabc103343c79f2737ff62ad448c4a6916261fe0f2cd2854e24ed03d9df349e65634bab6d0fa38c4a2 SHA512 1ba3d59300336ef1ba63f66495c573fc10195b827821d0b558e498195fdda4b12936a7ca0b792673433c994992522c188dac62a13670fd5785f16cd25608da15 +DIST chromium-85.0.4164.2.tar.xz 853630768 BLAKE2B 5e653a98ffb4efcefcdb266ff2c82c873e71e8ca7bfd82d39adba73f1bc9367fa426a5e24ccdf90e09dea015730c089b030b436229c1e88a2622d14e56f880ac SHA512 037bdfe2338bb3589721f66f6229efb748821e0214ea41aac3385b921834380c560c5c8428139ecdc0237b387124d7f4a81e8bf0c60850b73ea35341bdf354db +DIST chromium-85.0.4183.15.tar.xz 863644932 BLAKE2B e244ff567894c5fce623bfe0e799130fcef447fee26469fcdda3c372ddf054e354d6ead7201332f1aa5e91d0826d838de1af5838a38d1e4849511fb4d96f5e08 SHA512 e92b8325b27e485ff2ac0db5c47661c935f874a9d2d0c6df597bb02faa448ff54b81e7528619bc0dd28b523852e03e4ff8bfddfa9ddcee3d27d9cb39eef1af0a +DIST chromium-86.0.4214.2.tar.xz 838340928 BLAKE2B 02e9e25b7872a6f66569c52e3655838e2c02d0f2932efe8fba3e6611f8b7e30b579cefa4a9619e6cc97ae41dd24b7a3f9109b2979ab22d93ff1476a4bf1d6c04 SHA512 04bc070f679814d9324340bc2515609b1447b3ba7be8a2ced037a4dcc189b4f63a2dc9d64f81ef4e48da12f444265ff6a9ad414b36201374bc2075654f6f9017 +DIST chromium-87.0.4259.3.tar.xz 830367636 BLAKE2B 94a2335e4afbaea06745dddc6277afd43c879fd3c6d1611ad3b6b7213eccd081aa925e281460b463dcf45da720f983ff38e567ab376420116147629c4f253f71 SHA512 a9acd2ad9521b32e5e877d19226ab4ee5c0f0e8e291b7bf28929ff5d2e397dbc74fc0e556c231f2e004efd55df22db39b3944c54a5fb0a77afb8ffd73fdcd6f0 +DIST chromium-87.0.4263.3.tar.xz 830924908 BLAKE2B 8388732772ae84671a3cf90a04663a1f71d4ee51310bf494a9bcbb60867648ac30920ab5eca83b236784cb6f3bb44ecde94b5d74f92e22f5bddd456bc01308fe SHA512 071cc9f88ad7229619b101911202f9c0fa094c99238a20ade793a9e013e2bb497033fb1a1c4458218003f1892e4a3018ac103ea0bf28a44ea689cb4b4cb4c17d +DIST chromium-87.0.4278.0.tar.xz 832042784 BLAKE2B 5f02a03ddd076aa543a2c9620295d99f87a337f22afb7ebdee6533a57cfe947aa887522d53e83431b83ee213e56d4415624112d9bf094f39381d9cdf30a590ad SHA512 32ce81904659e07b63ced9ff0bbf9a1a61f6a201701e8154674d7107d0e62173c544fa4724bd1326e47209db44f65a7b29ae5c3832e59863126a7714f2947e0f +DIST chromium-88.0.4298.4.tar.xz 844814060 BLAKE2B bb102ba538215a05d6898fad59f3d6a130b36a24979ccda61512d6ff7ccd66b109f50293780be21e78ee7042f29477eeb7a3013a16ad565786d8bd4fbbb03e07 SHA512 6581da68d8201ea9d9478c58ab7547102f5b08b3575c798d1250e6810bf830d4c18fd3d9df69de0fc08b9e190fe9557fb3a673b85e7276b8eeaa642149a55386 +DIST chromium-88.0.4302.0.tar.xz 844359824 BLAKE2B b473485cc5d57c108be23fe1987d7e2d71e61b4c099131b5bf87f8c79697930423046bce64bfbbc721928aecec3954a164eb297c0bb3301a85b52bba4f0a2381 SHA512 ac14232f2a9a785bcb23d561e8484d510bc736e2926321ea255fc67bfe4efea28837e23acff103df571cbc3fd079c412efbeae073105045c48b08706f0b1d844 +DIST chromium-88.0.4324.11.tar.xz 857506624 BLAKE2B 4ba54ceb848d9d7b9d3b9d5dc2a1dc80ea7da49150beb4ee5509f51db7d85cd72de79803ed25be52d0e6f8ff176a7154d05be5f36d604c4efe0a5b86c2fcd533 SHA512 736d77ba1c100cb6a0e6518920acf839f15213eaaa5f350f304c8ce9afbbeb47195b9927609ac01829e04f11f23cd2f8ab06493c1b14639c5b57f3ef5d01d5ee +DIST chromium-89.0.4343.0.tar.xz 882541680 BLAKE2B fd3232c6906ec0d169f1baa14602b767ca85806cd3decf73568123b88a6c7b31645f3c5f7c07f61841edb6dac7b39d6c5cebbf489d2a4f315a95514db04ebc48 SHA512 4d80a016f5cca6ffe205c1067472b12e4c4cf97dd33d036e65d984568f78f4b06f3ec1a87d35372b6a3ca780f18d87711da4e74a141766784345250d64534d04 +DIST chromium-89.0.4381.6.tar.xz 890366840 BLAKE2B 45c49669140e84c3ab19cd0bf643a87903a1da7dcd001c0f6ba0d9ffc61db004d471bab6e32d84262d6e4e1692abbfc411c4be46a71ba535c0fa6907521c27ad SHA512 ce0b63fb08cb123c9d8e07b22956467ac1f625cdf75a06308af42aa846d3b75070797b9f5675349c7aed562b8a2811932b77fe80e7a21cfea7467ce08a8046fd +DIST chromium-90.0.4430.19.tar.xz 917743624 BLAKE2B 8f6ef8ff88c5cf22808a236b37c730bfe8efff2211d9029771626337652f28dfe6fcfdd494c025c096614eefe173c7f65cc82b33360f166dbb0cc8edf9ac86dc SHA512 ee29547fbd8ded9085e5ada331abd22f2a71ce9b81a0c652b6998811960c8b5514d07fec8e6574d330a9540abe778dae8c6682eadbdc4eafec6fde49a1633869 +DIST chromium-91.0.4442.4.tar.xz 923889152 BLAKE2B f5379849eecd58c9e42dcc05c3446dd50a9c3c3fc7b07e385ff429059ca9e192e5e0182a896618c75ddd85472e1ad9ae3873655c14284f6e5ee83c1295bfe0b7 SHA512 c0c5f05355b6d04fb4b545bbdaebbb38fbeb68b2ac476d0824f92cb516fc27ed68813cff40482dc950e7c3bff640bbd3b9f414ce6664d644fedd926aff7e7f21 +DIST chromium-91.0.4469.4.tar.xz 949712784 BLAKE2B 99453196fb9f2336afffb03affcf7441a1ee5f8c9ce50c76888783b8520f2490299e5fc3448c7f61c270c175e48e55a1f947f8cfdf0053a02513676d9ed8daeb SHA512 413452da449198713e6d10f05b937f95a6c0ffb11b2408dc9ced1048af6f7a406af07f8112fe39f73482723802ff25e51ce0085c598d03dba207a5658385871d +DIST chromium-92.0.4503.0.tar.xz 957887500 BLAKE2B cdaeffa87547635d1f5366895d4f54e2f7b278a5653ccf72510afc40bff01681aa19261877a811f6843de4379346d1cc046e55a6b0e22ff3ece70c9137563ccc SHA512 a4b351a77605565d5ea230b569d2ee9bcd1035aa25f0d951ee7aa78625000c935ac68c98126a9a6b83f3227fbb7492a7e6c199d5bffb4746164a322ffb64036c +DIST chromium-92.0.4512.4.tar.xz 961899172 BLAKE2B 8525a5059c9350e36a232b49847f7bf4f561f9c1542a0761d31a06a2bd08a579e98c1cfe15fcd55af9ccc6aad701add35ba71f3ef7f942a0788d3d41057aaf99 SHA512 ac5a2c4b28c1518e848677dadc7ec53214484f9e53e057b4d8c8148d53b7cda97c0fd5397c2cf2cc5569c900b49139ba8cdd2795b706d79d53bccdfb55dc827c +DIST chromium-93.0.4535.3.tar.xz 966263580 BLAKE2B 88166ea8f11f41aa088859ecd193873d695ca04731d36d795a8d31f1b49884235203bebf93c80531003b5c6d6fcc73bb14715d3c8284240cb4400c8c05a09eb0 SHA512 b09eff9129ea9e1cdfa72747d30f624b223c07622536b085096652e48d7c1e72aea2de08bb77533ef4101a707474c8bf3cd861b43fa589a70b536f46b4b3af73 +DIST chromium-93.0.4573.0.tar.xz 1040160544 BLAKE2B 6beb23070129c6ec3365fc78306605b77fbcdbc11f0a09a5f86d6f2e30745cda512e983eef34ecf059778970b6ac29a03cd67c04a9bd0742aa9f3b011b17a823 SHA512 7443ade555fb03f7a48e949df2a9d8b14ab8e8075b68ec5e7773dfdcbf9f326e99667e99db404a3bbf52230a29c022b3e8cc5841703e3c9cdaceea77277a9dbe +DIST chromium-93.0.4577.8.tar.xz 1041484708 BLAKE2B 7978b7771c9e964efc28e691fc16e7b0679372ef86d7477327f40e8f7682638606e88711cce438f12616011e1e3bc4ad2d0b9be741a409cc8001a78f0632c0a7 SHA512 8940dee8186244bca134b83a452a7d2668d2a382ef32034cf4b7e8c781d709c679418e4fc97f744f14d10f8bdf0d9104eaadbd32efd0dce43d600b4cf5b933e4 +DIST chromium-94.0.4606.12.tar.xz 1042728660 BLAKE2B 250509ba893b58ded24f65ca77eba42c929cfaa94076469ca7ef20576c0b9204b5fc1e7c780286f795c5c0031b6e383f960d20bab4ea1acf9facd87386b71750 SHA512 82bf09c7bfbb1d9652439a65911ec18b8ea48e7f74a41227b328be95baf0b11ea0a96a7ef612d419f00b38b3ef6b2bef7936b8e53bbfdaaa2570b9e8f6a41252 +DIST chromium-95.0.4628.3.tar.xz 1214022616 BLAKE2B 308f1f8411a8963352da4c1464152e750ee7e33d5830a7bcd76d5f9887622dafb17ee0968c27f17270d994a6946508a24cbefab27aeb1f00085236085db5b86c SHA512 32133bd50b98cd33bef6e6d6a5b3d44db8e38ce89a6961f308a656e4c27fe6056645318d1dfb6a8ed23562de76035e4d0b1a908ce0320d159bef3d27a0f19ad8 +DIST chromium-96.0.4662.6.tar.xz 1220630676 BLAKE2B 821a42f67ef45fb1305489aa1720bc1f87da95fd3d6b92a28224d25a9c047ed6f5d33656126b92c53875600de8fe821d5cb2b20282be49cd8adb5f51d2ee2063 SHA512 781d9b7b4b096e6d8ca6bdbcd25611f2f37ac6a07e787a052bc98cdd90df32f2fc208be171b06c08786dd71595657856926c5cd7401d92d7cd71776f7bf286db +DIST setuptools-44.1.0.zip 858569 BLAKE2B f59f154e121502a731e51294ccd293d60ffccadacf51e23b53bf7ceba38858948b86783238061136c827ac3373ea7ea8e6253d4bb53f3f1dd69284568ec65a68 SHA512 4dfb0f42d334b835758e865a26ecd1e725711fa2b9c38ddc273b8b3849fba04527bc97436d11ba1e98f1a42922aa0f0b9032e32998273c705fac6e10735eacbf +EBUILD chromium-73.0.3683.10.ebuild 22130 BLAKE2B 0807f35a843542fc85c2becb60c4962e6c6331596194f23bf6e3580623d56b40875dc0885848041568aae50ef5c4280b8410c86f2bd4e4470583cc3e59ead9bc SHA512 40936fc2a0dfb00e728ee2d75c87be59bb5edcd5e019a05e9b22010e1e0cd6c2d6198809de5e996e11b71ed41aa1a4f6cf2edecfb114eb8c19d0e913f405dccf +EBUILD chromium-74.0.3702.0.ebuild 22298 BLAKE2B c9bfe7c15521cc0bf9a3dfc396fb328b85d504d11f6bb8aa5e793ba29b40488e1c60cde4572b1ab5110faf01614aec3aba55730b8af40c73763ee5db528f69ac SHA512 4247220d728f2d5627d0e5e3888c032d152796b6ce837927aca93122bf6f7aea1b1785f0412ce6bd7444ecba53980f6cdb2af4039b9e8660d1eecb97f41e9cd6 +EBUILD chromium-75.0.3745.4.ebuild 22034 BLAKE2B 0273d868c6d0855f173b3cedd5cdffe7b063a2f32d921a83617ba3efc8e7ef713935bd039a11a91e4690384f6b252621af4bb445469454e90d8e080a1462f6c9 SHA512 25ac24f33163c2b1fd7abef0ae296c0df1304f9fda7481e05d61f3cca93540b8b2a658f3bd0d8747b9f3fad30d609b8d5bb0c69029c6c37010661682497f25d4 +EBUILD chromium-76.0.3783.0.ebuild 21984 BLAKE2B 3f6b495e311b68d9b9c96da7c20f509a37d21921c0eb129e9f78b2ea72fe8490ebb91d5d2631acf09222f4feac6c0cbf19ab4ec6770386c3d8555a00314616d6 SHA512 3f72dafce4b023cf71b418563367cf52b8e204893897849124fcaa3e2e527d7a91f3bdc1072cc598e465db696d533f635059e4254f2888eaa84f5bf63b134432 +EBUILD chromium-76.0.3800.0.ebuild 21801 BLAKE2B e4aa8c1172743ad3f97bb38f8a822de939f020d72c730a0f8b0f6837cd191b1c06f8a53f4ddd69d44e7fcecd4461f99bb4c6058dbed988e2285ff0ad6651a235 SHA512 b375c7742df812c61299eef7ebd721b9ac38034c50a3f5df539b8a2d632cf7c2beca04c074d69855f1cb64edde6e54a2081f6739072a45f3c51328b3e47a996c +EBUILD chromium-77.0.3824.6.ebuild 22124 BLAKE2B 15d2ffd29d5dcbf3237fde439c2f93415318e74863520588ff93139827dc58cbcfcd39959cca3d895d420b6a80226f7891b62d7a75e48f5822ae64fc68abe561 SHA512 c15760790c34ed94994af81d75825ef5fa448873aa01e942ce4e6ccdbc004e4fab8344ae5c38388fedca01c1f69d50ba37e0b93a7238f6530a4446b01de128a4 +EBUILD chromium-78.0.3876.0.ebuild 22123 BLAKE2B b024185330e2f69b850763ee04329f7d1b0c15763cab83237dcf6fdbf7a04e23017847a4e65d623503561d6be84fca2ce14467de95875d829e25fcc86ef61a5b SHA512 7dbe93ef5d2d23a07e668f0fd6afa75413ce7e51dfec8515f3adc9170c4330e0381282fe9405571d49f3a12227f3a746831f9cf4e22f0bf1690f1bd6f6635677 +EBUILD chromium-78.0.3880.4.ebuild 22050 BLAKE2B a7f6ebbe320ec41947b75d0cdedb1ac5979b417a06a143ce4271b403cb19f5959fcb9999bccd12a5f38303300d88d50132040723e6d465873e156cc5f1d85e8d SHA512 fe35ff6461a856e51e855bf273fe85071db60ca85eb9bd0043428da39f558eb641ba233f0171569e5338f71ce786c7c8c046217696f9fb14bb5f92a9185a9400 +EBUILD chromium-78.0.3902.4.ebuild 22292 BLAKE2B 5f19d0bb604412d6d940041da35bea69d426cb1c5739e88edb5518057e7ab11a051b98c708ddb854f38f1eaac473ad701384e1441f7527ae8517872a1480991f SHA512 073bd9de16074dc6def2a39c84f498cadc1adab5792c48d49d662a0bfff5aa455381f5fe3296ec78a302fb952d204fa33f4bf06d58b0d329f18720b0ff6ebfea +EBUILD chromium-79.0.3921.0.ebuild 22468 BLAKE2B a4f35ad2d8d7109f7184f8f3ea1f563cc149be19ba9cd9e078ce07a0d829e507297862174a920fb50373bb95b3b839c4a4f91f27868dc93da29f4715d96a7132 SHA512 73dd30c1e1e847659185527e66e6374e633477dff4b5530c70ab914e70d61853fea8125f4810a3446266ca8ebb02d3802e961fff03dae2de6a2eed1ff36b363e +EBUILD chromium-80.0.3955.4.ebuild 22207 BLAKE2B fc62d87651bae5db9530ffb58b488bb7494a3a6c1d64265419313b091fbde011b1736766a63934d62dfd2a0d2a2051622dc4690b6755301b16e606830b1a27ce SHA512 12c7ddffc1246f109027797e7bfdd335e61aa14fe5cb3fb93a2ad83f4d1a15d10b36553bcfec53590070974eff5b4d477fd3590993d796b141be5c61f3fed2f5 +EBUILD chromium-80.0.3970.5.ebuild 22262 BLAKE2B af8e145ba30bb288e40c318630bf9a8b5b9a7fb16060ca6d8125b3887d471221ed37ac090d8d4e4a81d88b365de3747649ac62d6a8069662526264b2180e1ee9 SHA512 e6f3812a100d9852f59b872184a6d1757b46c07504e1d6b90951a77eb085e5af717875645c59a0b615444ea2a5e10ce2b34215ca2c0b04541e5ce64899a7f3eb +EBUILD chromium-81.0.4000.3.ebuild 22299 BLAKE2B 1bf404d66b6a7b1f45a3670dc5c9961fd6774a0333ca4567f57353a4df0ad56757a50198b2880449304d9bc135e8ce24b671fbfffda8123ea53eee5df5cd6c4f SHA512 a62b20802e3f5d418e0a4e30b4aa9c86dfc0842bc0c35ffbbcb02f1f4bccfc6a5f61580bda8cbbb3054a1a5a65a2fc71a1a34a6979cf268fa5f17bcaddb3d088 +EBUILD chromium-82.0.4056.3.ebuild 22487 BLAKE2B 3f5ffd9c59a2626adcabecc5f21c5a14901f2dc50ac9cbddacd8288c2826b0b0e619c6a312fcabb6722e9e23a027ea5151e452fbb7e662f4df19068dabc18a59 SHA512 786ffdb51f56267cfb17693aca5b1e0a4a688b2c2b784a79fd9edc1ce500f06f7d2c437a6e565295ec37b9ef0e5f97dffd89cbf92d675e5811d25633d0139105 +EBUILD chromium-83.0.4093.3.ebuild 22935 BLAKE2B 614eae81f047e4c4625b890b51cd316889b24eded08ee339799ea0a58eb1fd7c360faefe139959966f77d7569106039b6b4f338f4e80b7f1268d1a66ca39cf07 SHA512 49b171731c3a73caec5da28df93be07e08c24c5311ab28ed01c725fb980087313c8cb38594a5459fac7b5a6293461587bcd8d45ed5b81852bd6361b9998d4e5e +EBUILD chromium-83.0.4100.3.ebuild 22893 BLAKE2B b421dd4c2ba779397c51888df69c18dac6bcf3bf23c2e0abcd976c8cc03ea9b73b3103484225d196ab09dbccdcfae1f30928da488c9581cc8c485d3d2db1a325 SHA512 460904bb0f9d5863a0c27604c1d430b08cfb34b9cbe432fbaa4dd00997580a2f8bc202474f740e1ef09b74bfe786e6da493516a5243c9a71b637a5b320b0b493 +EBUILD chromium-83.0.4103.7.ebuild 23051 BLAKE2B 373f9785fb5ad69c65d16c90374aa33f238ea7b263dd0dbdbdd7dc3c24e99e9a0bbfaf05f439bccaa8ca8992d59e3bf7b54c14223fe99679d75c6abffdf9dfa4 SHA512 d62c6b855cce0852440cf103aee4a5fc13231c5feb43f469dd6db09cde546dd6efb89a4287ef44c5c009a4aeb79545a273592f55ac9ad2564d4912efea7de5cb +EBUILD chromium-84.0.4115.5.ebuild 23264 BLAKE2B e4c84e5aab25b19c343f2d7ff10fd2589301bd68d74aec7f1484f90945310a4d0d685f0fa1415036fbea4feb8fc9e9fde5d5dd593abb93bb2de01db57f538278 SHA512 5b1e1594ad10669f2025260f4c72cbfeb85c55db539ffd73eac8d1b2d9baa5ff8dfa5d98591c0b3da1faae89004cae1697ddf260de20255998187bdc12912d5b +EBUILD chromium-84.0.4122.7.ebuild 23360 BLAKE2B e7f5daa8f0e37997409ffc175ee82a4cb5a67de4c7dc5faee93bece2a7ba11839dfca7801bdd7dba2a1f493d7383256fdd5bd5653f836b9846b9bdc8f22f784a SHA512 8c92888e8696ba5c6c29e205e75acab7d74f0f4c1de103ea44cdea031b19424bb602c7b64cc8b1551bc61c7ade2989a1a43657779b2b801b8aa3e265dbca6d93 +EBUILD chromium-84.0.4136.5.ebuild 23118 BLAKE2B 7cb71fe164cf0add19fcadb5e914da3d395935c2d56f7c415354d577e891ed44213dadc5ff2789e3842aa68815599af178a0fb2b995f6756a49d7e3762fe7d5d SHA512 a27128554b35baf944fb414ccfe7fb87cb7357e9612d7d8f599699c6d2747be2e46d87055c37685df200b42382fc8e84c1a4ad1bf4bbdbf63ae15b60bd3de0b5 +EBUILD chromium-84.0.4147.13.ebuild 23316 BLAKE2B 587622889fae14b46cf15bcaff59f727fd671723f413252af3f99e53685dfd7ee54b46c29df527abf3f399eb55a890331ffbb94bb2e73e2ecd0d1925e86a3473 SHA512 9bcf521b4e5e523d582af9f44dd987b26486de7ed3292940eeecc20478d7150a833460917f36e8906f500485a0b072e793f9d6c81449d5535814847836a8ec7f +EBUILD chromium-85.0.4164.2.ebuild 23366 BLAKE2B 4125df0f13df39f2652a3b3634f39a71ec61f0a14aa88fad5e51afc4335da4a97d104cdf14d233b16b67fc0238951500a664d1c22a6cb9501229728cc76bdeed SHA512 c2bce086e716ccaa08bd95de177aea99697911ccd38c4444e13b7394f853ccc013ceb0d8436b50c1d1743633f91feea618bc5a5434a44003ac543a2e9b2b2c03 +EBUILD chromium-85.0.4183.15.ebuild 23270 BLAKE2B 0976ef509d69aa9097ca41b9f9c430113341dcfbb19ebf5195c30355a2ebdf3fa2bfd1c03addd3b2e3df571f4ab218d90d0b984ce973baf883541a2456545af1 SHA512 1b27c2065a9a3829821dd7c17f21f30432325ec4dadaf24182a7a26ce09573aaec7eee7938bf400e666263327cb0fe163b853e43adaa382a6144ad9e0bb120dd +EBUILD chromium-86.0.4214.2.ebuild 23526 BLAKE2B 74151cae8859ecc3be53f0bc4ad1b8e7e7694778562e60e9b2055b55b6e190c7f8bfba8683f9ce01df78517795c445415ac80ed6b477ba4898dd7c3472fd7707 SHA512 91f84275a66e39c4cc89b10969fca7c3a97846ed4e5587321ec611aefc7e64ff438b3d22abea92a31c6518045029b4b27730859a3e3e217594e3110d6046f228 +EBUILD chromium-87.0.4259.3.ebuild 23496 BLAKE2B a6cf6142063e0cb863def3601fe942859fad3629a20ace47729df8dd02f2ac72a0c3256033137090de3067f42527974cac39f07065c4d9584050b691958c7be7 SHA512 989df45d435cd3c9b30707ae0b8cd6a6b425c2aabd146a3fda96aaaff04ffa4f70cf6ac8e55d562d031c7e1adbe3d0414909e5f2051f30d2aad87ac3e8ac2cf8 +EBUILD chromium-87.0.4263.3-r1.ebuild 28466 BLAKE2B 43842df2b1372526270b29f48dfc48ab817d3a7990158c6b65cb01adb556a4a8f0165978b0a6d5350a345a75f1afc93f9213000942854e1fcba4f42a6305c2e5 SHA512 e4b95df7f05cab3c9048a16829b47225ef901151266bac841a6e33a867860954d8ce8cb1ea3940a4cc0bb0e11a32b001621fd93c7c78d898990e12f4c0cc5a9d +EBUILD chromium-87.0.4263.3.ebuild 23607 BLAKE2B 9352f81766ea56ea0faf6effc2a2a65c3d9dda170fdaab3332a8cdeee2cdedc27d2ee2d5810855e979cbd9a1a4f6889b466d9bafbe8bb969ba14410f04e4201d SHA512 ced8116c72b122b44786a181c682f0c18f209692e2ec397f0de7252cc4719722eac848b84bf1905adff53c62462d54432972d1326653be9b5133ccbf5e0bb82e +EBUILD chromium-87.0.4278.0.ebuild 28273 BLAKE2B f6ef1d7fbdedae31313bb4073cc2e81b3842366d6a72ea2d043ac9eeb2d591c81e3ee5127b5c09ded944269b66a7375bff2641b4683b73b2199abbba5de0e733 SHA512 a86d7a2660d16cc43a35acb2a7030fb5adfd4d6fde85ca53db8a3728660be5f5492aae8b81176b4f2e0e4483ec323bf461e15017e1a49ac04a0c13fa27c2a0fc +EBUILD chromium-88.0.4298.4.ebuild 28760 BLAKE2B 077725e13850ef6545c5953c003d1a83cd8e44df3e34c109d53472a006929610042b372d3c1aff89415b3c58297e564d24891ef0b052d40fb8af5381b6379c1a SHA512 1fdf69832f8af451f0c029fd26ec9a3c95fb22821580e990ef2df78d5148fb013b182ce990e0d07ff798789785a1ab5bf834aaa57ca7cd9e8ba55227797498b7 +EBUILD chromium-88.0.4302.0.ebuild 28557 BLAKE2B 66fe7003b64b98d07e73399e2e03b1357b43e80d781fb0ca2eb62d401f6768add06179c214d2a47cbd054653b1ea49dac60ea2e50aeb3cafe76994404bed8e4e SHA512 98d17ef673da75ac20e167ab212b786dd1741ef2989c328e42c00f72895173a1a3a0c1b69ebc79edc79b8aabf518afff9561e677d3789ff651f3a287a0a8635b +EBUILD chromium-88.0.4324.11.ebuild 28741 BLAKE2B 0c3d1b22055c543a9900ca72f46d80b93aed76ade76e637048faa626cb0649b22b65cb9f3b6b5b1d3bf0b79d52f73f4a8480610161ca8a86f15c1c20fe93e878 SHA512 03ff990905d85c18263a38dda5d0fe65e5d1d5a39edd10538f9fad2e5afecafe90fcaee3b6b2613bcdf8c089bc827008100e60371005f68e9ff2918d33d107a5 +EBUILD chromium-89.0.4343.0.ebuild 28969 BLAKE2B 34673c2561fee8e610462a82e7164eb9887b84b84e20b22bdd6583719b96a72390dd292a3d99d5783c19a598ec69f3f8c202a8d585d5414e8882207202155c8e SHA512 7d08e01d5fef5162013c31fd12dcc022e80dd00b1dcd6ac7a12b0c2757199aa6863510eee4acb4559046612505a645c165a68f47cb96e044b1047fcaed7668b8 +EBUILD chromium-89.0.4381.6.ebuild 28170 BLAKE2B 87f3130b28537547f48581f9c59409ba937fa9705de2de6104c1832b5221938836c0104581f84371d5c8317e532c7544f801121f874973a1abacb4671dfbde36 SHA512 0030eed370a8d2d39ac0b25dc51fb23100b0c49bf0ab426fc09b93d95b8cd111e399bec838faf23033e0e64b6ed73e6bf7274bf0b4374f37f9926573e439f17d +EBUILD chromium-90.0.4430.19.ebuild 28683 BLAKE2B c9e8271b0d696898de0a8e063e0bd0f4ecf2c5ed8097449c0cfbe29b57ca8922d46495a0141c23e7108285d316eeca6ced26571d6a295b38d099385c4120d2d1 SHA512 492716b7914305465a0c384cb152b3f68621b91613ac3737bb9a5459a09569e0e84b995f226a2f26a914e2c2cf3a3328a3898a72b44870eb389cf51615765e38 +EBUILD chromium-91.0.4442.4.ebuild 28622 BLAKE2B d7d7c593768a581ebe7cf13e4d74c7aac69e5308ed7a2e5020b7ee9edc6d197bd31ba631f902bd9366bab3fea6e9be7e3b1b633ff514e49523362126abcbb0e0 SHA512 034eb2bbbbb6a825f8a823a2e58e5c53c2814b39cf437afbfbbd37f67e80bf9520c9b98fea148629c53393a50ade522cf2c51dc59739bf7dfbc8d11844092b59 +EBUILD chromium-91.0.4469.4.ebuild 28949 BLAKE2B ac9d053ab3c84863378af815f5aef8545a770c648e4dc92e2d7152f4084112c75909035352e516c2fbc34d3bdd94175516002c00e3553c1a1e83efe7cf5ef88e SHA512 c9139a9b69281ff6eef76e2b34d91775056fe388b8ceb4550cecdba6a702b5b05d77aa1199a28f02c8c71b8aa723f09fc7d48a5701dce3807e5c3dd96d3e9381 +EBUILD chromium-92.0.4503.0.ebuild 29036 BLAKE2B 53bb3a6ff34623bd1a8007c8177510881a1245d3313278f9a489eb763f9d5c34404d5f5c19d4a9608d8f44163e5a26bd477da592dd84b249a2539a6fdf53a92e SHA512 d07ab291ee82644724d23f5e54479b891556d35378e4300936be1cbbc66eeb087bb1a700c29b7f625c5ce7bdd0e05167ec1a4e86ae465eac056fd480f1572669 +EBUILD chromium-92.0.4512.4.ebuild 29689 BLAKE2B 8f2447d843ff77cd43453508adae1200f59c7f61cf9908a638fd087065ab5886e0d9d445f64dbe969e596c10ad952af7d3ca7c1a1407c67958b5e55add134719 SHA512 571f89ab2edb9764980a676923126728a3e18511e953ae005f4e54e4d47e166bbe83e81f3c598a60b70842683b1bd00e80509bd8ab8e6f311d1a05a74e65a53d +EBUILD chromium-93.0.4535.3.ebuild 29826 BLAKE2B 8efa9083501daad41022daf14e09af3e8396e8524171c1f17af224354db97a998cd713f730eef8ed7eaa4df9015d7f3b6e07b1b33e7959b436e644c366637879 SHA512 dd89cf16e5d4e459915fb3c1c17260bfd181a32bfe64285fa5b4b4d6a63643157917e6fcd6212274ab9749b5f83dcd35e7da1b7b54225c9d1e0592795054f8da +EBUILD chromium-93.0.4573.0.ebuild 30649 BLAKE2B 3fdee48eb37042797d91121c561c5a0b973819282c76eb98cdb12c40926b9da310c09bff1915d693603e5b0a41d0f9a893c25dc01d3c48a6ab62c47a73427967 SHA512 d10e2fb95a4d89318ae42ad8005bc2eaa70297ce6246a213cacc254891227b043eb4bc9ba42e8aec24bd4f44b4ce0a99b4ff756fbd0a6b0765979eaccb26aa2b +EBUILD chromium-93.0.4577.8.ebuild 29954 BLAKE2B 580f3cce56840c579fae76efa949fc25c2ea069c4440f1c3082a292bf4f9f411db8d742556be472a5dbeea8fd0b95facdeac65636cb81dc8b4d40bf4b3409353 SHA512 70b0a7dcf048ef59ef356aa44fd935f9ccb8c9372a2cbedf42d3c0452d03b67580ce2d8443b59cf640a917a039b1d480f043947456a9027df1a3f1aaa7be74ff +EBUILD chromium-94.0.4606.12.ebuild 29619 BLAKE2B 93ad5a1483f9bf5c55bf61d8e077484bb5f9c34dfde0b84ed214b8a89caf10d5ac7f2f9f15b65ba93fbf904b23e83698e28b44bb57adee0dedf0b6059024bf49 SHA512 7d3acb48194712224fbd82c91b868cd17c8640e5a794074df372e01956c94d140f29079cde4c2588894215eec9efc480f323bb8bea7528af49f960a2bb8bf3ab +EBUILD chromium-95.0.4628.3.ebuild 29527 BLAKE2B f9f57ba359e792100fb134e7f7e17664f5500e6c6eb60d8ff809687a4258567f375b05a3653f6b4ca2d05870eea93a360c0a9e00c8d16dd2b6905f918fd4b3ed SHA512 928760d02022f58b10ed91adb4d37e6ce00728921d98ff466a7d9defa0fae546d0cb436c92ca8ce4c29bc94253eec50dba4846633887c2ca9a46386a8145a38b +EBUILD chromium-96.0.4662.6.ebuild 30540 BLAKE2B 1cefd0ecbb97f493f41b1cc9d918937e6039b6c299c7b5f0aa9ddfe5f4ae643580c51cabac1071f09dcfc44271f7b2e2984bea05f2ec1f2d675820bfaef03ec3 SHA512 079fbd986714ae4d1228a835e06a456715e5398bbf8d05ad1e050d06e7df802c65fba71f0adcd264f49816ccd5d333ab21d9d9dd12863fb43afd6480a14737ce diff --git a/www-client/chromium/chromium-73.0.3683.10.ebuild b/www-client/chromium/chromium-73.0.3683.10.ebuild new file mode 100644 index 0000000..7dc459d --- /dev/null +++ b/www-client/chromium/chromium-73.0.3683.10.ebuild @@ -0,0 +1,727 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.0.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + dev-vcs/git +" + +: ${CHROMIUM_FORCE_CLANG=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-r8.patch" + "${FILESDIR}/chromium-widevine-r3.patch" + "${FILESDIR}/chromium-webrtc-r0.patch" + "${FILESDIR}/chromium-memcpy-r0.patch" + "${FILESDIR}/chromium-math.h-r0.patch" + "${FILESDIR}/chromium-stdint.patch" + "${FILESDIR}/chromium-noexcept.patch" + "${FILESDIR}/chromium-noexcept-2.patch" + "${FILESDIR}/chromium-sqrt.patch" + "${FILESDIR}/chromium-gcc-initlist.patch" + "${FILESDIR}/chromium-blink-template.patch" + "${FILESDIR}/chromium-link.patch" +# "${FILESDIR}/chromium-vk.patch" +# "${FILESDIR}/chromium-harfbuzz-r0.patch" +) + +pre_build_checks() { + #if [[ ${MERGE_TYPE} != binary ]]; then + # local -x CPP="$(tc-getCXX) -E" + # if tc-is-clang && ! version_is_at_least "3.9.1" "$(clang-fullversion)"; then + # # bugs: #601654 + # die "At least clang 3.9.1 is required" + # fi + # if tc-is-gcc && ! version_is_at_least 5.0 "$(gcc-version)"; then + # # bugs: #535730, #525374, #518668, #600288, #627356 + # die "At least gcc 5.0 is required" + # fi + #fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party +# net/third_party/http2 + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic +# net/third_party/spdy + net/third_party/uri_template +# third_party/WebKit + third_party/abseil-cpp +# third_party/analytics + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/devscripts + third_party/dom_distiller_js + third_party/fips181 + third_party/flatbuffers + third_party/flot + third_party/freetype +# third_party/glslang-angle + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/openmax_dl + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/skia/include/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools +# third_party/spirv-tools-angle + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/unrar + third_party/usrsctp + third_party/vulkan +# third_party/vulkan-validation-layers + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + append-cxxflags $(test-flags-CXX -std=gnu++17) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + +if false; then + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done +fi + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-74.0.3702.0.ebuild b/www-client/chromium/chromium-74.0.3702.0.ebuild new file mode 100644 index 0000000..270ccf4 --- /dev/null +++ b/www-client/chromium/chromium-74.0.3702.0.ebuild @@ -0,0 +1,733 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.0.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + dev-vcs/git +" + +: ${CHROMIUM_FORCE_CLANG=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-r8.patch" + "${FILESDIR}/chromium-widevine-r3.patch" + "${FILESDIR}/chromium-webrtc-r0.patch" + "${FILESDIR}/chromium-memcpy-r0.patch" + "${FILESDIR}/chromium-math.h-r0.patch" + "${FILESDIR}/chromium-stdint.patch" + "${FILESDIR}/chromium-noexcept.patch" + "${FILESDIR}/chromium-noexcept-2.patch" + "${FILESDIR}/chromium-noexcept-3.patch" + "${FILESDIR}/chromium-blink-template.patch" + "${FILESDIR}/chromium-link.patch" + "${FILESDIR}/chromium-74-gcc.patch" + "${FILESDIR}/chromium-webrtc.patch" + "${FILESDIR}/chromium-gcc-89311.patch" +# "${FILESDIR}/chromium-vk.patch" +# "${FILESDIR}/chromium-harfbuzz-r0.patch" +) + +pre_build_checks() { + #if [[ ${MERGE_TYPE} != binary ]]; then + # local -x CPP="$(tc-getCXX) -E" + # if tc-is-clang && ! version_is_at_least "3.9.1" "$(clang-fullversion)"; then + # # bugs: #601654 + # die "At least clang 3.9.1 is required" + # fi + # if tc-is-gcc && ! version_is_at_least 5.0 "$(gcc-version)"; then + # # bugs: #535730, #525374, #518668, #600288, #627356 + # die "At least gcc 5.0 is required" + # fi + #fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party +# net/third_party/http2 + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic +# net/third_party/spdy + net/third_party/uri_template +# third_party/WebKit + third_party/abseil-cpp +# third_party/analytics + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/fips181 + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang +# third_party/glslang-angle + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/openmax_dl + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/skia/include/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools +# third_party/spirv-tools-angle + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/unrar + third_party/usrsctp + third_party/vulkan +# third_party/vulkan-validation-layers + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + append-cxxflags $(test-flags-CXX -std=gnu++17) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + +if false; then + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done +fi + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-75.0.3745.4.ebuild b/www-client/chromium/chromium-75.0.3745.4.ebuild new file mode 100644 index 0000000..e274f16 --- /dev/null +++ b/www-client/chromium/chromium-75.0.3745.4.ebuild @@ -0,0 +1,723 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+closure-compile component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.2.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-r9.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-73-gcc-5.patch" + "${FILESDIR}/chromium-vr.patch" + "${FILESDIR}/chromium-75-vaapi.patch" + "${FILESDIR}/chromium-stdset.patch" + "${FILESDIR}/chromium-vaapi-signature.patch" + "${FILESDIR}/chromium-disable-mojovdec.patch" +# "${FILESDIR}/chromium-union.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/glad + third_party/dawn/third_party/picojson + third_party/dawn/third_party/tinygltfloader + third_party/dawn/third_party/vulkan + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + 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/googletest + third_party/glslang + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/openmax_dl + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-76.0.3783.0.ebuild b/www-client/chromium/chromium-76.0.3783.0.ebuild new file mode 100644 index 0000000..f31574a --- /dev/null +++ b/www-client/chromium/chromium-76.0.3783.0.ebuild @@ -0,0 +1,722 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+closure-compile component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.2.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-76.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-vr.patch" + "${FILESDIR}/chromium-vaapi-76.patch" + "${FILESDIR}/chromium-vector-init.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/glad + third_party/dawn/third_party/picojson + third_party/dawn/third_party/tinygltfloader + third_party/dawn/third_party/vulkan + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + 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/googletest + third_party/glslang + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/openmax_dl + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-76.0.3800.0.ebuild b/www-client/chromium/chromium-76.0.3800.0.ebuild new file mode 100644 index 0000000..f7e98ec --- /dev/null +++ b/www-client/chromium/chromium-76.0.3800.0.ebuild @@ -0,0 +1,717 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+closure-compile component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.2.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-76.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-vaapi-76-r1.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/glad + third_party/dawn/third_party/vulkan + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + 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/googletest + third_party/glslang + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-77.0.3824.6.ebuild b/www-client/chromium/chromium-77.0.3824.6.ebuild new file mode 100644 index 0000000..1f7c191 --- /dev/null +++ b/www-client/chromium/chromium-77.0.3824.6.ebuild @@ -0,0 +1,725 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+closure-compile component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.2.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-77.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-vaapi-77.patch" + "${FILESDIR}/chromium-swiftshader-77.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/boringssl/src/third_party/sike + third_party/boringssl/linux-x86_64/crypto/third_party/sike + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/glad + third_party/dawn/third_party/vulkan + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + 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/googletest + third_party/glslang + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + #zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 22 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-78.0.3876.0.ebuild b/www-client/chromium/chromium-78.0.3876.0.ebuild new file mode 100644 index 0000000..ccc1842 --- /dev/null +++ b/www-client/chromium/chromium-78.0.3876.0.ebuild @@ -0,0 +1,725 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+closure-compile component-build cups gnome-keyring +hangouts jumbo-build kerberos neon pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-59:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.2.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +# sys-apps/sandbox - https://crbug.com/586444 +DEPEND="${COMMON_DEPEND} +" +BDEPEND=" + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-5" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-77.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-vaapi-78.patch" + "${FILESDIR}/chromium-wpt-gn-78.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="5G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/boringssl/src/third_party/sike + third_party/boringssl/linux-x86_64/crypto/third_party/sike + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + 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/googletest + third_party/glslang + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + #zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # https://bugs.gentoo.org/588596 + #append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Work around broken deps + eninja -C out/Release gen/ui/accessibility/ax_enums.mojom{,-shared}.h + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update +} + +pkg_postinst() { + if type gtk-update-icon-cache &>/dev/null; then + ebegin "Updating GTK icon cache" + gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" + eend $? + fi + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-78.0.3880.4.ebuild b/www-client/chromium/chromium-78.0.3880.4.ebuild new file mode 100644 index 0000000..da73ace --- /dev/null +++ b/www-client/chromium/chromium-78.0.3880.4.ebuild @@ -0,0 +1,718 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts jumbo-build kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-unbundle-zlib.patch" + "${FILESDIR}/chromium-wpt-gn-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-77-blink-include.patch" + "${FILESDIR}/chromium-vaapi-78.patch" + "${FILESDIR}/chromium-revert-e7963c4-78.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/boringssl/src/third_party/sike + third_party/boringssl/linux-aarch64/crypto/third_party/sike + third_party/boringssl/linux-x86_64/crypto/third_party/sike + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-78.0.3902.4.ebuild b/www-client/chromium/chromium-78.0.3902.4.ebuild new file mode 100644 index 0000000..d8233a1 --- /dev/null +++ b/www-client/chromium/chromium-78.0.3902.4.ebuild @@ -0,0 +1,727 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts jumbo-build kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-78-r1.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/boringssl/src/third_party/sike + third_party/boringssl/linux-aarch64/crypto/third_party/sike + third_party/boringssl/linux-x86_64/crypto/third_party/sike + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-79.0.3921.0.ebuild b/www-client/chromium/chromium-79.0.3921.0.ebuild new file mode 100644 index 0000000..f835db2 --- /dev/null +++ b/www-client/chromium/chromium-79.0.3921.0.ebuild @@ -0,0 +1,731 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts jumbo-build kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-r4.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-79.patch" + "${FILESDIR}/chromium-pa13.patch" + "${FILESDIR}/chromium-layer_tree_impl-stlcompat.patch" + "${FILESDIR}/chromium-string_view-79.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/boringssl/src/third_party/sike + third_party/boringssl/linux-aarch64/crypto/third_party/sike + third_party/boringssl/linux-x86_64/crypto/third_party/sike + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # https://chromium.googlesource.com/chromium/src/+/lkcr/docs/jumbo.md + myconf_gn+=" use_jumbo_build=$(usex jumbo-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-80.0.3955.4.ebuild b/www-client/chromium/chromium-80.0.3955.4.ebuild new file mode 100644 index 0000000..01938b3 --- /dev/null +++ b/www-client/chromium/chromium-80.0.3955.4.ebuild @@ -0,0 +1,726 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-80.patch" + "${FILESDIR}/chromium-unique_ptr-80.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-80.0.3970.5.ebuild b/www-client/chromium/chromium-80.0.3970.5.ebuild new file mode 100644 index 0000000..7085b0b --- /dev/null +++ b/www-client/chromium/chromium-80.0.3970.5.ebuild @@ -0,0 +1,728 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-80.patch" + "${FILESDIR}/chromium-unique_ptr-80-r1.patch" + "${FILESDIR}/chromium-cursor-80.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/flot + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/gif + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-81.0.4000.3.ebuild b/www-client/chromium/chromium-81.0.4000.3.ebuild new file mode 100644 index 0000000..4a0fd04 --- /dev/null +++ b/www-client/chromium/chromium-81.0.4000.3.ebuild @@ -0,0 +1,728 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-78.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-78.patch" + "${FILESDIR}/chromium-77-system-icu.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-81.patch" + "${FILESDIR}/chromium-vector-include-81.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/sfntly + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-82.0.4056.3.ebuild b/www-client/chromium/chromium-82.0.4056.3.ebuild new file mode 100644 index 0000000..06647dc --- /dev/null +++ b/www-client/chromium/chromium-82.0.4056.3.ebuild @@ -0,0 +1,732 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-64:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2016.11.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-82.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-82.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-deque-constructor-82.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons and desktop entry. + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + local mime_types="text/html;text/xml;application/xhtml+xml;" + mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # bug #360797 + mime_types+="x-scheme-handler/ftp;" # bug #412185 + mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # bug #416393 + make_desktop_entry \ + chromium-browser \ + "Chromium" \ + chromium-browser \ + "Network;WebBrowser" \ + "MimeType=${mime_types}\nStartupWMClass=chromium-browser" + sed -e "/^Exec/s/$/ %U/" -i "${ED}"/usr/share/applications/*.desktop || die + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-83.0.4093.3.ebuild b/www-client/chromium/chromium-83.0.4093.3.ebuild new file mode 100644 index 0000000..b02eb94 --- /dev/null +++ b/www-client/chromium/chromium-83.0.4093.3.ebuild @@ -0,0 +1,745 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-83.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-std-nullptr-83.patch" + "${FILESDIR}/chromium-ngphyscontainer-iterator-cat-83.patch" + "${FILESDIR}/chromium-renderer-std-nullptr-83.patch" + "${FILESDIR}/chromium-axtree-incomplete-type-83.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-83.0.4100.3.ebuild b/www-client/chromium/chromium-83.0.4100.3.ebuild new file mode 100644 index 0000000..abbfd6e --- /dev/null +++ b/www-client/chromium/chromium-83.0.4100.3.ebuild @@ -0,0 +1,744 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-83.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-ngphyscontainer-iterator-cat-83.patch" + "${FILESDIR}/chromium-axtree-incomplete-type-83.patch" + "${FILESDIR}/chromium-crx-install-err-include-83.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-83.0.4103.7.ebuild b/www-client/chromium/chromium-83.0.4103.7.ebuild new file mode 100644 index 0000000..8e28715 --- /dev/null +++ b/www-client/chromium/chromium-83.0.4103.7.ebuild @@ -0,0 +1,747 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-83.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-ngphyscontainer-iterator-cat-83.patch" + "${FILESDIR}/chromium-axtree-incomplete-type-83.patch" + "${FILESDIR}/chromium-crx-install-err-include-83.patch" + "${FILESDIR}/chromium-hashtable-iterator-cat-83.patch" + "${FILESDIR}/chromium-blink-include-memory-83.patch" + "${FILESDIR}/chromium-include-limits-83.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-84.0.4115.5.ebuild b/www-client/chromium/chromium-84.0.4115.5.ebuild new file mode 100644 index 0000000..178184f --- /dev/null +++ b/www-client/chromium/chromium-84.0.4115.5.ebuild @@ -0,0 +1,752 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-ngphyscontainer-iterator-cat-83.patch" + "${FILESDIR}/chromium-axtree-incomplete-type-83.patch" + "${FILESDIR}/chromium-crx-install-err-include-83.patch" + "${FILESDIR}/chromium-hashtable-iterator-cat-83.patch" + "${FILESDIR}/chromium-blink-include-memory-83.patch" + "${FILESDIR}/chromium-include-limits-84.patch" + "${FILESDIR}/chromium-base-include-84.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/VulkanMemoryAllocator + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/fft4g + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-84.0.4122.7.ebuild b/www-client/chromium/chromium-84.0.4122.7.ebuild new file mode 100644 index 0000000..48a2d14 --- /dev/null +++ b/www-client/chromium/chromium-84.0.4122.7.ebuild @@ -0,0 +1,754 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-ngphyscontainer-iterator-cat-83.patch" + "${FILESDIR}/chromium-crx-install-err-include-83.patch" + "${FILESDIR}/chromium-hashtable-iterator-cat-83.patch" + "${FILESDIR}/chromium-blink-include-memory-83.patch" + "${FILESDIR}/chromium-base-include-84-r1.patch" + "${FILESDIR}/chromium-inline-node-ptr-84.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-char-max-84.patch" + "${FILESDIR}/chromium-cc-matrics-include-84.patch" + "${FILESDIR}/chromium-blink-include-limits-84.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/VulkanMemoryAllocator + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + third_party/yasm/run_yasm.py + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + yasm + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-84.0.4136.5.ebuild b/www-client/chromium/chromium-84.0.4136.5.ebuild new file mode 100644 index 0000000..fc1b627 --- /dev/null +++ b/www-client/chromium/chromium-84.0.4136.5.ebuild @@ -0,0 +1,748 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84-r1.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-inline-node-ptr-84.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-serviceworker-83.patch" + "${FILESDIR}/chromium-blink-include-bitset-84.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/VulkanMemoryAllocator + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-84.0.4147.13.ebuild b/www-client/chromium/chromium-84.0.4147.13.ebuild new file mode 100644 index 0000000..28d8d0e --- /dev/null +++ b/www-client/chromium/chromium-84.0.4147.13.ebuild @@ -0,0 +1,752 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84-r1.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-inline-node-ptr-84.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-webrtc-include-84.patch" + "${FILESDIR}/chromium-axobj-ancestoriter-cat-84.patch" + "${FILESDIR}/chromium-ntp_backgrounds-include-84.patch" + "${FILESDIR}/chromium-ext-no-vector-const-84.patch" + "${FILESDIR}/chromium-revert-crrev-2147485-84.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-85.0.4164.2.ebuild b/www-client/chromium/chromium-85.0.4164.2.ebuild new file mode 100644 index 0000000..80df496 --- /dev/null +++ b/www-client/chromium/chromium-85.0.4164.2.ebuild @@ -0,0 +1,754 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84-r1.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-inline-node-ptr-84.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-gamepad-include-84.patch" + "${FILESDIR}/chromium-bluetooth-tuple-84.patch" + "${FILESDIR}/chromium-simhash-include-84.patch" + "${FILESDIR}/chromium-opencv-include-84.patch" + "${FILESDIR}/chromium-core-management-svc-84.patch" + "${FILESDIR}/chromium-gpu-vp9-include-84.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-85.0.4183.15.ebuild b/www-client/chromium/chromium-85.0.4183.15.ebuild new file mode 100644 index 0000000..4ffd415 --- /dev/null +++ b/www-client/chromium/chromium-85.0.4183.15.ebuild @@ -0,0 +1,752 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+closure-compile component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + closure-compile? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-84-r1.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-77-clang.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-core-management-svc-84.patch" + "${FILESDIR}/chromium-gpu-vp9-include-84.patch" + "${FILESDIR}/chromium-cert-share-encrypted-85.patch" + "${FILESDIR}/chromium-simhash-include-85.patch" + "${FILESDIR}/chromium-media-alloc-84.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/cacheinvalidation + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/third_party/axe-core + third_party/devtools-frontend/src/third_party/pyjson5 + third_party/devtools-frontend/src/third_party/typescript + third_party/depot_tools + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-7.0 + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" closure_compile=$(usex closure-compile true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-86.0.4214.2.ebuild b/www-client/chromium/chromium-86.0.4214.2.ebuild new file mode 100644 index 0000000..3ad74ef --- /dev/null +++ b/www-client/chromium/chromium-86.0.4214.2.ebuild @@ -0,0 +1,757 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+js-type-check component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + js-type-check? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-86.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-vaapi-83.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-core-management-svc-84.patch" + "${FILESDIR}/chromium-gpu-vp9-include-84.patch" + "${FILESDIR}/chromium-media-alloc-84.patch" + "${FILESDIR}/chromium-remove-no_check_targets-86.patch" + "${FILESDIR}/chromium-nearby-inc-86.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-87.0.4259.3.ebuild b/www-client/chromium/chromium-87.0.4259.3.ebuild new file mode 100644 index 0000000..123d16f --- /dev/null +++ b/www-client/chromium/chromium-87.0.4259.3.ebuild @@ -0,0 +1,758 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+js-type-check component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + js-type-check? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-87.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-core-management-svc-84.patch" + "${FILESDIR}/chromium-gpu-vp9-include-84.patch" + "${FILESDIR}/chromium-nearby-inc-86.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/wayland + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zlib/google + third_party/zxcvbn-cpp + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-87.0.4263.3-r1.ebuild b/www-client/chromium/chromium-87.0.4263.3-r1.ebuild new file mode 100644 index 0000000..7c83611 --- /dev/null +++ b/www-client/chromium/chromium-87.0.4263.3-r1.ebuild @@ -0,0 +1,894 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-79-gcc-protobuf-alignas.patch" + "${FILESDIR}/chromium-80-QuicStreamSendBuffer-deleted-move-constructor.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-compiler.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-86-ImageMemoryBarrierData-init.patch" + "${FILESDIR}/chromium-86-nearby-explicit.patch" + "${FILESDIR}/chromium-86-nearby-include.patch" + "${FILESDIR}/chromium-87-anonymous-struct.patch" + "${FILESDIR}/chromium-87-CrossThreadPersistent-template.patch" + "${FILESDIR}/chromium-87-CursorFactory-include.patch" + "${FILESDIR}/chromium-87-SystemMemoryPressureEvaluator-namespace.patch" + "${FILESDIR}/chromium-87-Thumbnail-noexcept.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-vaapi-fix-87.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-87.0.4263.3.ebuild b/www-client/chromium/chromium-87.0.4263.3.ebuild new file mode 100644 index 0000000..f75a2d6 --- /dev/null +++ b/www-client/chromium/chromium-87.0.4263.3.ebuild @@ -0,0 +1,760 @@ +# Copyright 2009-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="http://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="+js-type-check component-build cups cpu_flags_arm_neon gnome-keyring +hangouts kerberos pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE="component-build? ( !suid )" + +COMMON_DEPEND=" + >=app-accessibility/at-spi2-atk-2.26:2 + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + >=dev-libs/atk-2.26 + dev-libs/expat:= + dev-libs/glib:2 + system-icu? ( >=dev-libs/icu-65:= ) + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/libxslt:= + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=dev-libs/re2-0.2019.08.01:= + gnome-keyring? ( >=gnome-base/libgnome-keyring-3.12:= ) + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( media-libs/libvpx:=[postproc,svc] ) + >=media-libs/openh264-1.6.0:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + !=net-fs/samba-4.5.12-r0 + media-libs/opus:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXScrnSaver:= + x11-libs/libXtst:= + x11-libs/pango:= + app-arch/snappy:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + !<www-plugins/chrome-binary-plugins-57 + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) + widevine? ( www-plugins/chrome-binary-plugins[widevine(-)] ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + !arm? ( + dev-lang/yasm + ) + dev-lang/perl + dev-util/gn + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + js-type-check? ( virtual/jre ) + virtual/pkgconfig +" + +: ${CHROMIUM_FORCE_CLANG=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-7" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. +" + +PATCHES=( + "${FILESDIR}/chromium-compiler-87.patch" + "${FILESDIR}/chromium-widevine-80.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-zlib-82.patch" + "${FILESDIR}/chromium-clang-format-path-82.patch" + "${FILESDIR}/chromium-base-include-84-r2.patch" + "${FILESDIR}/chromium-mojo-ltm-83.patch" + "${FILESDIR}/chromium-core-management-svc-84.patch" + "${FILESDIR}/chromium-gpu-vp9-include-84.patch" + "${FILESDIR}/chromium-nearby-inc-86.patch" + "${FILESDIR}/chromium-vaapi-fix-87.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 8.0; then + die "At least gcc 8.0 is required" + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + CHECKREQS_DISK_BUILD="25G" + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgifcodec + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/openscreen/src/third_party/mozilla + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/wayland + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zlib/google + third_party/zxcvbn-cpp + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + #libxml + libxslt + openh264 + re2 + snappy + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_gnome_keyring=$(usex gnome-keyring true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Prevent linker from running out of address space, bug #471810 . + if use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 + fi + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e "s:/usr/lib/:/usr/$(get_libdir)/:g" ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r3.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + doins out/Release/*.so + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-87.0.4278.0.ebuild b/www-client/chromium/chromium-87.0.4278.0.ebuild new file mode 100644 index 0000000..7539055 --- /dev/null +++ b/www-client/chromium/chromium-87.0.4278.0.ebuild @@ -0,0 +1,892 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-79-gcc-protobuf-alignas.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-compiler-r1.patch" + "${FILESDIR}/chromium-87-CursorFactory-include.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-87-ozone-deps.patch" + "${FILESDIR}/chromium-87-thread_cache.patch" + "${FILESDIR}/chromium-87-openscreen-crypto-include.patch" + "${FILESDIR}/chromium-87-remotesyscall.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-88.0.4298.4.ebuild b/www-client/chromium/chromium-88.0.4298.4.ebuild new file mode 100644 index 0000000..66467b3 --- /dev/null +++ b/www-client/chromium/chromium-88.0.4298.4.ebuild @@ -0,0 +1,905 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-79-gcc-protobuf-alignas.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-compiler-r1.patch" + "${FILESDIR}/chromium-87-CursorFactory-include.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-87-ozone-deps.patch" + "${FILESDIR}/chromium-87-openscreen-crypto-include.patch" + "${FILESDIR}/chromium-88-service-worker-registration-crash.patch" + "${FILESDIR}/chromium-88-dawn-include.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-88-angle-renderer.patch" + "${FILESDIR}/chromium-88-pcscan-nonfinal.patch" + "${FILESDIR}/chromium-88-mediasource-uniqptrostream.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-cross + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tint + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-88.0.4302.0.ebuild b/www-client/chromium/chromium-88.0.4302.0.ebuild new file mode 100644 index 0000000..6b66aff --- /dev/null +++ b/www-client/chromium/chromium-88.0.4302.0.ebuild @@ -0,0 +1,901 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-79-gcc-protobuf-alignas.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-compiler-r1.patch" + "${FILESDIR}/chromium-87-CursorFactory-include.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-87-ozone-deps.patch" + "${FILESDIR}/chromium-87-openscreen-crypto-include.patch" + "${FILESDIR}/chromium-88-service-worker-registration-crash.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-cross + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tint + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-88.0.4324.11.ebuild b/www-client/chromium/chromium-88.0.4324.11.ebuild new file mode 100644 index 0000000..e6bc8e9 --- /dev/null +++ b/www-client/chromium/chromium-88.0.4324.11.ebuild @@ -0,0 +1,907 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-79-gcc-protobuf-alignas.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-88-compiler.patch" + "${FILESDIR}/chromium-87-CursorFactory-include.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-87-openscreen-crypto-include.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-88-compositor-dcheck.patch" + "${FILESDIR}/chromium-88-system-icu.patch" + "${FILESDIR}/chromium-88-tree-formatter-include.patch" + "${FILESDIR}/chromium-88-gpu-internals-ozone.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-cross + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tint + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-89.0.4343.0.ebuild b/www-client/chromium/chromium-89.0.4343.0.ebuild new file mode 100644 index 0000000..c6cafc8 --- /dev/null +++ b/www-client/chromium/chromium-89.0.4343.0.ebuild @@ -0,0 +1,912 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-fix-char_traits.patch" + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-87-openscreen-crypto-include.patch" + "${FILESDIR}/chromium-88-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-88-compositor-dcheck.patch" + "${FILESDIR}/chromium-88-system-icu.patch" + "${FILESDIR}/chromium-88-tree-formatter-include.patch" + "${FILESDIR}/chromium-89-CursorFactory-include.patch" + "${FILESDIR}/chromium-89-dawn-string-include.patch" + "${FILESDIR}/chromium-89-angle-display.patch" + "${FILESDIR}/chromium-89-pcscan-include.patch" + "${FILESDIR}/chromium-89-quiche-uniqueptr.patch" + "${FILESDIR}/chromium-89-sstream.patch" + "${FILESDIR}/chromium-89-content-dcheck-uniqueptr.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/angle/third_party/glslang + third_party/angle/third_party/spirv-headers + third_party/angle/third_party/spirv-tools + third_party/angle/third_party/vulkan-headers + third_party/angle/third_party/vulkan-loader + third_party/angle/third_party/vulkan-tools + third_party/angle/third_party/vulkan-validation-layers + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgifcodec + third_party/glslang + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/spirv-cross + third_party/spirv-headers + third_party/SPIRV-Tools + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tint + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-89.0.4381.6.ebuild b/www-client/chromium/chromium-89.0.4381.6.ebuild new file mode 100644 index 0000000..1c1c565 --- /dev/null +++ b/www-client/chromium/chromium-89.0.4381.6.ebuild @@ -0,0 +1,894 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-84-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-88-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-89-compositor-dcheck.patch" + "${FILESDIR}/chromium-89-quiche-uniqueptr_r1.patch" + "${FILESDIR}/chromium-89-uigfx-image-skia.patch" + "${FILESDIR}/chromium-89-webui-config-include.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/emoji-segmenter + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgifcodec + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/liburlpattern + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shaka-player + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tint + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/adobe + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-90.0.4430.19.ebuild b/www-client/chromium/chromium-90.0.4430.19.ebuild new file mode 100644 index 0000000..9bc361f --- /dev/null +++ b/www-client/chromium/chromium-90.0.4430.19.ebuild @@ -0,0 +1,911 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-88-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-90-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-90-compositor-dcheck.patch" + "${FILESDIR}/chromium-90-quiche-uniqueptr.patch" + "${FILESDIR}/chromium-90-disable-nomerge.patch" + "${FILESDIR}/chromium-90-quantization-util-stdint.patch" + "${FILESDIR}/chromium-90-langdetect-include.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgav1 + third_party/libgifcodec + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/liburlpattern + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/libzip + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/ruy + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tensorflow-text + third_party/tint + third_party/tflite-support + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-91.0.4442.4.ebuild b/www-client/chromium/chromium-91.0.4442.4.ebuild new file mode 100644 index 0000000..d6e872a --- /dev/null +++ b/www-client/chromium/chromium-91.0.4442.4.ebuild @@ -0,0 +1,910 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python2_7 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-88-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-90-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-90-compositor-dcheck.patch" + "${FILESDIR}/chromium-90-quiche-uniqueptr.patch" + "${FILESDIR}/chromium-91-disable-nomerge.patch" + "${FILESDIR}/chromium-91-clipboard-ozone.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgav1 + third_party/libgifcodec + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/liburlpattern + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/libzip + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/ruy + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tensorflow-text + third_party/tint + third_party/tflite-support + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-91.0.4469.4.ebuild b/www-client/chromium/chromium-91.0.4469.4.ebuild new file mode 100644 index 0000000..43245a7 --- /dev/null +++ b/www-client/chromium/chromium-91.0.4469.4.ebuild @@ -0,0 +1,917 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-87-std-max_align_t.patch" + "${FILESDIR}/chromium-91-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-90-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-90-compositor-dcheck.patch" + "${FILESDIR}/chromium-90-quiche-uniqueptr.patch" + "${FILESDIR}/chromium-91-disable-nomerge.patch" + "${FILESDIR}/chromium-91-clipboard-ozone.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + sed -i -e "s|python|python2\.7|g" \ + third_party/dom_distiller_js/protoc_plugins/json_values_converter.py || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgav1 + third_party/libgifcodec + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libavif + third_party/libjingle + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/liburlpattern + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/libzip + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/ruy + third_party/s2cellid + third_party/schema_org + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tensorflow-text + third_party/tint + third_party/tflite-support + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-92.0.4503.0.ebuild b/www-client/chromium/chromium-92.0.4503.0.ebuild new file mode 100644 index 0000000..4d64594 --- /dev/null +++ b/www-client/chromium/chromium-92.0.4503.0.ebuild @@ -0,0 +1,919 @@ +# Copyright 2009-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless js-type-check kerberos official pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine vaapi" +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )" +REQUIRED_USE=" + component-build? ( !suid ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libXScrnSaver:= + x11-libs/libxcb:= +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc] ) + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + dev-libs/libffi:= + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + x11-libs/libxkbcommon:= + ) + ) +" +# For nvidia-drivers blocker, see bug #413637 . +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-10" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-10" + DEPEND+=" >=sys-libs/libcxx-10" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-67.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-86-ConsumeDurationNumber-constexpr.patch" + "${FILESDIR}/chromium-91-compiler.patch" + "${FILESDIR}/chromium-88-dawn-size_t-std.patch" + "${FILESDIR}/chromium-90-blink-disable-clang-format.patch" + "${FILESDIR}/chromium-90-compositor-dcheck.patch" + "${FILESDIR}/chromium-90-quiche-uniqueptr.patch" + "${FILESDIR}/chromium-91-disable-nomerge.patch" + "${FILESDIR}/chromium-92-base_atomic_include.patch" +) + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976. + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then + die "Component build with tcmalloc requires FEATURES=-usersandbox." + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + if use component-build; then + die "Component build with clang requires fuzzer headers." + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="7G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + sed -i -e "s|python|python2\.7|g" \ + third_party/dom_distiller_js/protoc_plugins/json_values_converter.py || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/eu-strip + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/depot_tools/third_party + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/fabricjs + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/libgav1 + third_party/libgifcodec + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/highway + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libavif + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libva_protected_content + third_party/libudev + third_party/liburlpattern + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/libzip + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/ruy + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tensorflow-text + third_party/tflite-support + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if ! use system-libvpx; then + keeplibs+=( third_party/libvpx ) + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc ) + + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + fi + if use tcmalloc; then + keeplibs+=( third_party/tcmalloc ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if use system-libvpx; then + gn_system_libraries+=( libvpx ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + if use wayland || use headless; then + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" use_ozone=false" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${PYTHONPATH+:}${PYTHONPATH}" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog +} diff --git a/www-client/chromium/chromium-92.0.4512.4.ebuild b/www-client/chromium/chromium-92.0.4512.4.ebuild new file mode 100644 index 0000000..2ddcb4a --- /dev/null +++ b/www-client/chromium/chromium-92.0.4512.4.ebuild @@ -0,0 +1,937 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + dev-lang/python:2.7[xml] + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="8G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-90-ruy-include.patch" + "${FILESDIR}/chromium-91-compiler-r1.patch" + "${FILESDIR}/chromium-92-sql-cursor.patch" +# "${FILESDIR}/chromium-89-EnumTable-crash.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + # seccomp sandbox is broken if compiled against >=sys-libs/glibc-2.33, bug #769989 + if has_version -d ">=sys-libs/glibc-2.33"; then + ewarn "Adding experimental glibc-2.33 sandbox patch. Seccomp sandbox might" + ewarn "still not work correctly. In case of issues, try to disable seccomp" + ewarn "sandbox by adding --disable-seccomp-filter-sandbox to CHROMIUM_FLAGS" + ewarn "in /etc/chromium/default." + PATCHES+=( + "${FILESDIR}/chromium-92-glibc-2.33.patch" + ) + fi + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + buildtools/third_party/eu-strip + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/compiler + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4 + third_party/catapult/third_party/html5lib-python + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + # don't inherit PYTHONPATH from environment, bug #789021 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-93.0.4535.3.ebuild b/www-client/chromium/chromium-93.0.4535.3.ebuild new file mode 100644 index 0000000..f01fdb2 --- /dev/null +++ b/www-client/chromium/chromium-93.0.4535.3.ebuild @@ -0,0 +1,939 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + dev-lang/python:2.7[xml] + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="8G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-90-ruy-include.patch" + "${FILESDIR}/chromium-91-compiler-r1.patch" + "${FILESDIR}/chromium-91-libyuv-aarch64.patch" + "${FILESDIR}/chromium-93-sql-virtual-cursor.patch" + "${FILESDIR}/chromium-93-AXPropertyNode-private.patch" + "${FILESDIR}/chromium-93-site_settings_helper-initialzation.patch" + "${FILESDIR}/chromium-93-tint-include.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + # seccomp sandbox is broken if compiled against >=sys-libs/glibc-2.33, bug #769989 + if has_version -d ">=sys-libs/glibc-2.33"; then + ewarn "Adding experimental glibc-2.33 sandbox patch. Seccomp sandbox might" + ewarn "still not work correctly. In case of issues, try to disable seccomp" + ewarn "sandbox by adding --disable-seccomp-filter-sandbox to CHROMIUM_FLAGS" + ewarn "in /etc/chromium/default." + PATCHES+=( + "${FILESDIR}/chromium-92-glibc-2.33.patch" + ) + fi + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + buildtools/third_party/eu-strip + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + tools/grit/third_party/six + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + # don't inherit PYTHONPATH from environment, bug #789021 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-93.0.4573.0.ebuild b/www-client/chromium/chromium-93.0.4573.0.ebuild new file mode 100644 index 0000000..8058db7 --- /dev/null +++ b/www-client/chromium/chromium-93.0.4573.0.ebuild @@ -0,0 +1,954 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + dev-lang/python:2.7[xml] + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="8G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-90-ruy-include.patch" + "${FILESDIR}/chromium-91-compiler-r1.patch" + "${FILESDIR}/chromium-91-libyuv-aarch64.patch" + "${FILESDIR}/chromium-93-sql-virtual-cursor.patch" + "${FILESDIR}/chromium-93-net-http-include.patch" + "${FILESDIR}/chromium-93-quiche-logging-include.patch" + "${FILESDIR}/chromium-93-ui-event-include.patch" + "${FILESDIR}/chromium-93-media-ffmpeg-type.patch" + "${FILESDIR}/chromium-93-pwdmgr-include.patch" + "${FILESDIR}/chromium-93-lang-prefs-include.patch" + "${FILESDIR}/chromium-93-gpu-ipc-include.patch" + "${FILESDIR}/chromium-93-pdfium-include.patch" + "${FILESDIR}/chromium-93-payment-include.patch" + "${FILESDIR}/chromium-93-webapp-include.patch" + "${FILESDIR}/chromium-93-dnsprefetch-include.patch" + "${FILESDIR}/chromium-93-phishing-classifier-include.patch" + "${FILESDIR}/chromium-93-devtools-msg-dispatcher-include.patch" + "${FILESDIR}/chromium-93-hid-chooser-include.patch" + "${FILESDIR}/chromium-93-url-loader-throttles-include.patch" + "${FILESDIR}/chromium-93-sms-fetcher-include.patch" + "${FILESDIR}/chromium-93-cart-include.patch" + "${FILESDIR}/chromium-93-login-detection-include.patch" + "${FILESDIR}/chromium-93-media-history-include.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + # seccomp sandbox is broken if compiled against >=sys-libs/glibc-2.33, bug #769989 + if has_version -d ">=sys-libs/glibc-2.33"; then + ewarn "Adding experimental glibc-2.33 sandbox patch. Seccomp sandbox might" + ewarn "still not work correctly. In case of issues, try to disable seccomp" + ewarn "sandbox by adding --disable-seccomp-filter-sandbox to CHROMIUM_FLAGS" + ewarn "in /etc/chromium/default." + PATCHES+=( + "${FILESDIR}/chromium-92-glibc-2.33.patch" + ) + fi + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + buildtools/third_party/eu-strip + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + # don't inherit PYTHONPATH from environment, bug #789021 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-93.0.4577.8.ebuild b/www-client/chromium/chromium-93.0.4577.8.ebuild new file mode 100644 index 0000000..6ea058a --- /dev/null +++ b/www-client/chromium/chromium-93.0.4577.8.ebuild @@ -0,0 +1,941 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + media-libs/freetype:= + >=media-libs/harfbuzz-2.4.0:0=[icu(-)] + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + >=app-arch/gzip-1.7 + app-arch/unzip + dev-lang/perl + dev-lang/python:2.7[xml] + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="3G" + CHECKREQS_DISK_BUILD="8G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-90-ruy-include.patch" + "${FILESDIR}/chromium-91-compiler-r1.patch" + "${FILESDIR}/chromium-91-libyuv-aarch64.patch" + "${FILESDIR}/chromium-93-sql-virtual-cursor.patch" + "${FILESDIR}/chromium-93-media-ffmpeg-type.patch" + "${FILESDIR}/chromium-93-pdfium-include.patch" + "${FILESDIR}/chromium-93-devtools-msg-dispatcher-include.patch" + "${FILESDIR}/chromium-93-worksp-ext-include.patch" + "${FILESDIR}/chromium-93-pwdmgr-include-r1.patch" + "${FILESDIR}/chromium-93-ext-autoconfirm-include.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + # seccomp sandbox is broken if compiled against >=sys-libs/glibc-2.33, bug #769989 + if has_version -d ">=sys-libs/glibc-2.33"; then + ewarn "Adding experimental glibc-2.33 sandbox patch. Seccomp sandbox might" + ewarn "still not work correctly. In case of issues, try to disable seccomp" + ewarn "sandbox by adding --disable-seccomp-filter-sandbox to CHROMIUM_FLAGS" + ewarn "in /etc/chromium/default." + PATCHES+=( + "${FILESDIR}/chromium-92-glibc-2.33.patch" + ) + fi + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter versions + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + sed -i -e "s|python2|python2\.7|g" buildtools/linux64/clang-format || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + buildtools/third_party/eu-strip + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng/utils + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" fieldtrial_testing_like_official_build=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # https://bugs.gentoo.org/717456 + # don't inherit PYTHONPATH from environment, bug #789021 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0" + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-94.0.4606.12.ebuild b/www-client/chromium/chromium-94.0.4606.12.ebuild new file mode 100644 index 0000000..865710c --- /dev/null +++ b/www-client/chromium/chromium-94.0.4606.12.ebuild @@ -0,0 +1,937 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm(+)] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + >=media-libs/freetype-2.11.0:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + >=app-arch/gzip-1.7 + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=yes} +: ${CHROMIUM_FORCE_LIBCXX=yes} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +python_check_deps() { + has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]" +} + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="4G" + CHECKREQS_DISK_BUILD="9G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-90-ruy-include.patch" + "${FILESDIR}/chromium-91-libyuv-aarch64.patch" + "${FILESDIR}/chromium-94-compiler.patch" + "${FILESDIR}/chromium-94-ConversionStorageSql-lambda.patch" + "${FILESDIR}/chromium-94-CustomSpaces-include.patch" + "${FILESDIR}/chromium-93-EnumTable-crash.patch" + "${FILESDIR}/chromium-93-InkDropHost-crash.patch" + "${FILESDIR}/chromium-94-translate.patch" + "${FILESDIR}/chromium-use-oauth2-client-switches-as-default.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter version + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/test/unittests/front_end/third_party/i18n + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/six + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi + + # bundled eu-strip is for amd64 only and we don't want to pre-stripped binaries + mkdir -p buildtools/third_party/eu-strip/bin || die + ln -s "${EPREFIX}"/bin/true buildtools/third_party/eu-strip/bin/eu-strip || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + # Depends on unreleased harfbuzz features + # myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" disable_fieldtrial_testing_config=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + # Disable code formating of generated files + myconf_gn+=" blink_enable_generated_code_formatting=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/chrome_crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + doins -r out/Release/MEIPreload + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-95.0.4628.3.ebuild b/www-client/chromium/chromium-95.0.4628.3.ebuild new file mode 100644 index 0000000..3790e54 --- /dev/null +++ b/www-client/chromium/chromium-95.0.4628.3.ebuild @@ -0,0 +1,935 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic multilib ninja-utils pax-utils portability python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm(+)] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + >=media-libs/freetype-2.11.0:= + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + >=app-arch/gzip-1.7 + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=no} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +python_check_deps() { + has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]" +} + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="4G" + CHECKREQS_DISK_BUILD="9G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-91-libyuv-aarch64.patch" + "${FILESDIR}/chromium-94-compiler.patch" + "${FILESDIR}/chromium-95-hash_traits-include.patch" + "${FILESDIR}/chromium-95-text_fragments_utils-include.patch" + "${FILESDIR}/chromium-93-EnumTable-crash.patch" + "${FILESDIR}/chromium-93-InkDropHost-crash.patch" + "${FILESDIR}/chromium-use-oauth2-client-switches-as-default.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter version + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/test/unittests/front_end/third_party/i18n + third_party/devtools-frontend/src/third_party + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/harfbuzz-ng + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/six + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/tflite-support + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi + + # bundled eu-strip is for amd64 only and we don't want to pre-stripped binaries + mkdir -p buildtools/third_party/eu-strip/bin || die + ln -s "${EPREFIX}"/bin/true buildtools/third_party/eu-strip/bin/eu-strip || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_libsrtp (bug #459932). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_ssl (http://crbug.com/58087). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + # Depends on unreleased harfbuzz features + # myconf_gn+=" use_system_harfbuzz=true" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false) rtc_pipewire_version=\"0.3\"" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" disable_fieldtrial_testing_config=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + # Disable code formating of generated files + myconf_gn+=" blink_enable_generated_code_formatting=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + export HTTP_PROXY=127.0.0.1:8123 + export HTTPS_PROXY=127.0.0.1:8123 + export http_proxy=127.0.0.1:8123 + export https_proxy=127.0.0.1:8123 + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/chrome_crashpad_handler + + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(usex wayland true false):g; + s:@@FORCE_OZONE_PLATFORM@@:$(usex headless true false):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r6.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + doins -r out/Release/MEIPreload + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/chromium-96.0.4662.6.ebuild b/www-client/chromium/chromium-96.0.4662.6.ebuild new file mode 100644 index 0000000..99ef5fd --- /dev/null +++ b/www-client/chromium/chromium-96.0.4662.6.ebuild @@ -0,0 +1,957 @@ +# Copyright 2009-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +PYTHON_COMPAT=( python3_9 ) +PYTHON_REQ_USE="xml" + +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he + hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr + sv sw ta te th tr uk vi zh-CN zh-TW" + +inherit check-reqs chromium-2 desktop flag-o-matic ninja-utils pax-utils python-any-r1 readme.gentoo-r1 toolchain-funcs xdg-utils + +DESCRIPTION="Open-source version of Google Chrome web browser" +HOMEPAGE="https://chromium.org/" +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="component-build cups cpu_flags_arm_neon debug +hangouts headless +js-type-check kerberos official pic +proprietary-codecs pulseaudio screencast selinux +suid +system-ffmpeg +system-harfbuzz +system-icu vaapi wayland widevine" +REQUIRED_USE=" + component-build? ( !suid ) + screencast? ( wayland ) +" + +COMMON_X_DEPEND=" + media-libs/mesa:=[gbm(+)] + x11-libs/libX11:= + x11-libs/libXcomposite:= + x11-libs/libXcursor:= + x11-libs/libXdamage:= + x11-libs/libXext:= + x11-libs/libXfixes:= + >=x11-libs/libXi-1.6.0:= + x11-libs/libXrandr:= + x11-libs/libXrender:= + x11-libs/libXtst:= + x11-libs/libxcb:= + x11-libs/libxshmfence:= + vaapi? ( >=x11-libs/libva-2.7:=[X,drm] ) +" + +COMMON_DEPEND=" + app-arch/bzip2:= + cups? ( >=net-print/cups-1.3.11:= ) + dev-libs/expat:= + dev-libs/glib:2 + >=dev-libs/libxml2-2.9.4-r3:=[icu] + dev-libs/nspr:= + >=dev-libs/nss-3.26:= + >=media-libs/alsa-lib-1.0.19:= + media-libs/fontconfig:= + >=media-libs/freetype-2.11.0-r1:= + system-harfbuzz? ( >=media-libs/harfbuzz-2.9.0:0=[icu(-)] ) + media-libs/libjpeg-turbo:= + media-libs/libpng:= + pulseaudio? ( media-sound/pulseaudio:= ) + system-ffmpeg? ( + >=media-video/ffmpeg-4.3:= + || ( + media-video/ffmpeg[-samba] + >=net-fs/samba-4.5.10-r1[-debug(-)] + ) + >=media-libs/opus-1.3.1:= + ) + net-misc/curl[ssl] + sys-apps/dbus:= + sys-apps/pciutils:= + virtual/udev + x11-libs/cairo:= + x11-libs/gdk-pixbuf:2 + x11-libs/libxkbcommon:= + x11-libs/pango:= + media-libs/flac:= + >=media-libs/libwebp-0.4.0:= + sys-libs/zlib:=[minizip] + kerberos? ( virtual/krb5 ) + !headless? ( + ${COMMON_X_DEPEND} + >=app-accessibility/at-spi2-atk-2.26:2 + >=app-accessibility/at-spi2-core-2.26:2 + >=dev-libs/atk-2.26 + x11-libs/gtk+:3[X] + wayland? ( + dev-libs/wayland:= + screencast? ( media-video/pipewire:0/0.3 ) + x11-libs/gtk+:3[wayland,X] + x11-libs/libdrm:= + ) + ) +" +RDEPEND="${COMMON_DEPEND} + x11-misc/xdg-utils + virtual/opengl + virtual/ttf-fonts + selinux? ( sec-policy/selinux-chromium ) +" +DEPEND="${COMMON_DEPEND} +" +# dev-vcs/git - https://bugs.gentoo.org/593476 +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_any_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ') + >=app-arch/gzip-1.7 + dev-lang/perl + >=dev-util/gn-0.1807 + dev-vcs/git + >=dev-util/gperf-3.0.3 + >=dev-util/ninja-1.7.2 + >=net-libs/nodejs-7.6.0[inspector] + sys-apps/hwids[usb(+)] + >=sys-devel/bison-2.4.3 + sys-devel/flex + virtual/pkgconfig + js-type-check? ( virtual/jre ) +" + +# These are intended for ebuild maintainer use to force clang if GCC is broken. +: ${CHROMIUM_FORCE_CLANG=no} +: ${CHROMIUM_FORCE_LIBCXX=no} + +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then + BDEPEND+=" >=sys-devel/clang-12" +fi + +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + RDEPEND+=" >=sys-libs/libcxx-12" + DEPEND+=" >=sys-libs/libcxx-12" +else + COMMON_DEPEND=" + app-arch/snappy:= + dev-libs/libxslt:= + >=dev-libs/re2-0.2019.08.01:= + >=media-libs/openh264-1.6.0:= + system-icu? ( >=dev-libs/icu-69.1:= ) + " + RDEPEND+="${COMMON_DEPEND}" + DEPEND+="${COMMON_DEPEND}" +fi + +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then + EBUILD_DEATH_HOOKS+=" chromium_pkg_die"; +fi + +DISABLE_AUTOFORMATTING="yes" +DOC_CONTENTS=" +Some web pages may require additional fonts to display properly. +Try installing some of the following packages if some characters +are not displayed properly: +- media-fonts/arphicfonts +- media-fonts/droid +- media-fonts/ipamonafont +- media-fonts/noto +- media-fonts/ja-ipafonts +- media-fonts/takao-fonts +- media-fonts/wqy-microhei +- media-fonts/wqy-zenhei + +To fix broken icons on the Downloads page, you should install an icon +theme that covers the appropriate MIME types, and configure this as your +GTK+ icon theme. + +For native file dialogs in KDE, install kde-apps/kdialog. + +To make password storage work with your desktop environment you may +have install one of the supported credentials management applications: +- app-crypt/libsecret (GNOME) +- kde-frameworks/kwallet (KDE) +If you have one of above packages installed, but don't want to use +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS +in /etc/chromium/default. +" + +python_check_deps() { + has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]" +} + +pre_build_checks() { + if [[ ${MERGE_TYPE} != binary ]]; then + local -x CPP="$(tc-getCXX) -E" + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then + die "At least gcc 9.2 is required" + fi + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then + CPP="${CHOST}-clang++ -E" + if ! ver_test "$(clang-major-version)" -ge 12; then + die "At least clang 12 is required" + fi + fi + fi + + # Check build requirements, bug #541816 and bug #471810 . + CHECKREQS_MEMORY="4G" + CHECKREQS_DISK_BUILD="9G" + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then + if use custom-cflags || use component-build; then + CHECKREQS_DISK_BUILD="25G" + fi + if ! use component-build; then + CHECKREQS_MEMORY="16G" + fi + fi + check-reqs_pkg_setup +} + +pkg_pretend() { + pre_build_checks +} + +pkg_setup() { + pre_build_checks + + chromium_suid_sandbox_check_kernel_config + + # nvidia-drivers does not work correctly with Wayland due to unsupported EGLStreams + if use wayland && ! use headless && has_version "x11-drivers/nvidia-drivers"; then + ewarn "Proprietary nVidia driver does not work with Wayland. You can disable" + ewarn "Wayland by setting DISABLE_OZONE_PLATFORM=true in /etc/chromium/default." + fi +} + +src_prepare() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local PATCHES=( + "${FILESDIR}/chromium-78-protobuf-RepeatedPtrField-export.patch" + "${FILESDIR}/chromium-95-libyuv-aarch64.patch" + "${FILESDIR}/chromium-96-compiler.patch" + "${FILESDIR}/chromium-96-AppliedTextDecoration-include.patch" + "${FILESDIR}/chromium-96-template-friend.patch" + "${FILESDIR}/chromium-96-ax_platform-list-init.patch" + "${FILESDIR}/chromium-96-coupondb-include.patch" + + "${FILESDIR}/chromium-96-EnumTable-crash.patch" + "${FILESDIR}/chromium-93-InkDropHost-crash.patch" + "${FILESDIR}/chromium-use-oauth2-client-switches-as-default.patch" + "${FILESDIR}/chromium-shim_headers.patch" + ) + + default + + mkdir -p third_party/node/linux/node-linux-x64/bin || die + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die + + # adjust python interpreter version + sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die + + local keeplibs=( + base/third_party/cityhash + base/third_party/double_conversion + 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 + buildtools/third_party/libc++ + buildtools/third_party/libc++abi + chrome/third_party/mozilla_security_manager + courgette/third_party + net/third_party/mozilla_security_manager + net/third_party/nss + net/third_party/quic + net/third_party/uri_template + third_party/abseil-cpp + third_party/angle + third_party/angle/src/common/third_party/base + third_party/angle/src/common/third_party/smhasher + third_party/angle/src/common/third_party/xxhash + third_party/angle/src/third_party/libXNVCtrl + third_party/angle/src/third_party/trace_event + third_party/angle/src/third_party/volk + third_party/apple_apsl + third_party/axe-core + third_party/blink + third_party/boringssl + third_party/boringssl/src/third_party/fiat + third_party/breakpad + third_party/breakpad/breakpad/src/third_party/curl + third_party/brotli + third_party/catapult + third_party/catapult/common/py_vulcanize/third_party/rcssmin + third_party/catapult/common/py_vulcanize/third_party/rjsmin + third_party/catapult/third_party/beautifulsoup4-4.9.3 + third_party/catapult/third_party/html5lib-1.1 + third_party/catapult/third_party/polymer + third_party/catapult/third_party/six + third_party/catapult/tracing/third_party/d3 + third_party/catapult/tracing/third_party/gl-matrix + third_party/catapult/tracing/third_party/jpeg-js + third_party/catapult/tracing/third_party/jszip + third_party/catapult/tracing/third_party/mannwhitneyu + third_party/catapult/tracing/third_party/oboe + third_party/catapult/tracing/third_party/pako + third_party/ced + third_party/cld_3 + third_party/closure_compiler + third_party/crashpad + third_party/crashpad/crashpad/third_party/lss + third_party/crashpad/crashpad/third_party/zlib + third_party/crc32c + third_party/cros_system_api + third_party/dav1d + third_party/dawn + third_party/dawn/third_party/khronos + third_party/dawn/third_party/tint + third_party/depot_tools + third_party/devscripts + third_party/devtools-frontend + third_party/devtools-frontend/src/front_end/third_party/acorn + third_party/devtools-frontend/src/front_end/third_party/axe-core + third_party/devtools-frontend/src/front_end/third_party/chromium + third_party/devtools-frontend/src/front_end/third_party/codemirror + third_party/devtools-frontend/src/front_end/third_party/diff + third_party/devtools-frontend/src/front_end/third_party/i18n + third_party/devtools-frontend/src/front_end/third_party/intl-messageformat + third_party/devtools-frontend/src/front_end/third_party/lighthouse + third_party/devtools-frontend/src/front_end/third_party/lit-html + third_party/devtools-frontend/src/front_end/third_party/lodash-isequal + third_party/devtools-frontend/src/front_end/third_party/marked + third_party/devtools-frontend/src/front_end/third_party/puppeteer + third_party/devtools-frontend/src/front_end/third_party/wasmparser + third_party/devtools-frontend/src/test/unittests/front_end/third_party/i18n + third_party/devtools-frontend/src/third_party + third_party/distributed_point_functions + third_party/dom_distiller_js + third_party/eigen3 + third_party/emoji-segmenter + third_party/farmhash + third_party/fdlibm + third_party/fft2d + third_party/flatbuffers + third_party/freetype + third_party/fusejs + third_party/highway + third_party/libgifcodec + third_party/liburlpattern + third_party/libzip + third_party/gemmlowp + third_party/google_input_tools + third_party/google_input_tools/third_party/closure_library + third_party/google_input_tools/third_party/closure_library/third_party/closure + third_party/googletest + third_party/hunspell + third_party/iccjpeg + third_party/inspector_protocol + third_party/jinja2 + third_party/jsoncpp + third_party/jstemplate + third_party/khronos + third_party/leveldatabase + third_party/libXNVCtrl + third_party/libaddressinput + third_party/libaom + third_party/libaom/source/libaom/third_party/fastfeat + third_party/libaom/source/libaom/third_party/vector + third_party/libaom/source/libaom/third_party/x86inc + third_party/libavif + third_party/libgav1 + third_party/libjingle + third_party/libjxl + third_party/libphonenumber + third_party/libsecret + third_party/libsrtp + third_party/libsync + third_party/libudev + third_party/libva_protected_content + third_party/libvpx + third_party/libvpx/source/libvpx/third_party/x86inc + third_party/libwebm + third_party/libx11 + third_party/libxcb-keysyms + third_party/libxml/chromium + third_party/libyuv + third_party/llvm + third_party/lottie + third_party/lss + third_party/lzma_sdk + third_party/mako + third_party/maldoca + third_party/maldoca/src/third_party/tensorflow_protos + third_party/maldoca/src/third_party/zlibwrapper + third_party/markupsafe + third_party/mesa + third_party/metrics_proto + third_party/minigbm + third_party/modp_b64 + third_party/nasm + third_party/nearby + third_party/neon_2_sse + third_party/node + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2 + third_party/one_euro_filter + third_party/opencv + third_party/openscreen + third_party/openscreen/src/third_party/mozilla + third_party/openscreen/src/third_party/tinycbor/src/src + third_party/ots + third_party/pdfium + third_party/pdfium/third_party/agg23 + third_party/pdfium/third_party/base + third_party/pdfium/third_party/bigint + third_party/pdfium/third_party/freetype + third_party/pdfium/third_party/lcms + third_party/pdfium/third_party/libopenjpeg20 + third_party/pdfium/third_party/libpng16 + third_party/pdfium/third_party/libtiff + third_party/pdfium/third_party/skia_shared + third_party/perfetto + third_party/perfetto/protos/third_party/chromium + third_party/pffft + third_party/ply + third_party/polymer + third_party/private-join-and-compute + third_party/private_membership + third_party/protobuf + third_party/protobuf/third_party/six + third_party/pyjson5 + third_party/qcms + third_party/rnnoise + third_party/s2cellid + third_party/securemessage + third_party/shell-encryption + third_party/simplejson + third_party/six + third_party/skia + third_party/skia/include/third_party/skcms + third_party/skia/include/third_party/vulkan + third_party/skia/third_party/skcms + third_party/skia/third_party/vulkan + third_party/smhasher + third_party/sqlite + third_party/swiftshader + third_party/swiftshader/third_party/astc-encoder + third_party/swiftshader/third_party/llvm-subzero + third_party/swiftshader/third_party/marl + third_party/swiftshader/third_party/subzero + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1 + third_party/tcmalloc + third_party/tensorflow-text + third_party/tflite + third_party/tflite/src/third_party/eigen3 + third_party/tflite/src/third_party/fft2d + third_party/ruy + third_party/ukey2 + third_party/unrar + third_party/usrsctp + third_party/utf + third_party/vulkan + third_party/web-animations-js + third_party/webdriver + third_party/webgpu-cts + third_party/webrtc + third_party/webrtc/common_audio/third_party/ooura + third_party/webrtc/common_audio/third_party/spl_sqrt_floor + third_party/webrtc/modules/third_party/fft + third_party/webrtc/modules/third_party/g711 + third_party/webrtc/modules/third_party/g722 + third_party/webrtc/rtc_base/third_party/base64 + third_party/webrtc/rtc_base/third_party/sigslot + third_party/widevine + third_party/woff2 + third_party/wuffs + third_party/x11proto + third_party/xcbproto + third_party/zxcvbn-cpp + third_party/zlib/google + url/third_party/mozilla + v8/src/third_party/siphash + v8/src/third_party/valgrind + v8/src/third_party/utf8-decoder + v8/third_party/inspector_protocol + v8/third_party/v8 + + # gyp -> gn leftovers + base/third_party/libevent + third_party/speech-dispatcher + third_party/usb_ids + third_party/xdg-utils + ) + if ! use system-ffmpeg; then + keeplibs+=( third_party/ffmpeg third_party/opus ) + fi + if ! use system-icu; then + keeplibs+=( third_party/icu ) + fi + if use system-harfbuzz; then + keeplibs+=( third_party/harfbuzz-ng/utils ) + else + keeplibs+=( third_party/harfbuzz-ng ) + fi + if use wayland && ! use headless ; then + keeplibs+=( third_party/wayland ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + keeplibs+=( third_party/libxml ) + keeplibs+=( third_party/libxslt ) + keeplibs+=( third_party/openh264 ) + keeplibs+=( third_party/re2 ) + keeplibs+=( third_party/snappy ) + if use system-icu; then + keeplibs+=( third_party/icu ) + fi + fi + if use arm64 || use ppc64 ; then + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 ) + fi + # we need to generate ppc64 stuff because upstream does not ship it yet + # it has to be done before unbundling. + if use ppc64; then + pushd third_party/libvpx >/dev/null || die + mkdir -p source/config/linux/ppc64 || die + ./generate_gni.sh || die + popd >/dev/null || die + fi + + # Remove most bundled libraries. Some are still needed. + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die + + if use js-type-check; then + ln -s "${EPREFIX}"/usr/bin/java third_party/jdk/current/bin/java || die + fi + + # bundled eu-strip is for amd64 only and we don't want to pre-stripped binaries + mkdir -p buildtools/third_party/eu-strip/bin || die + ln -s "${EPREFIX}"/bin/true buildtools/third_party/eu-strip/bin/eu-strip || die +} + +src_configure() { + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + local myconf_gn="" + + # Make sure the build system will use the right tools, bug #340795. + tc-export AR CC CXX NM + + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then + # Force clang since gcc is pretty broken at the moment. + CC=${CHOST}-clang + CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + if tc-is-clang; then + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" + else + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + die "Compiling with sys-libs/libcxx requires clang." + fi + myconf_gn+=" is_clang=false" + fi + + # Define a custom toolchain for GN + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\"" + + if tc-is-cross-compiler; then + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\"" + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\"" + else + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\"" + fi + + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory. + myconf_gn+=" is_debug=false" + + # enable DCHECK with USE=debug only, increases chrome binary size by 30%, bug #811138. + # DCHECK is fatal by default, make it configurable at runtime, #bug 807881. + myconf_gn+=" dcheck_always_on=$(usex debug true false)" + myconf_gn+=" dcheck_is_configurable=$(usex debug true false)" + + # Component build isn't generally intended for use by end users. It's mostly useful + # for development and debugging. + myconf_gn+=" is_component_build=$(usex component-build true false)" + + # Disable nacl, we can't build without pnacl (http://crbug.com/269560). + myconf_gn+=" enable_nacl=false" + + # Use system-provided libraries. + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733). + # TODO: use_system_hunspell (upstream changes needed). + # TODO: use_system_protobuf (bug #525560). + # TODO: use_system_sqlite (http://crbug.com/22208). + + # libevent: https://bugs.gentoo.org/593458 + local gn_system_libraries=( + flac + fontconfig + freetype + # Need harfbuzz_from_pkgconfig target + #harfbuzz-ng + libdrm + libjpeg + libpng + libwebp + zlib + ) + if use system-ffmpeg; then + gn_system_libraries+=( ffmpeg opus ) + fi + if use system-icu; then + gn_system_libraries+=( icu ) + fi + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++ + gn_system_libraries+=( libxml ) + gn_system_libraries+=( libxslt ) + gn_system_libraries+=( openh264 ) + gn_system_libraries+=( re2 ) + gn_system_libraries+=( snappy ) + fi + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die + + # See dependency logic in third_party/BUILD.gn + myconf_gn+=" use_system_harfbuzz=$(usex system-harfbuzz true false)" + + # Disable deprecated libgnome-keyring dependency, bug #713012 + myconf_gn+=" use_gnome_keyring=false" + + # Optional dependencies. + myconf_gn+=" enable_js_type_check=$(usex js-type-check true false)" + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)" + myconf_gn+=" enable_widevine=$(usex widevine true false)" + myconf_gn+=" use_cups=$(usex cups true false)" + myconf_gn+=" use_kerberos=$(usex kerberos true false)" + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)" + myconf_gn+=" use_vaapi=$(usex vaapi true false)" + myconf_gn+=" rtc_use_pipewire=$(usex screencast true false)" + + # TODO: link_pulseaudio=true for GN. + + myconf_gn+=" disable_fieldtrial_testing_config=true" + + # Never use bundled gold binary. Disable gold linker flags for now. + # Do not use bundled clang. + # Trying to use gold results in linker crash. + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false" + + # Disable forced lld, bug 641556 + myconf_gn+=" use_lld=false" + + # Disable pseudolocales, only used for testing + myconf_gn+=" enable_pseudolocales=false" + + # Disable code formating of generated files + myconf_gn+=" blink_enable_generated_code_formatting=false" + + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)" + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)" + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\"" + + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys . + # Note: these are for Gentoo use ONLY. For your own distribution, + # please get your own set of keys. Feel free to contact chromium@gentoo.org + # for more info. The OAuth2 credentials, however, have been left out. + # Those OAuth2 credentials have been broken for quite some time anyway. + # Instead we apply a patch to use the --oauth2-client-id= and + # --oauth2-client-secret= switches for setting GOOGLE_DEFAULT_CLIENT_ID and + # GOOGLE_DEFAULT_CLIENT_SECRET at runtime. This allows signing into + # Chromium without baked-in values. + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc" + local google_default_client_id="329227923882.apps.googleusercontent.com" + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu" + myconf_gn+=" google_api_key=\"${google_api_key}\"" + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\"" + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\"" + local myarch="$(tc-arch)" + + # Avoid CFLAGS problems, bug #352457, bug #390147. + if ! use custom-cflags; then + replace-flags "-Os" "-O2" + strip-flags + + # Debug info section overflows without component build + # Prevent linker from running out of address space, bug #471810 . + if ! use component-build || use x86; then + filter-flags "-g*" + fi + + # Prevent libvpx build failures. Bug 530248, 544702, 546984. + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4 + fi + fi + + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then + append-flags -stdlib=libc++ + append-ldflags -stdlib=libc++ + fi + + if [[ $myarch = amd64 ]] ; then + myconf_gn+=" target_cpu=\"x64\"" + ffmpeg_target_arch=x64 + elif [[ $myarch = x86 ]] ; then + myconf_gn+=" target_cpu=\"x86\"" + ffmpeg_target_arch=ia32 + + # This is normally defined by compiler_cpu_abi in + # build/config/compiler/BUILD.gn, but we patch that part out. + append-flags -msse2 -mfpmath=sse -mmmx + elif [[ $myarch = arm64 ]] ; then + myconf_gn+=" target_cpu=\"arm64\"" + ffmpeg_target_arch=arm64 + elif [[ $myarch = arm ]] ; then + myconf_gn+=" target_cpu=\"arm\"" + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm) + elif [[ $myarch = ppc64 ]] ; then + myconf_gn+=" target_cpu=\"ppc64\"" + ffmpeg_target_arch=ppc64 + else + die "Failed to determine target arch, got '$myarch'." + fi + + # 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. + myconf_gn+=" treat_warnings_as_errors=false" + + # Disable fatal linker warnings, bug 506268. + myconf_gn+=" fatal_linker_warnings=false" + + # Bug 491582. + export TMPDIR="${WORKDIR}/temp" + mkdir -p -m 755 "${TMPDIR}" || die + + # https://bugs.gentoo.org/654216 + addpredict /dev/dri/ #nowarn + + #if ! use system-ffmpeg; then + if false; then + local build_ffmpeg_args="" + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then + build_ffmpeg_args+=" --disable-asm" + fi + + # Re-configure bundled ffmpeg. See bug #491378 for example reasons. + einfo "Configuring bundled ffmpeg..." + pushd third_party/ffmpeg > /dev/null || die + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \ + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die + chromium/scripts/copy_config.sh || die + chromium/scripts/generate_gn.py || die + popd > /dev/null || die + fi + + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all) + + # Disable unknown warning message from clang. + tc-is-clang && append-flags -Wno-unknown-warning-option + + # Explicitly disable ICU data file support for system-icu builds. + if use system-icu; then + myconf_gn+=" icu_use_data_file=false" + fi + + # Enable ozone wayland and/or headless support + myconf_gn+=" use_ozone=true ozone_auto_platforms=false" + myconf_gn+=" ozone_platform_headless=true" + myconf_gn+=" ozone_platform_x11=$(usex headless false true)" + if use wayland || use headless; then + if use headless; then + myconf_gn+=" ozone_platform=\"headless\"" + myconf_gn+=" use_x11=false" + else + myconf_gn+=" ozone_platform_wayland=true" + myconf_gn+=" use_system_libdrm=true" + myconf_gn+=" use_system_minigbm=true" + myconf_gn+=" use_xkbcommon=true" + myconf_gn+=" ozone_platform=\"wayland\"" + fi + else + myconf_gn+=" ozone_platform=\"x11\"" + fi + + # Enable official builds + myconf_gn+=" is_official_build=$(usex official true false)" + myconf_gn+=" use_thin_lto=false" + if use official; then + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \ + tools/generate_shim_headers/generate_shim_headers.py || die + # Disable CFI: unsupported for GCC, requires clang+lto+lld + myconf_gn+=" is_cfi=false" + # Disable PGO, because profile data is only compatible with >=clang-11 + myconf_gn+=" chrome_pgo_phase=0" + fi + + einfo "Configuring Chromium..." + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release + echo "$@" + "$@" || die +} + +src_compile() { + # Final link uses lots of file descriptors. + ulimit -n 2048 + + # Calling this here supports resumption via FEATURES=keepwork + python_setup + + # Don't inherit PYTHONPATH from environment, bug #789021, #812689 + local -x PYTHONPATH= + + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die + + # Build mksnapshot and pax-mark it. + local x + for x in mksnapshot v8_context_snapshot_generator; do + if tc-is-cross-compiler; then + eninja -C out/Release "host/${x}" + pax-mark m "out/Release/host/${x}" + else + eninja -C out/Release "${x}" + pax-mark m "out/Release/${x}" + fi + done + + # Even though ninja autodetects number of CPUs, we respect + # user's options, for debugging with -j 1 or any other reason. + eninja -C out/Release chrome chromedriver + use suid && eninja -C out/Release chrome_sandbox + + pax-mark m out/Release/chrome + + mv out/Release/chromedriver{.unstripped,} || die + + # Build manpage; bug #684550 + sed -e 's|@@PACKAGE@@|chromium-browser|g; + s|@@MENUNAME@@|Chromium|g;' \ + chrome/app/resources/manpage.1.in > \ + out/Release/chromium-browser.1 || die + + # Build desktop file; bug #706786 + sed -e 's|@@MENUNAME@@|Chromium|g; + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g; + s|@@PACKAGE@@|chromium-browser|g; + s|\(^Exec=\)/usr/bin/|\1|g;' \ + chrome/installer/linux/common/desktop.template > \ + out/Release/chromium-browser-chromium.desktop || die +} + +src_install() { + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser" + exeinto "${CHROMIUM_HOME}" + doexe out/Release/chrome + + if use suid; then + newexe out/Release/chrome_sandbox chrome-sandbox + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox" + fi + + doexe out/Release/chromedriver + doexe out/Release/chrome_crashpad_handler + + ozone_auto_session () { + use wayland && ! use headless && echo true || echo false + } + local sedargs=( -e + "s:/usr/lib/:/usr/$(get_libdir)/:g; + s:@@OZONE_AUTO_SESSION@@:$(ozone_auto_session):g" + ) + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r7.sh" > chromium-launcher.sh || die + doexe chromium-launcher.sh + + # It is important that we name the target "chromium-browser", + # xdg-utils expect it; bug #355517. + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser + # keep the old symlink around for consistency + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium + + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver + + # Allow users to override command-line options, bug #357629. + insinto /etc/chromium + newins "${FILESDIR}/chromium.default" "default" + + pushd out/Release/locales > /dev/null || die + chromium_remove_language_paks + popd + + insinto "${CHROMIUM_HOME}" + doins out/Release/*.bin + doins out/Release/*.pak + ( + shopt -s nullglob + local files=(out/Release/*.so out/Release/*.so.[0-9]) + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}" + ) + + if ! use system-icu; then + doins out/Release/icudtl.dat + fi + + doins -r out/Release/locales + doins -r out/Release/resources + doins -r out/Release/MEIPreload + + if [[ -d out/Release/swiftshader ]]; then + insinto "${CHROMIUM_HOME}/swiftshader" + doins out/Release/swiftshader/*.so + fi + + # Install icons + local branding size + for size in 16 24 32 48 64 128 256 ; do + case ${size} in + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; + *) branding="chrome/app/theme/chromium" ;; + esac + newicon -s ${size} "${branding}/product_logo_${size}.png" \ + chromium-browser.png + done + + # Install desktop entry + domenu out/Release/chromium-browser-chromium.desktop + + # Install GNOME default application entry (bug #303100). + insinto /usr/share/gnome-control-center/default-apps + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml + + # Install manpage; bug #684550 + doman out/Release/chromium-browser.1 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1 + + readme.gentoo_create_doc +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update + readme.gentoo_print_elog + + if use vaapi; then + elog "VA-API is disabled by default at runtime. You have to enable it" + elog "by adding --enable-features=VaapiVideoDecoder to CHROMIUM_FLAGS" + elog "in /etc/chromium/default." + fi + if use screencast; then + elog "Screencast is disabled by default at runtime. Either enable it" + elog "by navigating to chrome://flags/#enable-webrtc-pipewire-capturer" + elog "inside Chromium or add --enable-webrtc-pipewire-capturer" + elog "to CHROMIUM_FLAGS in /etc/chromium/default." + fi +} diff --git a/www-client/chromium/files/chromium-71-gcc-0.patch b/www-client/chromium/files/chromium-71-gcc-0.patch new file mode 100644 index 0000000..711b827 --- /dev/null +++ b/www-client/chromium/files/chromium-71-gcc-0.patch @@ -0,0 +1,57 @@ +From 65be571f6ac2f7942b4df9e50b24da517f829eec Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Mon, 15 Oct 2018 20:26:10 +0000 +Subject: [PATCH] google_util: Explicitly use std::initializer_list with + base::NoDestructor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Follow-up to ac53c5c53 ("Remove CR_DEFINE_STATIC_LOCAL from /components"). +Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84849, having +base::NoDestructor<T<U>> and passing an initializer list of Us does not +work if this is not done explicitly, as GCC incorrectly fails to determine +which constructor overload to use: + + ../../components/google/core/common/google_util.cc: In function ‘bool google_util::{anonymous}::IsCanonicalHostGoogleHostname(base::StringPiece, google_util::SubdomainPermission)’: + ../../components/google/core/common/google_util.cc:120:24: error: call of overloaded ‘NoDestructor(<brace-enclosed initializer list>)’ is ambiguous + {GOOGLE_TLD_LIST}); + +See also: https://chromium-review.googlesource.com/c/chromium/src/+/1170905 + +Bug: 819294 +Change-Id: Ie1490b6646d7998d636c485769caabf56c1cf44c +Reviewed-on: https://chromium-review.googlesource.com/c/1275854 +Reviewed-by: Peter Kasting <pkasting@chromium.org> +Commit-Queue: Raphael Kubo da Costa (CET) <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#599733} +--- + components/google/core/common/google_util.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc +index a44c84393820..7733848a0443 100644 +--- a/components/google/core/common/google_util.cc ++++ b/components/google/core/common/google_util.cc +@@ -117,7 +117,7 @@ bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host, + StripTrailingDot(&tld); + + static base::NoDestructor<std::set<std::string>> google_tlds( +- {GOOGLE_TLD_LIST}); ++ std::initializer_list<std::string>({GOOGLE_TLD_LIST})); + return base::ContainsKey(*google_tlds, tld.as_string()); + } + +@@ -132,7 +132,8 @@ bool IsGoogleSearchSubdomainUrl(const GURL& url) { + StripTrailingDot(&host); + + static base::NoDestructor<std::set<std::string>> google_subdomains( +- {"ipv4.google.com", "ipv6.google.com"}); ++ std::initializer_list<std::string>( ++ {"ipv4.google.com", "ipv6.google.com"})); + + return base::ContainsKey(*google_subdomains, host.as_string()); + } +-- +2.19.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-0.patch b/www-client/chromium/files/chromium-73-gcc-0.patch new file mode 100644 index 0000000..5a50700 --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-0.patch @@ -0,0 +1,108 @@ +From 2c3b57cafbbb38c13a519c9d2fda8b65691d9564 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Thu, 7 Feb 2019 22:55:37 +0000 +Subject: [PATCH] allocator shim: Swap ALIGN_LINKAGE and SHIM_ALWAYS_EXPORT's + positions +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes the GCC build. GCC seems to be stricter with the position of the +linkage specification, so just swap the terms to prevent an error that looks +like: + +In file included from ../../base/allocator/allocator_shim.cc:333: +../../base/allocator/allocator_shim_override_cpp_symbols.h:39:30: error: expected unqualified-id before string constant + #define ALIGN_LINKAGE extern "C" + ^~~ +../../base/allocator/allocator_shim_override_cpp_symbols.h:99:20: note: in expansion of macro ‘ALIGN_LINKAGE’ + SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void* ALIGN_NEW(std::size_t size, + ^~~~~~~~~~~~~ + +Bug: 819294 +Change-Id: I0aa16ea88cead42e83796a1c86afad8b447ddc50 +Reviewed-on: https://chromium-review.googlesource.com/c/1458256 +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Reviewed-by: Thomas Anderson <thomasanderson@chromium.org> +Reviewed-by: Primiano Tucci <primiano@chromium.org> +Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#630084} +--- + .../allocator_shim_override_cpp_symbols.h | 20 +++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/base/allocator/allocator_shim_override_cpp_symbols.h b/base/allocator/allocator_shim_override_cpp_symbols.h +index 1228f5e33d28..01d25b7f6437 100644 +--- a/base/allocator/allocator_shim_override_cpp_symbols.h ++++ b/base/allocator/allocator_shim_override_cpp_symbols.h +@@ -96,57 +96,57 @@ SHIM_ALWAYS_EXPORT void operator delete[](void* p, size_t) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void* ALIGN_NEW(std::size_t size, ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void* ALIGN_NEW(std::size_t size, + ALIGN_VAL_T alignment) { + return ShimCppAlignedNew(size, static_cast<size_t>(alignment)); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void* ALIGN_NEW_NOTHROW( ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void* ALIGN_NEW_NOTHROW( + std::size_t size, + ALIGN_VAL_T alignment, + const std::nothrow_t&) __THROW { + return ShimCppAlignedNew(size, static_cast<size_t>(alignment)); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ALIGN_DEL(void* p, ALIGN_VAL_T) __THROW { ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void ALIGN_DEL(void* p, ALIGN_VAL_T) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ALIGN_DEL_SIZED(void* p, ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void ALIGN_DEL_SIZED(void* p, + std::size_t size, + ALIGN_VAL_T) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void + ALIGN_DEL_NOTHROW(void* p, ALIGN_VAL_T, const std::nothrow_t&) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void* ALIGN_NEW_ARR(std::size_t size, ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void* ALIGN_NEW_ARR(std::size_t size, + ALIGN_VAL_T alignment) { + return ShimCppAlignedNew(size, static_cast<size_t>(alignment)); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void* ALIGN_NEW_ARR_NOTHROW( ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void* ALIGN_NEW_ARR_NOTHROW( + std::size_t size, + ALIGN_VAL_T alignment, + const std::nothrow_t&) __THROW { + return ShimCppAlignedNew(size, static_cast<size_t>(alignment)); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ALIGN_DEL_ARR(void* p, ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void ALIGN_DEL_ARR(void* p, + ALIGN_VAL_T) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ALIGN_DEL_ARR_SIZED(void* p, ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void ALIGN_DEL_ARR_SIZED(void* p, + std::size_t size, + ALIGN_VAL_T) __THROW { + ShimCppDelete(p); + } + +-SHIM_ALWAYS_EXPORT ALIGN_LINKAGE void ++ALIGN_LINKAGE SHIM_ALWAYS_EXPORT void + ALIGN_DEL_ARR_NOTHROW(void* p, ALIGN_VAL_T, const std::nothrow_t&) __THROW { + ShimCppDelete(p); + } +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-1.patch b/www-client/chromium/files/chromium-73-gcc-1.patch new file mode 100644 index 0000000..c3f8e42 --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-1.patch @@ -0,0 +1,99 @@ +From 130a5ae24a02daba8729ba2216bcaf3dbfacea69 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Fri, 8 Feb 2019 16:58:38 +0000 +Subject: [PATCH] media::learning: Make LabelledExample's move assignment + operator noexcept +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The GCC build is currently broken with an error like this: + + ../../media/learning/common/labelled_example.cc:20:1: error: function ‘media::learning::LabelledExample::LabelledExample(media::learning::LabelledExample&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’ + LabelledExample::LabelledExample(LabelledExample&& rhs) noexcept = default; + ^~~~~~~~~~~~~~~ + +With GCC, having that noexcept marker requires all members to be marked with +noexcept themselves, and TargetValue was missing some assignment operators +and noexcept markers. + +clang is fine because we pass -fno-exceptions and it disables the same error +there, while GCC continues to raise it (bug 843143 and its corresponding CL +have a longer discussion on this issue). + +Bug: 819294 +Change-Id: Ide30932fc466ccb52d6883a82777e703dae48798 +Reviewed-on: https://chromium-review.googlesource.com/c/1458210 +Commit-Queue: Frank Liberato <liberato@chromium.org> +Reviewed-by: Frank Liberato <liberato@chromium.org> +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#630355} +--- + media/learning/common/labelled_example.cc | 3 ++- + media/learning/common/labelled_example.h | 2 +- + media/learning/common/value.cc | 6 ++++++ + media/learning/common/value.h | 4 ++++ + 4 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/media/learning/common/labelled_example.cc b/media/learning/common/labelled_example.cc +index 76d08509298e..43e834f9f3cf 100644 +--- a/media/learning/common/labelled_example.cc ++++ b/media/learning/common/labelled_example.cc +@@ -59,7 +59,8 @@ bool LabelledExample::operator<(const LabelledExample& rhs) const { + LabelledExample& LabelledExample::operator=(const LabelledExample& rhs) = + default; + +-LabelledExample& LabelledExample::operator=(LabelledExample&& rhs) = default; ++LabelledExample& LabelledExample::operator=(LabelledExample&& rhs) noexcept = ++ default; + + TrainingData::TrainingData() = default; + +diff --git a/media/learning/common/labelled_example.h b/media/learning/common/labelled_example.h +index 4f43c54e7a76..365abc3c0ebf 100644 +--- a/media/learning/common/labelled_example.h ++++ b/media/learning/common/labelled_example.h +@@ -40,7 +40,7 @@ struct COMPONENT_EXPORT(LEARNING_COMMON) LabelledExample { + bool operator<(const LabelledExample& rhs) const; + + LabelledExample& operator=(const LabelledExample& rhs); +- LabelledExample& operator=(LabelledExample&& rhs); ++ LabelledExample& operator=(LabelledExample&& rhs) noexcept; + + // Observed feature values. + // Note that to interpret these values, you probably need to have the +diff --git a/media/learning/common/value.cc b/media/learning/common/value.cc +index 9c9395c25d4e..12ea399d24c3 100644 +--- a/media/learning/common/value.cc ++++ b/media/learning/common/value.cc +@@ -23,6 +23,12 @@ Value::Value(const std::string& x) : value_(base::PersistentHash(x)) {} + + Value::Value(const Value& other) : value_(other.value_) {} + ++Value::Value(Value&& rhs) noexcept = default; ++ ++Value& Value::operator=(const Value& rhs) = default; ++ ++Value& Value::operator=(Value&& rhs) noexcept = default; ++ + bool Value::operator==(const Value& rhs) const { + return value_ == rhs.value_; + } +diff --git a/media/learning/common/value.h b/media/learning/common/value.h +index 0e64da961f34..62f4953f691c 100644 +--- a/media/learning/common/value.h ++++ b/media/learning/common/value.h +@@ -38,6 +38,10 @@ class COMPONENT_EXPORT(LEARNING_COMMON) Value { + explicit Value(const std::string& x); + + Value(const Value& other); ++ Value(Value&&) noexcept; ++ ++ Value& operator=(const Value&); ++ Value& operator=(Value&&) noexcept; + + bool operator==(const Value& rhs) const; + bool operator!=(const Value& rhs) const; +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-2.patch b/www-client/chromium/files/chromium-73-gcc-2.patch new file mode 100644 index 0000000..9d1f05a --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-2.patch @@ -0,0 +1,51 @@ +From a5ba6f9bb7665040045dc0f8087407096630ad7b Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Fri, 8 Feb 2019 02:57:28 +0000 +Subject: [PATCH] color_utils: Use std::sqrt() instead of std::sqrtf() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes the build with libstdc++: + + ../../ui/gfx/color_utils.cc: In function ‘SkColor color_utils::SetDarkestColorForTesting(SkColor)’: + ../../ui/gfx/color_utils.cc:434:12: error: ‘sqrtf’ is not a member of ‘std’ + std::sqrtf((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; + ^~~~~ + ../../ui/gfx/color_utils.cc:434:12: note: suggested alternative: ‘sqrt’ + std::sqrtf((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; + ^~~~~ + sqrt + +sqrtf() is not formally part of C++14 as far as I can see even though libc++ +has it in <cmath>. Additionally, we're only dealing with floats in all parts +of the expression above, so using the float sqrt() overload should be +harmless anyway. + +Bug: 819294 +Change-Id: If6c7bf31819df97a761e6963def6d6506154c34d +Reviewed-on: https://chromium-review.googlesource.com/c/1458193 +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Reviewed-by: Peter Kasting <pkasting@chromium.org> +Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#630140} +--- + ui/gfx/color_utils.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ui/gfx/color_utils.cc b/ui/gfx/color_utils.cc +index c868cd54bac3..92ba1407d594 100644 +--- a/ui/gfx/color_utils.cc ++++ b/ui/gfx/color_utils.cc +@@ -431,7 +431,7 @@ SkColor SetDarkestColorForTesting(SkColor color) { + // GetContrastRatio(kWhiteLuminance, g_luminance_midpoint). The formula below + // can be verified by plugging it into how GetContrastRatio() operates. + g_luminance_midpoint = +- std::sqrtf((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; ++ std::sqrt((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; + + return previous_darkest_color; + } +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-3.patch b/www-client/chromium/files/chromium-73-gcc-3.patch new file mode 100644 index 0000000..9cc6cf2 --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-3.patch @@ -0,0 +1,69 @@ +From c33e832cc145c696d2157796c7640e659740dafa Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Fri, 8 Feb 2019 08:44:00 +0000 +Subject: [PATCH] quic_flags_impl: Fix GCC build after #618558 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84849, having +base::NoDestructor<T<U>> and passing an initializer list of Us does not +work if this is not done explicitly, as GCC incorrectly fails to determine +which constructor overload to use: + + ../../net/third_party/quic/platform/impl/quic_flags_impl.cc: In member function ‘bool quic::TypedQuicFlagHelper<T>::SetFlag(const string&) const [with T = bool; std::__cxx11::string = std::__cxx11::basic_string<char>]’: + ../../net/third_party/quic/platform/impl/quic_flags_impl.cc:156:41: error: call of overloaded ‘NoDestructor(<brace-enclosed initializer list>)’ is ambiguous + {"", "1", "t", "true", "y", "yes"}); + ^ + In file included from ../../net/third_party/quic/platform/impl/quic_flags_impl.h:16, + from ../../net/third_party/quic/platform/impl/quic_flags_impl.cc:5: + ../../base/no_destructor.h:62:3: note: candidate: ‘base::NoDestructor<T>::NoDestructor(const base::NoDestructor<T>&) [with T = std::set<std::__cxx11::basic_string<char> >]’ <deleted> + NoDestructor(const NoDestructor&) = delete; + ^~~~~~~~~~~~ + ../../base/no_destructor.h:60:12: note: candidate: ‘base::NoDestructor<T>::NoDestructor(T&&) [with T = std::set<std::__cxx11::basic_string<char> >]’ + explicit NoDestructor(T&& x) { new (storage_) T(std::move(x)); } + ^~~~~~~~~~~~ + ../../base/no_destructor.h:59:12: note: candidate: ‘base::NoDestructor<T>::NoDestructor(const T&) [with T = std::set<std::__cxx11::basic_string<char> >]’ + explicit NoDestructor(const T& x) { new (storage_) T(x); } + ^~~~~~~~~~~~ + +Explicitly use an std::initializer_list to make the build work everywhere. + +Bug: 819294 +Change-Id: I775be20e3766a88a656b58c94c40869cb1bee2a8 +Reviewed-on: https://chromium-review.googlesource.com/c/1458214 +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Reviewed-by: Ryan Hamilton <rch@chromium.org> +Commit-Queue: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#630249} +--- + net/third_party/quic/platform/impl/quic_flags_impl.cc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/net/third_party/quic/platform/impl/quic_flags_impl.cc b/net/third_party/quic/platform/impl/quic_flags_impl.cc +index 5e6962d1e770..3fa45fc6892d 100644 +--- a/net/third_party/quic/platform/impl/quic_flags_impl.cc ++++ b/net/third_party/quic/platform/impl/quic_flags_impl.cc +@@ -5,6 +5,7 @@ + #include "net/third_party/quic/platform/impl/quic_flags_impl.h" + + #include <algorithm> ++#include <initializer_list> + #include <iostream> + #include <set> + +@@ -153,9 +154,9 @@ std::string QuicFlagRegistry::GetHelp() const { + template <> + bool TypedQuicFlagHelper<bool>::SetFlag(const std::string& s) const { + static const base::NoDestructor<std::set<std::string>> kTrueValues( +- {"", "1", "t", "true", "y", "yes"}); ++ std::initializer_list<std::string>({"", "1", "t", "true", "y", "yes"})); + static const base::NoDestructor<std::set<std::string>> kFalseValues( +- {"0", "f", "false", "n", "no"}); ++ std::initializer_list<std::string>({"0", "f", "false", "n", "no"})); + if (kTrueValues->find(base::ToLowerASCII(s)) != kTrueValues->end()) { + *flag_ = true; + return true; +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-4.patch b/www-client/chromium/files/chromium-73-gcc-4.patch new file mode 100644 index 0000000..df7d630 --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-4.patch @@ -0,0 +1,59 @@ +From bdd76190e54e6a0e11343dd19e4bf1d06956fa48 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Wed, 13 Feb 2019 01:02:27 +0000 +Subject: [PATCH] BaseRenderingContext2D: Use base::CheckMul and simplify code + in putImageData() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Follow-up to commit e0b3253a56 ("Fix image conversion truncation issues"). +The current code does not build with GCC due to +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89287: + + ../../third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc: In member function ‘void blink::BaseRenderingContext2D::putImageData(blink::ImageData*, int, int, int, int, int, int, blink::ExceptionState&)’: + ../../third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc:1777:44: error: default type conversion can't deduce template argument for ‘template<class Dst, typename std::enable_if<base::internal::IsNumericRangeContained<Dst, long unsigned int, void>::value, void>::type* <anonymous> > constexpr base::internal::StrictNumeric<T>::operator Dst() const [with Dst = Dst; typename std::enable_if<base::internal::IsNumericRangeContained<Dst, T>::value>::type* <anonymous> = <enumerator>; T = long unsigned int]’ + new uint8_t[data_length.ValueOrDie()]); + ^ + +Work around it by using the more idiomatic base::CheckMul() with +AssignIfValid, so that we can have |data_length| be a size_t again and not +leave it to the compiler to figure out the type we want when creating the +|converted_pixels| array. + +Bug: 819294 +Change-Id: Id124cc4f3d749b45def4708e21e4badafd708578 +Reviewed-on: https://chromium-review.googlesource.com/c/1467201 +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Commit-Queue: Kentaro Hara <haraken@chromium.org> +Reviewed-by: Kentaro Hara <haraken@chromium.org> +Cr-Commit-Position: refs/heads/master@{#631472} +--- + .../canvas/canvas2d/base_rendering_context_2d.cc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +index d9fa696c9a9d..34a8a202bfd3 100644 +--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc ++++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +@@ -1769,12 +1769,12 @@ void BaseRenderingContext2D::putImageData(ImageData* data, + CanvasColorParams(ColorParams().ColorSpace(), PixelFormat(), kNonOpaque); + if (data_color_params.NeedsColorConversion(context_color_params) || + PixelFormat() == kF16CanvasPixelFormat) { +- base::CheckedNumeric<size_t> data_length = data->Size().Area(); +- data_length *= context_color_params.BytesPerPixel(); +- if (!data_length.IsValid()) ++ size_t data_length; ++ if (!base::CheckMul(data->Size().Area(), ++ context_color_params.BytesPerPixel()) ++ .AssignIfValid(&data_length)) + return; +- std::unique_ptr<uint8_t[]> converted_pixels( +- new uint8_t[data_length.ValueOrDie()]); ++ std::unique_ptr<uint8_t[]> converted_pixels(new uint8_t[data_length]); + if (data->ImageDataInCanvasColorSettings( + ColorParams().ColorSpace(), PixelFormat(), converted_pixels.get(), + kRGBAColorType)) { +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-5.patch b/www-client/chromium/files/chromium-73-gcc-5.patch new file mode 100644 index 0000000..033861e --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-5.patch @@ -0,0 +1,65 @@ +From 78b0f0dfa9e6f3c37b71102c01def92f1ab8c330 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Wed, 13 Feb 2019 23:28:46 +0000 +Subject: [PATCH] CastActivityManager: Do not make DoLaunchSessionParams' move + constructor noexcept +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes the GCC build: + + ../../chrome/browser/media/router/providers/cast/cast_activity_manager.cc:806:1: error: function ‘media_router::CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams(media_router::CastActivityManager::DoLaunchSessionParams&&)’ defaulted on its redeclaration with an exception-specification that differs from the implicit exception-specification ‘’ + CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( + ^~~~~~~~~~~~~~~~~~~ + +With GCC, having that noexcept marker requires all members to be marked with +noexcept themselves, and MediaRoute, CastMediaSource and url::Origin need +the right annotations. Just making DoLaunchSessionParams not noexcept is the +least intrusive solution for now. + +clang is fine because we pass -fno-exceptions and it disables the same error +there, while GCC continues to raise it (bug 843143 and its corresponding CL +have a longer discussion on this issue). + +Bug: 819294 +Change-Id: Ia3a5fb60b5e74e68bd35cfa50e2fcc728b64e5eb +Reviewed-on: https://chromium-review.googlesource.com/c/1469942 +Commit-Queue: mark a. foltz <mfoltz@chromium.org> +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Reviewed-by: mark a. foltz <mfoltz@chromium.org> +Cr-Commit-Position: refs/heads/master@{#631962} +--- + .../media/router/providers/cast/cast_activity_manager.cc | 2 +- + .../browser/media/router/providers/cast/cast_activity_manager.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +index b7ee9695f69a..8569e0cd30a3 100644 +--- a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc ++++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +@@ -804,7 +804,7 @@ CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( + callback(std::move(callback)) {} + + CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( +- DoLaunchSessionParams&& other) noexcept = default; ++ DoLaunchSessionParams&& other) = default; + + CastActivityManager::DoLaunchSessionParams::~DoLaunchSessionParams() = default; + +diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.h b/chrome/browser/media/router/providers/cast/cast_activity_manager.h +index 325bffc725ee..08fe0ccca603 100644 +--- a/chrome/browser/media/router/providers/cast/cast_activity_manager.h ++++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.h +@@ -295,7 +295,7 @@ class CastActivityManager : public cast_channel::CastMessageHandler::Observer, + const url::Origin& origin, + int tab_id, + mojom::MediaRouteProvider::CreateRouteCallback callback); +- DoLaunchSessionParams(DoLaunchSessionParams&& other) noexcept; ++ DoLaunchSessionParams(DoLaunchSessionParams&& other); + ~DoLaunchSessionParams(); + DoLaunchSessionParams& operator=(DoLaunchSessionParams&&) = delete; + +-- +2.20.1 + diff --git a/www-client/chromium/files/chromium-73-gcc-6.patch b/www-client/chromium/files/chromium-73-gcc-6.patch new file mode 100644 index 0000000..3cd72ab --- /dev/null +++ b/www-client/chromium/files/chromium-73-gcc-6.patch @@ -0,0 +1,88 @@ +From cf4c534f04c223f8a9d65407852e2a531a6d7fb6 Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Thu, 14 Feb 2019 22:22:21 +0000 +Subject: [PATCH] chrome/browser: Replace some forward declarations with actual + includes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes the GCC build which was failing like this: + + ../../base/scoped_observer.h: In instantiation of ‘void ScopedObserver<Source, Observer>::RemoveAll() [with Source = TabStripModel; Observer = TabStripModelObserver]’: + ../../base/scoped_observer.h:26:5: required from ‘ScopedObserver<Source, Observer>::~ScopedObserver() [with Source = TabStripModel; Observer = TabStripModelObserver]’ + ../../chrome/browser/ui/views/extensions/extension_popup.h:115:70: required from here + ../../base/scoped_observer.h:45:20: error: invalid use of incomplete type ‘class TabStripModel’ + sources_[i]->RemoveObserver(observer_); + ~~~~~~~~~~~~~^~~~~~~~~~~~~~ + +This is caused by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89311 ("Brace +initialization needlessly invokes destructor"), i.e. having something like + + ScopedObserver<T, U> observer_{this}; + +in a header declaration requires T and U to be fully declared because +ScopedObserver's destructor references them. In a few cases, T was only +forward-declared. + +Bug: 819294 +Change-Id: Ie5b9dc2745e27d4532c5539e3845a8c9147a0595 +Reviewed-on: https://chromium-review.googlesource.com/c/1472576 +Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Commit-Queue: Alan Cutter <alancutter@chromium.org> +Reviewed-by: Finnur Thorarinsson <finnur@chromium.org> +Reviewed-by: Alan Cutter <alancutter@chromium.org> +Cr-Commit-Position: refs/heads/master@{#632385} +--- + chrome/browser/ui/views/extensions/extension_popup.cc | 1 - + chrome/browser/ui/views/extensions/extension_popup.h | 1 + + chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc | 1 - + chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h | 2 +- + .../web_applications/extensions/bookmark_app_tab_helper.cc | 1 - + .../web_applications/extensions/bookmark_app_tab_helper.h | 2 +- + 6 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc +index 3f0985d383dd..57d16aba9e9f 100644 +--- a/chrome/browser/ui/views/extensions/extension_popup.cc ++++ b/chrome/browser/ui/views/extensions/extension_popup.cc +@@ -8,7 +8,6 @@ + #include "chrome/browser/devtools/devtools_window.h" + #include "chrome/browser/extensions/extension_view_host.h" + #include "chrome/browser/ui/browser.h" +-#include "chrome/browser/ui/tabs/tab_strip_model.h" + #include "content/public/browser/devtools_agent_host.h" + #include "content/public/browser/notification_details.h" + #include "content/public/browser/notification_source.h" +diff --git a/chrome/browser/ui/views/extensions/extension_popup.h b/chrome/browser/ui/views/extensions/extension_popup.h +index 3661b5bda950..9018efa0fea5 100644 +--- a/chrome/browser/ui/views/extensions/extension_popup.h ++++ b/chrome/browser/ui/views/extensions/extension_popup.h +@@ -9,6 +9,7 @@ + #include "base/compiler_specific.h" + #include "base/macros.h" + #include "base/scoped_observer.h" ++#include "chrome/browser/ui/tabs/tab_strip_model.h" + #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" + #include "chrome/browser/ui/views/extensions/extension_view_views.h" + #include "content/public/browser/devtools_agent_host_observer.h" +diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h +index 2a3ea8e4f91f..ac44a4f05dec 100644 +--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h ++++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h +@@ -8,6 +8,7 @@ + #include "base/macros.h" + #include "base/memory/weak_ptr.h" + #include "base/scoped_observer.h" ++#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" + #include "chrome/browser/ui/toolbar/toolbar_actions_bar_observer.h" + #include "chrome/browser/ui/views/frame/app_menu_button_observer.h" + #include "ui/views/controls/scroll_view.h" +@@ -16,7 +17,6 @@ class AppMenu; + class AppMenuButton; + class Browser; + class BrowserActionsContainer; +-class ToolbarActionsBar; + + namespace views { + class MenuItemView; diff --git a/www-client/chromium/files/chromium-74-gcc.patch b/www-client/chromium/files/chromium-74-gcc.patch new file mode 100644 index 0000000..d4829ff --- /dev/null +++ b/www-client/chromium/files/chromium-74-gcc.patch @@ -0,0 +1,25 @@ +diff --git a/third_party/dav1d/BUILD.gn b/third_party/dav1d/BUILD.gn +index aedc658c3..4baeac7df 100644 +--- a/third_party/dav1d/BUILD.gn ++++ b/third_party/dav1d/BUILD.gn +@@ -31,9 +31,9 @@ if (current_cpu == "x86" || current_cpu == "x64") { + } else { + needs_stack_alignment = true + if (current_cpu == "x86") { +- stack_alignment = 16 ++ stack_alignment = 4 + } else if (current_cpu == "x64") { +- stack_alignment = 32 ++ stack_alignment = 5 + } + } + } else { +@@ -73,7 +73,7 @@ dav1d_copts = [ + if (!is_win) { + dav1d_copts += [ "-std=c99" ] + if (needs_stack_alignment) { +- dav1d_copts += [ "-mstack-alignment=$stack_alignment" ] ++ dav1d_copts += [ "-mpreferred-stack-boundary=$stack_alignment" ] + } + } + diff --git a/www-client/chromium/files/chromium-75-vaapi.patch b/www-client/chromium/files/chromium-75-vaapi.patch new file mode 100644 index 0000000..7e08455 --- /dev/null +++ b/www-client/chromium/files/chromium-75-vaapi.patch @@ -0,0 +1,254 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index cb04c939a..dc1a995a6 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1434,7 +1434,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_WIN) +@@ -1980,12 +1980,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +@@ -3696,10 +3696,10 @@ const FeatureEntry kFeatureEntries[] = { + "AutofillDropdownLayout")}, + #endif // OS_ANDROID + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"enable-vaapi-jpeg-image-decode-acceleration", + flag_descriptions::kVaapiJpegImageDecodeAccelerationName, +- flag_descriptions::kVaapiJpegImageDecodeAccelerationDescription, kOsCrOS, ++ flag_descriptions::kVaapiJpegImageDecodeAccelerationDescription, kOsCrOS | kOsLinux, + FEATURE_VALUE_TYPE(features::kVaapiJpegImageDecodeAcceleration)}, + #endif + +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 7457414f6..5c84e90f6 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2991,13 +2991,22 @@ const char kMacViewsTaskManagerDescription[] = + + // 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."; ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +@@ -3437,12 +3446,6 @@ const char kUserActivityPredictionMlServiceName[] = + const char kUserActivityPredictionMlServiceDescription[] = + "Uses the new ML Service model for user activity prediction (Smart Dim)."; + +-const char kVaapiJpegImageDecodeAccelerationName[] = +- "VA-API JPEG decode acceleration for images"; +-const char kVaapiJpegImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of JPEG images (as opposed to camera" +- " captures) using the VA-API."; +- + const char kVideoPlayerChromecastSupportName[] = + "Experimental Chromecast support for Video Player"; + const char kVideoPlayerChromecastSupportDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 11e45a0ac..d7cbf8394 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1779,11 +1779,17 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +@@ -2059,9 +2065,6 @@ extern const char kUseMonitorColorSpaceDescription[]; + extern const char kUserActivityPredictionMlServiceName[]; + extern const char kUserActivityPredictionMlServiceDescription[]; + +-extern const char kVaapiJpegImageDecodeAccelerationName[]; +-extern const char kVaapiJpegImageDecodeAccelerationDescription[]; +- + extern const char kVideoPlayerChromecastSupportName[]; + extern const char kVideoPlayerChromecastSupportDescription[]; + +diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc +index 284d0167d..87d5e14c5 100644 +--- a/components/viz/service/main/viz_main_impl.cc ++++ b/components/viz/service/main/viz_main_impl.cc +@@ -36,7 +36,7 @@ std::unique_ptr<base::Thread> CreateAndStartIOThread() { + // It should be possible to use |main_task_runner_| for doing IO tasks. + base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0); + thread_options.priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // TODO(reveman): Remove this in favor of setting it explicitly for each + // type of process. + thread_options.priority = base::ThreadPriority::DISPLAY; +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 2b1165264..fec963bd9 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -127,4 +128,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc +index a838f0ccf..4c891fb92 100644 +--- a/content/gpu/gpu_main.cc ++++ b/content/gpu/gpu_main.cc +@@ -288,7 +288,7 @@ int GpuMain(const MainFunctionParams& parameters) { + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -321,7 +321,7 @@ int GpuMain(const MainFunctionParams& parameters) { + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index d4c3b4364..935fdeb86 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -369,17 +369,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index b3477148d..477caecdb 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -517,7 +517,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeJpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index 81c1e4fca..81996bc56 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -212,7 +213,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index b1750d527..cc1ad45af 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -512,6 +512,13 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ ++ + if (use_v4l2_codec || use_vaapi) { + test("jpeg_encode_accelerator_unittest") { + deps = [ +@@ -582,6 +589,7 @@ if (is_chromeos || is_linux) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + diff --git a/www-client/chromium/files/chromium-76-arm64-skia.patch b/www-client/chromium/files/chromium-76-arm64-skia.patch new file mode 100644 index 0000000..8a44235 --- /dev/null +++ b/www-client/chromium/files/chromium-76-arm64-skia.patch @@ -0,0 +1,41 @@ +From 7aacb0b30a86936aedd1308708d1a51d951197f2 Mon Sep 17 00:00:00 2001 +From: Mike Klein <mtklein@google.com> +Date: Tue, 02 Jul 2019 13:23:06 -0500 +Subject: [PATCH] fix GCC arm64 builds + +These two guards are checking if we're building for aarch64 and thus +have F16 conversion instructions, but weren't checking if we want to use +them (if we have them _and_ we're being compiled by Clang). At head +we're trying to pass a 2-byte uint16_t to a function expecting an 8-byte +uint16x4_t, etc. + +Change-Id: I21f6cd2100ec81ccdd47c4ec0575107624cd7c5a +Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225257 +Reviewed-by: Herb Derby <herb@google.com> +Commit-Queue: Mike Klein <mtklein@google.com> +--- + +diff --git a/third_party/skia/src/opts/SkRasterPipeline_opts.h b/third_party/skia/src/opts/SkRasterPipeline_opts.h +index 0eae9fe..e05f36c 100644 +--- a/third_party/skia/src/opts/SkRasterPipeline_opts.h ++++ b/third_party/skia/src/opts/SkRasterPipeline_opts.h +@@ -972,7 +972,8 @@ + } + + SI F from_half(U16 h) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ ++ && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f32_f16(h); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) +@@ -992,7 +993,8 @@ + } + + SI U16 to_half(F f) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \ ++ && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds. + return vcvt_f16_f32(f); + + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) diff --git a/www-client/chromium/files/chromium-76-gcc-ambiguous-nodestructor.patch b/www-client/chromium/files/chromium-76-gcc-ambiguous-nodestructor.patch new file mode 100644 index 0000000..587abf3 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-ambiguous-nodestructor.patch @@ -0,0 +1,39 @@ +From 52b5ceac95b67491b1c71f0ef9a32b778bbbaa2e Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Wed, 05 Jun 2019 19:46:55 +0000 +Subject: [PATCH] GCC: avoid ambiguous NoDestructor creation in GetNeverSniffedMimeTypes. + +Use brace-list notation to wrap the already existing brace-list for +initializing the flat-set. This resolves an ambiguous instantiation +in GCC. + +Bug: 819294 +Change-Id: I89ddf12522d62a5140a8c2c41dc98e30ec7a0e78 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645774 +Reviewed-by: Matt Menke <mmenke@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#666401} +--- + +diff --git a/services/network/cross_origin_read_blocking.cc b/services/network/cross_origin_read_blocking.cc +index 30999c0..60a03f6 100644 +--- a/services/network/cross_origin_read_blocking.cc ++++ b/services/network/cross_origin_read_blocking.cc +@@ -211,7 +211,7 @@ + // confirmation sniffing because images, scripts, etc. are frequently + // mislabelled by http servers as HTML/JSON/XML). + base::flat_set<std::string>& GetNeverSniffedMimeTypes() { +- static base::NoDestructor<base::flat_set<std::string>> s_types({ ++ static base::NoDestructor<base::flat_set<std::string>> s_types{{ + // The list below has been populated based on most commonly used content + // types according to HTTP Archive - see: + // https://github.com/whatwg/fetch/issues/860#issuecomment-457330454 +@@ -224,7 +224,7 @@ + "application/x-www-form-urlencoded", + "application/zip", + "text/event-stream", +- }); ++ }}; + + // All items need to be lower-case, to support case-insensitive comparisons + // later. diff --git a/www-client/chromium/files/chromium-76-gcc-blink-constexpr.patch b/www-client/chromium/files/chromium-76-gcc-blink-constexpr.patch new file mode 100644 index 0000000..26bba05 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-blink-constexpr.patch @@ -0,0 +1,32 @@ +From cf6d6b40d711fce93a24a2cf517fa3becdbae8bb Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Wed, 05 Jun 2019 17:18:40 +0000 +Subject: [PATCH] Make blink::LayoutUnit::HasFraction constexpr + +Other HasFraction methods as in PhysicalUnit are declared already +constexpr and using it. It breaks GCC build. + +Bug: 819294. +Change-Id: I0c4bd9bd206d45cf31f7fa815ce8533718a425cb +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645222 +Reviewed-by: vmpstr <vmpstr@chromium.org> +Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#666336} +--- + +diff --git a/third_party/blink/renderer/platform/geometry/layout_unit.h b/third_party/blink/renderer/platform/geometry/layout_unit.h +index f073986..b6dbc76 100644 +--- a/third_party/blink/renderer/platform/geometry/layout_unit.h ++++ b/third_party/blink/renderer/platform/geometry/layout_unit.h +@@ -202,7 +202,9 @@ + return value_ > 0 ? LayoutUnit() : *this; + } + +- bool HasFraction() const { return RawValue() % kFixedPointDenominator; } ++ constexpr bool HasFraction() const { ++ return RawValue() % kFixedPointDenominator; ++ } + + LayoutUnit Fraction() const { + // Compute fraction using the mod operator to preserve the sign of the value diff --git a/www-client/chromium/files/chromium-76-gcc-blink-namespace1.patch b/www-client/chromium/files/chromium-76-gcc-blink-namespace1.patch new file mode 100644 index 0000000..bae3ede --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-blink-namespace1.patch @@ -0,0 +1,91 @@ +From c6afbd59c997c2b64f11abdd1eaef71ae8ea2ddc Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 07 Jun 2019 18:11:15 +0000 +Subject: [PATCH] GCC: FeaturePolicyParser ParseValueForFuzzer is not in anonymous namespace + +Compilation fails because we are declaring ParseValueForFuzzer as friend method, +but we are declaring it is in anonymous namespace. Moving to global namespace +still fails (in this case in Clang). + +So final solution is making it a public static method of FeaturePolicyParser. + +Bug: 819294 +Change-Id: Iea307cb6faef675b748d6eb5da2175dcbb17fdc7 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645223 +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Reviewed-by: Luna Lu <loonybear@chromium.org> +Cr-Commit-Position: refs/heads/master@{#667228} +--- + +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc +index f1c9594..bae91a1 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.cc +@@ -323,6 +323,13 @@ + return value; + } + ++void FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType feature_type, ++ const WTF::String& value_string) { ++ bool ok; ++ ParseValueForType(feature_type, value_string, &ok); ++} ++ + bool IsFeatureDeclared(mojom::FeaturePolicyFeature feature, + const ParsedFeaturePolicy& policy) { + return std::any_of(policy.begin(), policy.end(), +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h +index fd25d90..8aa7323 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_parser.h +@@ -16,9 +16,6 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + +-// Forward declare for friendship. +-void ParseValueForFuzzer(blink::mojom::PolicyValueType, const WTF::String&); +- + namespace blink { + + class Document; +@@ -79,8 +76,10 @@ + const FeatureNameMap& feature_names, + ExecutionContext* execution_context = nullptr); + ++ // Used for LLVM fuzzer test ++ static void ParseValueForFuzzer(mojom::PolicyValueType, const String&); ++ + private: +- friend void ::ParseValueForFuzzer(mojom::PolicyValueType, const String&); + static PolicyValue GetFallbackValueForFeature( + mojom::FeaturePolicyFeature feature); + static PolicyValue ParseValueForType(mojom::PolicyValueType feature_type, +diff --git a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc +index 7f8e6aa..1455636 100644 +--- a/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc ++++ b/third_party/blink/renderer/core/feature_policy/feature_policy_value_fuzzer.cc +@@ -13,19 +13,12 @@ + #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + +-void ParseValueForFuzzer(blink::mojom::PolicyValueType feature_type, +- const WTF::String& value_string) { +- bool ok; +- blink::FeaturePolicyParser::ParseValueForType(feature_type, value_string, +- &ok); +-} +- + extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + static blink::BlinkFuzzerTestSupport test_support = + blink::BlinkFuzzerTestSupport(); +- ParseValueForFuzzer(blink::mojom::PolicyValueType::kBool, +- WTF::String(data, size)); +- ParseValueForFuzzer(blink::mojom::PolicyValueType::kDecDouble, +- WTF::String(data, size)); ++ blink::FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType::kBool, WTF::String(data, size)); ++ blink::FeaturePolicyParser::ParseValueForFuzzer( ++ blink::mojom::PolicyValueType::kDecDouble, WTF::String(data, size)); + return 0; + } diff --git a/www-client/chromium/files/chromium-76-gcc-blink-namespace2.patch b/www-client/chromium/files/chromium-76-gcc-blink-namespace2.patch new file mode 100644 index 0000000..1d4b90f --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-blink-namespace2.patch @@ -0,0 +1,97 @@ +From dcb55fb8f18abe5f43d260aa67b14b2dc996f992 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Tue, 11 Jun 2019 08:00:13 +0000 +Subject: [PATCH] GCC: move explicit specialization out of RunInfo + +Explicit specialization in non-namespace scope is not allowed in C++, and GCC breaks +build because of that. Move the template specializations out of RunInfo declaration +in shape_result_inline_headeres.h to fix the GCC build issue. + +Bug: 819294 +Change-Id: Id083852bcf8e9efbdc911fdad28fd8767d2905d0 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651728 +Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#667901} +--- + +diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +index 76ee6091..c14d3a0 100644 +--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h ++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +@@ -251,37 +251,6 @@ + template <bool has_non_zero_glyph_offsets> + struct iterator final {}; + +- // For non-zero glyph offset array +- template <> +- struct iterator<true> final { +- // The constructor for ShapeResult +- explicit iterator(const GlyphOffsetArray& array) +- : pointer(array.storage_.get()) { +- DCHECK(pointer); +- } +- +- // The constructor for ShapeResultView +- explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { +- DCHECK(pointer); +- } +- +- GlyphOffset operator*() const { return *pointer; } +- void operator++() { ++pointer; } +- +- const GlyphOffset* pointer; +- }; +- +- // For zero glyph offset array +- template <> +- struct iterator<false> final { +- explicit iterator(const GlyphOffsetArray& array) { +- DCHECK(!array.HasStorage()); +- } +- explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } +- GlyphOffset operator*() const { return GlyphOffset(); } +- void operator++() {} +- }; +- + template <bool has_non_zero_glyph_offsets> + iterator<has_non_zero_glyph_offsets> GetIterator() const { + return iterator<has_non_zero_glyph_offsets>(*this); +@@ -495,6 +464,37 @@ + float width_; + }; + ++// For non-zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<true> final { ++ // The constructor for ShapeResult ++ explicit iterator(const GlyphOffsetArray& array) ++ : pointer(array.storage_.get()) { ++ DCHECK(pointer); ++ } ++ ++ // The constructor for ShapeResultView ++ explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { ++ DCHECK(pointer); ++ } ++ ++ GlyphOffset operator*() const { return *pointer; } ++ void operator++() { ++pointer; } ++ ++ const GlyphOffset* pointer; ++}; ++ ++// For zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<false> final { ++ explicit iterator(const GlyphOffsetArray& array) { ++ DCHECK(!array.HasStorage()); ++ } ++ explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } ++ GlyphOffset operator*() const { return GlyphOffset(); } ++ void operator++() {} ++}; ++ + // Find the range of HarfBuzzRunGlyphData for the specified character index + // range. This function uses binary search twice, hence O(2 log n). + inline ShapeResult::RunInfo::GlyphDataRange diff --git a/www-client/chromium/files/chromium-76-gcc-gl-init.patch b/www-client/chromium/files/chromium-76-gcc-gl-init.patch new file mode 100644 index 0000000..3bf394f --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-gl-init.patch @@ -0,0 +1,33 @@ +From 7dc76c8d9f4cfbce7cf11424120aa6f6094916dc Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Wed, 05 Jun 2019 21:09:01 +0000 +Subject: [PATCH] GCC: XSetWindowAttributes struct initialization should keep order of declaration + +XSetWindowAttributes initialization of attributes in GLSurfaceGLX is not in the +same order of the declaration. GCC fails because of that. + +Bug: 819294 +Change-Id: I8a97da980d5961a35a47ae4d0d8d558b85291f1f +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1646253 +Reviewed-by: Zhenyao Mo <zmo@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#666436} +--- + +diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc +index f649dd4..0aa6892 100644 +--- a/ui/gl/gl_surface_glx.cc ++++ b/ui/gl/gl_surface_glx.cc +@@ -583,10 +583,10 @@ + + XSetWindowAttributes swa = { + .background_pixmap = 0, +- .bit_gravity = NorthWestGravity, +- .colormap = g_colormap, + .background_pixel = 0, // ARGB(0,0,0,0) for compositing WM + .border_pixel = 0, ++ .bit_gravity = NorthWestGravity, ++ .colormap = g_colormap, + }; + auto value_mask = CWBackPixmap | CWBitGravity | CWColormap | CWBorderPixel; + if (ui::IsCompositingManagerPresent() && diff --git a/www-client/chromium/files/chromium-76-gcc-include.patch b/www-client/chromium/files/chromium-76-gcc-include.patch new file mode 100644 index 0000000..adc7f3a --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-include.patch @@ -0,0 +1,10 @@ +--- a/chrome/browser/themes/theme_service.h 2019-06-13 18:56:30.000000000 -0000 ++++ b/chrome/browser/themes/theme_service.h 2019-06-17 08:50:57.714289399 -0000 +@@ -26,6 +26,7 @@ + #include "extensions/common/extension_id.h" + #include "ui/base/theme_provider.h" + #include "ui/native_theme/native_theme_observer.h" ++#include "ui/native_theme/native_theme.h" + + class BrowserThemePack; + class CustomThemeSupplier; diff --git a/www-client/chromium/files/chromium-76-gcc-noexcept.patch b/www-client/chromium/files/chromium-76-gcc-noexcept.patch new file mode 100644 index 0000000..2a7f4b3 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-noexcept.patch @@ -0,0 +1,347 @@ +From 84c91abab33966f928497c24db4a39f436d2dca8 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 07 Jun 2019 09:50:11 +0000 +Subject: [PATCH] Make SharedMemoryMapping move constructor noexcept + +As LayerTreeHostImpl::UIResourceData move constructor is declared +noexcept with default implementation, the move constructor of its +members should also be noexcept. GCC will fail to build otherwise +for mismatching noexcept declaration. + +We also set the move assignment operator. + +Bug: 819294 +Change-Id: Icd663da83b882e15f7d16780c9241972e09bc492 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645297 +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Reviewed-by: Daniel Cheng <dcheng@chromium.org> +Cr-Commit-Position: refs/heads/master@{#667064} +--- + +diff --git a/base/memory/shared_memory_mapping.cc b/base/memory/shared_memory_mapping.cc +index 2be2570..8426fa8 100644 +--- a/base/memory/shared_memory_mapping.cc ++++ b/base/memory/shared_memory_mapping.cc +@@ -33,7 +33,7 @@ + + SharedMemoryMapping::SharedMemoryMapping() = default; + +-SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping) ++SharedMemoryMapping::SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept + : memory_(mapping.memory_), + size_(mapping.size_), + mapped_size_(mapping.mapped_size_), +@@ -42,7 +42,7 @@ + } + + SharedMemoryMapping& SharedMemoryMapping::operator=( +- SharedMemoryMapping&& mapping) { ++ SharedMemoryMapping&& mapping) noexcept { + Unmap(); + memory_ = mapping.memory_; + size_ = mapping.size_; +@@ -90,9 +90,9 @@ + + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping() = default; + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping( +- ReadOnlySharedMemoryMapping&&) = default; ++ ReadOnlySharedMemoryMapping&&) noexcept = default; + ReadOnlySharedMemoryMapping& ReadOnlySharedMemoryMapping::operator=( +- ReadOnlySharedMemoryMapping&&) = default; ++ ReadOnlySharedMemoryMapping&&) noexcept = default; + ReadOnlySharedMemoryMapping::ReadOnlySharedMemoryMapping( + void* address, + size_t size, +@@ -102,9 +102,9 @@ + + WritableSharedMemoryMapping::WritableSharedMemoryMapping() = default; + WritableSharedMemoryMapping::WritableSharedMemoryMapping( +- WritableSharedMemoryMapping&&) = default; ++ WritableSharedMemoryMapping&&) noexcept = default; + WritableSharedMemoryMapping& WritableSharedMemoryMapping::operator=( +- WritableSharedMemoryMapping&&) = default; ++ WritableSharedMemoryMapping&&) noexcept = default; + WritableSharedMemoryMapping::WritableSharedMemoryMapping( + void* address, + size_t size, +diff --git a/base/memory/shared_memory_mapping.h b/base/memory/shared_memory_mapping.h +index d9569af..2b8858e 100644 +--- a/base/memory/shared_memory_mapping.h ++++ b/base/memory/shared_memory_mapping.h +@@ -32,8 +32,8 @@ + SharedMemoryMapping(); + + // Move operations are allowed. +- SharedMemoryMapping(SharedMemoryMapping&& mapping); +- SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping); ++ SharedMemoryMapping(SharedMemoryMapping&& mapping) noexcept; ++ SharedMemoryMapping& operator=(SharedMemoryMapping&& mapping) noexcept; + + // Unmaps the region if the mapping is valid. + virtual ~SharedMemoryMapping(); +@@ -93,8 +93,9 @@ + ReadOnlySharedMemoryMapping(); + + // Move operations are allowed. +- ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&); +- ReadOnlySharedMemoryMapping& operator=(ReadOnlySharedMemoryMapping&&); ++ ReadOnlySharedMemoryMapping(ReadOnlySharedMemoryMapping&&) noexcept; ++ ReadOnlySharedMemoryMapping& operator=( ++ ReadOnlySharedMemoryMapping&&) noexcept; + + // Returns the base address of the mapping. This is read-only memory. This is + // page-aligned. This is nullptr for invalid instances. +@@ -171,8 +172,9 @@ + WritableSharedMemoryMapping(); + + // Move operations are allowed. +- WritableSharedMemoryMapping(WritableSharedMemoryMapping&&); +- WritableSharedMemoryMapping& operator=(WritableSharedMemoryMapping&&); ++ WritableSharedMemoryMapping(WritableSharedMemoryMapping&&) noexcept; ++ WritableSharedMemoryMapping& operator=( ++ WritableSharedMemoryMapping&&) noexcept; + + // Returns the base address of the mapping. This is writable memory. This is + // page-aligned. This is nullptr for invalid instances. + +From bdc24128b75008743d819e298557a53205706e7c Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Sun, 09 Jun 2019 11:22:25 +0000 +Subject: [PATCH] GCC: fix noexcept from move constructor and assign operators of AccountInfo + +AccountInfo declares them as noexcept and uses default implementation, +so all its members (including AccountId) should be noexcept. But AccountId +is not noexcept. To fix it we just need to make CoreAccountId move +operator/assign operator noexcept. + +Bug: 819294 +Change-Id: Ice38654ab7cf3b9eaa6f54aa36e1fec329264f98 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645296 +Reviewed-by: Roger Tawa <rogerta@chromium.org> +Reviewed-by: Sylvain Defresne <sdefresne@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#667484} +--- + +diff --git a/google_apis/gaia/core_account_id.cc b/google_apis/gaia/core_account_id.cc +index d808082..12eefe3 100644 +--- a/google_apis/gaia/core_account_id.cc ++++ b/google_apis/gaia/core_account_id.cc +@@ -6,8 +6,16 @@ + + CoreAccountId::CoreAccountId() = default; + ++CoreAccountId::CoreAccountId(const CoreAccountId&) = default; ++ ++CoreAccountId::CoreAccountId(CoreAccountId&&) noexcept = default; ++ + CoreAccountId::~CoreAccountId() = default; + ++CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default; ++ ++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept = default; ++ + CoreAccountId::CoreAccountId(const char* id) : id(id) {} + + CoreAccountId::CoreAccountId(std::string&& id) : id(std::move(id)) {} +diff --git a/google_apis/gaia/core_account_id.h b/google_apis/gaia/core_account_id.h +index 5ea602a..c2d1911 100644 +--- a/google_apis/gaia/core_account_id.h ++++ b/google_apis/gaia/core_account_id.h +@@ -14,8 +14,13 @@ + // for design and tracking). + struct CoreAccountId { + CoreAccountId(); ++ CoreAccountId(const CoreAccountId&); ++ CoreAccountId(CoreAccountId&&) noexcept; + ~CoreAccountId(); + ++ CoreAccountId& operator=(const CoreAccountId&); ++ CoreAccountId& operator=(CoreAccountId&&) noexcept; ++ + // Those implicit constructor and conversion operator allow to + // progressively migrate the code to use this struct. Removing + // them is tracked by https://crbug.com/959161 + +From 9aae68736bc7eb7172d0d0c978ecb6d1f75c7b30 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Tue, 11 Jun 2019 10:27:19 +0200 +Subject: [PATCH] GCC: add noexcept move assignment in history::URLRow + +In GCC, build is failing because history::QueryURLResult declares its move +assignment operator as noexcept using default implementation. That requires +its members to provide a move assignment operator that is noexcept too. + +But URLRow was missing noexcept declaration in move assignment operator (even +though it was providing noexcept to its move constructor). + +Bug: 819294 +Change-Id: I726e3cf7a4a50c9206a5d0fba8a561d363483d4f +--- + +diff --git a/components/history/core/browser/url_row.cc b/components/history/core/browser/url_row.cc +index 44c22fd..aec0101 100644 +--- a/components/history/core/browser/url_row.cc ++++ b/components/history/core/browser/url_row.cc +@@ -26,7 +26,7 @@ + } + + URLRow& URLRow::operator=(const URLRow& other) = default; +-URLRow& URLRow::operator=(URLRow&& other) = default; ++URLRow& URLRow::operator=(URLRow&& other) noexcept = default; + + void URLRow::Swap(URLRow* other) { + std::swap(id_, other->id_); +diff --git a/components/history/core/browser/url_row.h b/components/history/core/browser/url_row.h +index 8f6f9cf..31a1ef8 100644 +--- a/components/history/core/browser/url_row.h ++++ b/components/history/core/browser/url_row.h +@@ -35,7 +35,7 @@ + + virtual ~URLRow(); + URLRow& operator=(const URLRow& other); +- URLRow& operator=(URLRow&& other); ++ URLRow& operator=(URLRow&& other) noexcept; + + URLID id() const { return id_; } + + +From 41d954dec0669c9a85730c0bde7df7ba7a0ff43e Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Thu, 06 Jun 2019 15:30:49 +0000 +Subject: [PATCH] Fix AutocompleteMatch move constructor/assign operator noexcept + +For AutocompleteMatch to declare noexcept them, all the contained +properties need to be noexcept too. This is required at least +for SuggestionAnswer, because base::string16 will make default +calculated signature of the move operator noexcept(false). + +To avoid this issue we explicitely declare them on SuggestionAnswer, +and its member classes TextField and ImageLine. + +Bug: 819294 +Change-Id: I8714f2c6352a3292bdebdc3aed9790270e49c580 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1554669 +Reviewed-by: Kevin Bailey <krb@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#666714} +--- + +diff --git a/components/omnibox/browser/suggestion_answer.cc b/components/omnibox/browser/suggestion_answer.cc +index 151e55f..a0c9049 100644 +--- a/components/omnibox/browser/suggestion_answer.cc ++++ b/components/omnibox/browser/suggestion_answer.cc +@@ -55,6 +55,12 @@ + + SuggestionAnswer::TextField::TextField() = default; + SuggestionAnswer::TextField::~TextField() = default; ++SuggestionAnswer::TextField::TextField(const TextField&) = default; ++SuggestionAnswer::TextField::TextField(TextField&&) noexcept = default; ++SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=( ++ const TextField&) = default; ++SuggestionAnswer::TextField& SuggestionAnswer::TextField::operator=( ++ TextField&&) noexcept = default; + + // static + bool SuggestionAnswer::TextField::ParseTextField(const base::Value& field_json, +@@ -93,9 +99,12 @@ + SuggestionAnswer::ImageLine::ImageLine() + : num_text_lines_(1) {} + SuggestionAnswer::ImageLine::ImageLine(const ImageLine& line) = default; ++SuggestionAnswer::ImageLine::ImageLine(ImageLine&&) noexcept = default; + + SuggestionAnswer::ImageLine& SuggestionAnswer::ImageLine::operator=( + const ImageLine& line) = default; ++SuggestionAnswer::ImageLine& SuggestionAnswer::ImageLine::operator=( ++ ImageLine&&) noexcept = default; + + SuggestionAnswer::ImageLine::~ImageLine() {} + +@@ -251,9 +260,14 @@ + + SuggestionAnswer::SuggestionAnswer(const SuggestionAnswer& answer) = default; + ++SuggestionAnswer::SuggestionAnswer(SuggestionAnswer&&) noexcept = default; ++ + SuggestionAnswer& SuggestionAnswer::operator=(const SuggestionAnswer& answer) = + default; + ++SuggestionAnswer& SuggestionAnswer::operator=(SuggestionAnswer&&) noexcept = ++ default; ++ + SuggestionAnswer::~SuggestionAnswer() = default; + + // static +diff --git a/components/omnibox/browser/suggestion_answer.h b/components/omnibox/browser/suggestion_answer.h +index 31be937..2840ace 100644 +--- a/components/omnibox/browser/suggestion_answer.h ++++ b/components/omnibox/browser/suggestion_answer.h +@@ -125,6 +125,10 @@ + public: + TextField(); + ~TextField(); ++ TextField(const TextField&); ++ TextField(TextField&&) noexcept; ++ TextField& operator=(const TextField&); ++ TextField& operator=(TextField&&) noexcept; + + // Parses |field_json| dictionary and populates |text_field| with the + // contents. If any of the required elements is missing, returns false and +@@ -162,7 +166,9 @@ + public: + ImageLine(); + explicit ImageLine(const ImageLine& line); ++ ImageLine(ImageLine&&) noexcept; + ImageLine& operator=(const ImageLine& line); ++ ImageLine& operator=(ImageLine&&) noexcept; + ~ImageLine(); + + // Parses dictionary |line_json| and populates |image_line| with the +@@ -213,7 +219,9 @@ + + SuggestionAnswer(); + SuggestionAnswer(const SuggestionAnswer& answer); ++ SuggestionAnswer(SuggestionAnswer&&) noexcept; + SuggestionAnswer& operator=(const SuggestionAnswer& answer); ++ SuggestionAnswer& operator=(SuggestionAnswer&&) noexcept; + ~SuggestionAnswer(); + + // Parses dictionary |answer_json| and fills a SuggestionAnswer containing the + +From 9f99af41cae3cfff3bcdcc856c1539801c9b745b Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 07 Jun 2019 18:59:59 +0000 +Subject: [PATCH] DisjoingRangeLockManager::Lock move constructor/assign operator cannot be noexcept + +They depend on LockRequest, that depends on WeakPtr, none of them noexcept. + +Bug: 819294 +Change-Id: I04ec15901ca627358df727540597f21f135c129b +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1646252 +Reviewed-by: Joshua Bell <jsbell@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#667260} +--- + +diff --git a/content/browser/indexed_db/scopes/disjoint_range_lock_manager.cc b/content/browser/indexed_db/scopes/disjoint_range_lock_manager.cc +index 478a5c9..a18c6cd 100644 +--- a/content/browser/indexed_db/scopes/disjoint_range_lock_manager.cc ++++ b/content/browser/indexed_db/scopes/disjoint_range_lock_manager.cc +@@ -19,14 +19,13 @@ + : requested_type(type), + locks_holder(std::move(locks_holder)), + acquired_callback(std::move(acquired_callback)) {} +-DisjointRangeLockManager::LockRequest::LockRequest(LockRequest&&) noexcept = +- default; ++DisjointRangeLockManager::LockRequest::LockRequest(LockRequest&&) = default; + DisjointRangeLockManager::LockRequest::~LockRequest() = default; + DisjointRangeLockManager::Lock::Lock() = default; +-DisjointRangeLockManager::Lock::Lock(Lock&&) noexcept = default; ++DisjointRangeLockManager::Lock::Lock(Lock&&) = default; + DisjointRangeLockManager::Lock::~Lock() = default; + DisjointRangeLockManager::Lock& DisjointRangeLockManager::Lock::operator=( +- DisjointRangeLockManager::Lock&&) noexcept = default; ++ DisjointRangeLockManager::Lock&&) = default; + + DisjointRangeLockManager::DisjointRangeLockManager(int level_count) + : task_runner_(base::SequencedTaskRunnerHandle::Get()), diff --git a/www-client/chromium/files/chromium-76-gcc-private.patch b/www-client/chromium/files/chromium-76-gcc-private.patch new file mode 100644 index 0000000..bc0ed98 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-private.patch @@ -0,0 +1,63 @@ +From 502e6e42633d2571c8236c8649b031fe9915eb5b Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Tue, 11 Jun 2019 16:56:27 +0000 +Subject: [PATCH] GCC: CertNetFetcherImpl declares Job as a friend but it is in the anonymous namespace + +GCC does not allow friendship declaration to anonymous namespace as done with Job +object in the CertNetFetcherImpl. This fix removes the friend declaration, and just +makes RemoveJob method public, that was the only reason to make Job a friend. + +Error was: +./../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void net::{anonymous}::Job::DetachRequest(net::CertNetFetcherImpl::RequestCore*)’: +../../net/cert_net/cert_net_fetcher_impl.cc:458:42: error: ‘std::unique_ptr<net::{anonymous}::Job> net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is private within this context + delete_this = parent_->RemoveJob(this); + ^ +../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here + std::unique_ptr<Job> RemoveJob(Job* job); + ^~~~~~~~~ +../../net/cert_net/cert_net_fetcher_impl.cc: In member function ‘void net::{anonymous}::Job::OnJobCompleted(net::Error)’: +../../net/cert_net/cert_net_fetcher_impl.cc:610:61: error: ‘std::unique_ptr<net::{anonymous}::Job> net::CertNetFetcherImpl::AsyncCertNetFetcherImpl::RemoveJob(net::{anonymous}::Job*)’ is private within this context + std::unique_ptr<Job> delete_this = parent_->RemoveJob(this); + ^ +../../net/cert_net/cert_net_fetcher_impl.cc:151:24: note: declared private here + std::unique_ptr<Job> RemoveJob(Job* job); + ^~~~~~~~~ + +Bug: 819294 +Change-Id: I3609f4558e570741395366de6a4cd40577d91450 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651783 +Commit-Queue: Eric Roman <eroman@chromium.org> +Reviewed-by: Eric Roman <eroman@chromium.org> +Cr-Commit-Position: refs/heads/master@{#668015} +--- + +diff --git a/net/cert_net/cert_net_fetcher_impl.cc b/net/cert_net/cert_net_fetcher_impl.cc +index 11a1166..349c656 100644 +--- a/net/cert_net/cert_net_fetcher_impl.cc ++++ b/net/cert_net/cert_net_fetcher_impl.cc +@@ -135,21 +135,19 @@ + void Fetch(std::unique_ptr<RequestParams> request_params, + scoped_refptr<RequestCore> request); + ++ // Removes |job| from the in progress jobs and transfers ownership to the ++ // caller. ++ std::unique_ptr<Job> RemoveJob(Job* job); ++ + // Cancels outstanding jobs, which stops network requests and signals the + // corresponding RequestCores that the requests have completed. + void Shutdown(); + + private: +- friend class Job; +- + // Finds a job with a matching RequestPararms or returns nullptr if there was + // no match. + Job* FindJob(const RequestParams& params); + +- // Removes |job| from the in progress jobs and transfers ownership to the +- // caller. +- std::unique_ptr<Job> RemoveJob(Job* job); +- + // The in-progress jobs. This set does not contain the job which is actively + // invoking callbacks (OnJobCompleted). + JobSet jobs_; diff --git a/www-client/chromium/files/chromium-76-gcc-pure-virtual.patch b/www-client/chromium/files/chromium-76-gcc-pure-virtual.patch new file mode 100644 index 0000000..3d34e43 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-pure-virtual.patch @@ -0,0 +1,50 @@ +From cdf306db81efaaaa954487585d5a5a16205a5ebd Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Wed, 05 Jun 2019 14:45:06 +0000 +Subject: [PATCH] Avoid pure virtual crash destroying RenderProcessUserData + +When RenderProcessUserData is destroyed from the destructor of +RenderProcessHostImpl, it is done in the destructor of RenderProcessHost. +At this point RemoveObserver override is already freed, so RenderProcessHost +is pure virtual. This crash happens at least building with GCC: + + at /usr/include/c++/8/ext/new_allocator.h:140 + (this=0x7fffffffcb50, __in_chrg=<optimized out>) at /usr/include/c++/8/bits/stl_tree.h:964 + +We need to destroy RenderProcessUserData before that happens. To do that +we can just override RenderProcessHostDestroyed. + +Bug: 910288 +Change-Id: I38107b178829b0cb7494f5333b765e5b087d82cd +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645366 +Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org> +Reviewed-by: Sigurður Ásgeirsson <siggi@chromium.org> +Cr-Commit-Position: refs/heads/master@{#666279} +--- + +diff --git a/chrome/browser/performance_manager/render_process_user_data.cc b/chrome/browser/performance_manager/render_process_user_data.cc +index 2e2c199..ef6e1fb 100644 +--- a/chrome/browser/performance_manager/render_process_user_data.cc ++++ b/chrome/browser/performance_manager/render_process_user_data.cc +@@ -116,4 +116,9 @@ + base::Unretained(process_node_.get()), info.exit_code)); + } + ++void RenderProcessUserData::RenderProcessHostDestroyed( ++ content::RenderProcessHost* host) { ++ host->RemoveUserData(kRenderProcessUserDataKey); ++} ++ + } // namespace performance_manager +diff --git a/chrome/browser/performance_manager/render_process_user_data.h b/chrome/browser/performance_manager/render_process_user_data.h +index ac74b1d..f3b4d16 100644 +--- a/chrome/browser/performance_manager/render_process_user_data.h ++++ b/chrome/browser/performance_manager/render_process_user_data.h +@@ -47,6 +47,7 @@ + void RenderProcessExited( + content::RenderProcessHost* host, + const content::ChildProcessTerminationInfo& info) override; ++ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; + + // All instances are linked together in a doubly linked list to allow orderly + // destruction at browser shutdown time. diff --git a/www-client/chromium/files/chromium-76-gcc-uint32.patch b/www-client/chromium/files/chromium-76-gcc-uint32.patch new file mode 100644 index 0000000..5e392e6 --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-uint32.patch @@ -0,0 +1,30 @@ +From 53bb5a463ee956c70230eaa5450022185d0ddc3c Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Thu, 06 Jun 2019 07:54:05 +0000 +Subject: [PATCH] ThrottlingController::Liveness needs to be uint32_t + +We are setting kAlive and kDead values assigning values that +are bigger than the maximum signed int32. It is better to use +uint32_t in this case. + +Bug: 819294 +Change-Id: If72b48291a66a3a9db24b4c8e2d11d31936a66ee +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645772 +Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#666619} +--- + +diff --git a/services/network/throttling/throttling_controller.h b/services/network/throttling/throttling_controller.h +index 43751c4..3c6f87b 100644 +--- a/services/network/throttling/throttling_controller.h ++++ b/services/network/throttling/throttling_controller.h +@@ -38,7 +38,7 @@ + + // TODO(https://crbug.com/960874): Debugging code to try and shed some light + // on why the owned maps are invalid. +- enum class Liveness : int32_t { ++ enum class Liveness : uint32_t { + kAlive = 0xCA11AB13, + kDead = 0xDEADBEEF, + }; diff --git a/www-client/chromium/files/chromium-76-gcc-vulkan.patch b/www-client/chromium/files/chromium-76-gcc-vulkan.patch new file mode 100644 index 0000000..cf93bce --- /dev/null +++ b/www-client/chromium/files/chromium-76-gcc-vulkan.patch @@ -0,0 +1,115 @@ +From fdb3bb1f8c41d044a5b0cb80257a26dd3c8f83a3 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Tue, 11 Jun 2019 17:39:38 +0000 +Subject: [PATCH] GCC: do not use old C notation to assign struct with property names. + +The notation for initialization of structs referring to its properties +is invalid in C++. This is not accepted in GCC. It was making build +fail in VulkanCommandBuffer. + +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function 'void gpu::VulkanCommandBuffer::TransitionImageLayout(VkImage, VkImageLayout, VkImageLayout)': +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:214:7: error: expected primary-expression before '.' token + .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:215:7: error: expected primary-expression before '.' token + .subresourceRange.baseMipLevel = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:216:7: error: expected primary-expression before '.' token + .subresourceRange.levelCount = 1, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:217:7: error: expected primary-expression before '.' token + .subresourceRange.baseArrayLayer = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:218:7: error: expected primary-expression before '.' token + .subresourceRange.layerCount = 1, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc: In member function 'void gpu::VulkanCommandBuffer::CopyBufferToImage(VkBuffer, VkImage, uint32_t, uint32_t, uint32_t, uint32_t)': +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:235:7: error: expected primary-expression before '.' token + .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:236:7: error: expected primary-expression before '.' token + .imageSubresource.mipLevel = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:237:7: error: expected primary-expression before '.' token + .imageSubresource.baseArrayLayer = 0, + ^ +./../../../chromium-76.0.3806.1/gpu/vulkan/vulkan_command_buffer.cc:238:7: error: expected primary-expression before '.' token + .imageSubresource.layerCount = 1, + ^ +Bug: 819294 + +Change-Id: I999abece0c727e77964789183642ba62009c2c22 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1651802 +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Reviewed-by: Antoine Labour <piman@chromium.org> +Cr-Commit-Position: refs/heads/master@{#668033} +--- + +diff --git a/gpu/vulkan/vulkan_command_buffer.cc b/gpu/vulkan/vulkan_command_buffer.cc +index ba776e4..4f14c85 100644 +--- a/gpu/vulkan/vulkan_command_buffer.cc ++++ b/gpu/vulkan/vulkan_command_buffer.cc +@@ -207,21 +207,20 @@ + void VulkanCommandBuffer::TransitionImageLayout(VkImage image, + VkImageLayout old_layout, + VkImageLayout new_layout) { +- VkImageMemoryBarrier barrier = { +- .sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, +- .srcAccessMask = GetAccessMask(old_layout), +- .dstAccessMask = GetAccessMask(new_layout), +- .oldLayout = old_layout, +- .newLayout = new_layout, +- .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, +- .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, +- .image = image, +- .subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, +- .subresourceRange.baseMipLevel = 0, +- .subresourceRange.levelCount = 1, +- .subresourceRange.baseArrayLayer = 0, +- .subresourceRange.layerCount = 1, +- }; ++ VkImageMemoryBarrier barrier = {}; ++ barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; ++ barrier.srcAccessMask = GetAccessMask(old_layout); ++ barrier.dstAccessMask = GetAccessMask(new_layout); ++ barrier.oldLayout = old_layout; ++ barrier.newLayout = new_layout; ++ barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; ++ barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; ++ barrier.image = image; ++ barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ++ barrier.subresourceRange.baseMipLevel = 0; ++ barrier.subresourceRange.levelCount = 1; ++ barrier.subresourceRange.baseArrayLayer = 0; ++ barrier.subresourceRange.layerCount = 1; + vkCmdPipelineBarrier(command_buffer_, GetPipelineStageFlags(old_layout), + GetPipelineStageFlags(new_layout), 0, 0, nullptr, 0, + nullptr, 1, &barrier); +@@ -233,17 +232,16 @@ + uint32_t buffer_height, + uint32_t width, + uint32_t height) { +- VkBufferImageCopy region = { +- .bufferOffset = 0, +- .bufferRowLength = buffer_width, +- .bufferImageHeight = buffer_height, +- .imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, +- .imageSubresource.mipLevel = 0, +- .imageSubresource.baseArrayLayer = 0, +- .imageSubresource.layerCount = 1, +- .imageOffset = {0, 0, 0}, +- .imageExtent = {width, height, 1}, +- }; ++ VkBufferImageCopy region = {}; ++ region.bufferOffset = 0; ++ region.bufferRowLength = buffer_width; ++ region.bufferImageHeight = buffer_height; ++ region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; ++ region.imageSubresource.mipLevel = 0; ++ region.imageSubresource.baseArrayLayer = 0; ++ region.imageSubresource.layerCount = 1; ++ region.imageOffset = {0, 0, 0}; ++ region.imageExtent = {width, height, 1}; + vkCmdCopyBufferToImage(command_buffer_, buffer, image, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion); + } diff --git a/www-client/chromium/files/chromium-76-quiche.patch b/www-client/chromium/files/chromium-76-quiche.patch new file mode 100644 index 0000000..f3aa42a --- /dev/null +++ b/www-client/chromium/files/chromium-76-quiche.patch @@ -0,0 +1,239 @@ +From 9424add9d73432a794b7944790253213cce6dcb8 Mon Sep 17 00:00:00 2001 +From: danzh <danzh@google.com> +Date: Thu, 06 Jun 2019 14:04:36 -0700 +Subject: [PATCH] gfe-relnote: (n/a) code cleanup. Fix envoy compile errors. + +Add #include header for std library. +Reference TransportParameters when using its enum TransportParameterId. + +PiperOrigin-RevId: 251922363 +Change-Id: Iba38660e5adc3069e377829acec44267658b11c6 +--- + +diff --git a/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc b/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc +index ee0ebf0..e5df9fe 100644 +--- a/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc ++++ b/net/third_party/quiche/src/quic/core/crypto/transport_parameters.cc +@@ -62,37 +62,37 @@ + std::string TransportParameterIdToString( + TransportParameters::TransportParameterId param_id) { + switch (param_id) { +- case kOriginalConnectionId: ++ case TransportParameters::kOriginalConnectionId: + return "original_connection_id"; +- case kIdleTimeout: ++ case TransportParameters::kIdleTimeout: + return "idle_timeout"; +- case kStatelessResetToken: ++ case TransportParameters::kStatelessResetToken: + return "stateless_reset_token"; +- case kMaxPacketSize: ++ case TransportParameters::kMaxPacketSize: + return "max_packet_size"; +- case kInitialMaxData: ++ case TransportParameters::kInitialMaxData: + return "initial_max_data"; +- case kInitialMaxStreamDataBidiLocal: ++ case TransportParameters::kInitialMaxStreamDataBidiLocal: + return "initial_max_stream_data_bidi_local"; +- case kInitialMaxStreamDataBidiRemote: ++ case TransportParameters::kInitialMaxStreamDataBidiRemote: + return "initial_max_stream_data_bidi_remote"; +- case kInitialMaxStreamDataUni: ++ case TransportParameters::kInitialMaxStreamDataUni: + return "initial_max_stream_data_uni"; +- case kInitialMaxStreamsBidi: ++ case TransportParameters::kInitialMaxStreamsBidi: + return "initial_max_streams_bidi"; +- case kInitialMaxStreamsUni: ++ case TransportParameters::kInitialMaxStreamsUni: + return "initial_max_streams_uni"; +- case kAckDelayExponent: ++ case TransportParameters::kAckDelayExponent: + return "ack_delay_exponent"; +- case kMaxAckDelay: ++ case TransportParameters::kMaxAckDelay: + return "max_ack_delay"; +- case kDisableMigration: ++ case TransportParameters::kDisableMigration: + return "disable_migration"; +- case kPreferredAddress: ++ case TransportParameters::kPreferredAddress: + return "preferred_address"; +- case kGoogleQuicParam: ++ case TransportParameters::kGoogleQuicParam: + return "google"; +- case kGoogleQuicVersion: ++ case TransportParameters::kGoogleQuicVersion: + return "google-version"; + } + return "Unknown(" + QuicTextUtils::Uint64ToString(param_id) + ")"; +@@ -390,7 +390,7 @@ + CBB original_connection_id_param; + if (!in.original_connection_id.IsEmpty()) { + DCHECK_EQ(Perspective::IS_SERVER, in.perspective); +- if (!CBB_add_u16(¶ms, kOriginalConnectionId) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kOriginalConnectionId) || + !CBB_add_u16_length_prefixed(¶ms, &original_connection_id_param) || + !CBB_add_bytes( + &original_connection_id_param, +@@ -412,7 +412,7 @@ + if (!in.stateless_reset_token.empty()) { + DCHECK_EQ(kStatelessResetTokenLength, in.stateless_reset_token.size()); + DCHECK_EQ(Perspective::IS_SERVER, in.perspective); +- if (!CBB_add_u16(¶ms, kStatelessResetToken) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kStatelessResetToken) || + !CBB_add_u16_length_prefixed(¶ms, &stateless_reset_token_param) || + !CBB_add_bytes(&stateless_reset_token_param, + in.stateless_reset_token.data(), +@@ -438,7 +438,7 @@ + + // disable_migration + if (in.disable_migration) { +- if (!CBB_add_u16(¶ms, kDisableMigration) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kDisableMigration) || + !CBB_add_u16(¶ms, 0u)) { // 0 is the length of this parameter. + QUIC_BUG << "Failed to write disable_migration for " << in; + return false; +@@ -458,7 +458,7 @@ + QUIC_BUG << "Bad lengths " << *in.preferred_address; + return false; + } +- if (!CBB_add_u16(¶ms, kPreferredAddress) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kPreferredAddress) || + !CBB_add_u16_length_prefixed(¶ms, &preferred_address_params) || + !CBB_add_bytes( + &preferred_address_params, +@@ -491,7 +491,7 @@ + if (in.google_quic_params) { + const QuicData& serialized_google_quic_params = + in.google_quic_params->GetSerialized(); +- if (!CBB_add_u16(¶ms, kGoogleQuicParam) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicParam) || + !CBB_add_u16_length_prefixed(¶ms, &google_quic_params) || + !CBB_add_bytes(&google_quic_params, + reinterpret_cast<const uint8_t*>( +@@ -505,7 +505,7 @@ + + // Google-specific version extension. + CBB google_version_params; +- if (!CBB_add_u16(¶ms, kGoogleQuicVersion) || ++ if (!CBB_add_u16(¶ms, TransportParameters::kGoogleQuicVersion) || + !CBB_add_u16_length_prefixed(¶ms, &google_version_params) || + !CBB_add_u32(&google_version_params, in.version)) { + QUIC_BUG << "Failed to write Google version extension for " << in; +@@ -565,7 +565,7 @@ + } + bool parse_success = true; + switch (param_id) { +- case kOriginalConnectionId: ++ case TransportParameters::kOriginalConnectionId: + if (!out->original_connection_id.IsEmpty()) { + QUIC_DLOG(ERROR) << "Received a second original connection ID"; + return false; +@@ -581,10 +581,10 @@ + CBS_len(&value)); + } + break; +- case kIdleTimeout: ++ case TransportParameters::kIdleTimeout: + parse_success = out->idle_timeout_milliseconds.ReadFromCbs(&value); + break; +- case kStatelessResetToken: ++ case TransportParameters::kStatelessResetToken: + if (!out->stateless_reset_token.empty()) { + QUIC_DLOG(ERROR) << "Received a second stateless reset token"; + return false; +@@ -597,36 +597,36 @@ + out->stateless_reset_token.assign(CBS_data(&value), + CBS_data(&value) + CBS_len(&value)); + break; +- case kMaxPacketSize: ++ case TransportParameters::kMaxPacketSize: + parse_success = out->max_packet_size.ReadFromCbs(&value); + break; +- case kInitialMaxData: ++ case TransportParameters::kInitialMaxData: + parse_success = out->initial_max_data.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataBidiLocal: ++ case TransportParameters::kInitialMaxStreamDataBidiLocal: + parse_success = + out->initial_max_stream_data_bidi_local.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataBidiRemote: ++ case TransportParameters::kInitialMaxStreamDataBidiRemote: + parse_success = + out->initial_max_stream_data_bidi_remote.ReadFromCbs(&value); + break; +- case kInitialMaxStreamDataUni: ++ case TransportParameters::kInitialMaxStreamDataUni: + parse_success = out->initial_max_stream_data_uni.ReadFromCbs(&value); + break; +- case kInitialMaxStreamsBidi: ++ case TransportParameters::kInitialMaxStreamsBidi: + parse_success = out->initial_max_streams_bidi.ReadFromCbs(&value); + break; +- case kInitialMaxStreamsUni: ++ case TransportParameters::kInitialMaxStreamsUni: + parse_success = out->initial_max_streams_uni.ReadFromCbs(&value); + break; +- case kAckDelayExponent: ++ case TransportParameters::kAckDelayExponent: + parse_success = out->ack_delay_exponent.ReadFromCbs(&value); + break; +- case kMaxAckDelay: ++ case TransportParameters::kMaxAckDelay: + parse_success = out->max_ack_delay.ReadFromCbs(&value); + break; +- case kDisableMigration: ++ case TransportParameters::kDisableMigration: + if (out->disable_migration) { + QUIC_DLOG(ERROR) << "Received a second disable migration"; + return false; +@@ -638,7 +638,7 @@ + } + out->disable_migration = true; + break; +- case kPreferredAddress: { ++ case TransportParameters::kPreferredAddress: { + uint16_t ipv4_port, ipv6_port; + in_addr ipv4_address; + in6_addr ipv6_address; +@@ -692,7 +692,7 @@ + QuicMakeUnique<TransportParameters::PreferredAddress>( + preferred_address); + } break; +- case kGoogleQuicParam: { ++ case TransportParameters::kGoogleQuicParam: { + if (out->google_quic_params) { + QUIC_DLOG(ERROR) << "Received a second Google parameter"; + return false; +@@ -701,7 +701,7 @@ + reinterpret_cast<const char*>(CBS_data(&value)), CBS_len(&value)); + out->google_quic_params = CryptoFramer::ParseMessage(serialized_params); + } break; +- case kGoogleQuicVersion: { ++ case TransportParameters::kGoogleQuicVersion: { + if (!CBS_get_u32(&value, &out->version)) { + QUIC_DLOG(ERROR) << "Failed to parse Google version extension"; + return false; +diff --git a/quic/core/quic_socket_address_coder.cc b/quic/core/quic_socket_address_coder.cc +index 2527fc9..b26103d 100644 +--- a/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc ++++ b/net/third_party/quiche/src/quic/core/quic_socket_address_coder.cc +@@ -2,10 +2,12 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-#include <string> +- + #include "net/third_party/quiche/src/quic/core/quic_socket_address_coder.h" + ++#include <cstring> ++#include <string> ++#include <vector> ++ + namespace quic { + + namespace { diff --git a/www-client/chromium/files/chromium-77-blink-include.patch b/www-client/chromium/files/chromium-77-blink-include.patch new file mode 100644 index 0000000..3ac1770 --- /dev/null +++ b/www-client/chromium/files/chromium-77-blink-include.patch @@ -0,0 +1,28 @@ +From 5baf7df7f4c5971dab552897eeef94b194650ce5 Mon Sep 17 00:00:00 2001 +From: Dave Tapuska <dtapuska@chromium.org> +Date: Mon, 12 Aug 2019 22:30:13 +0000 +Subject: [PATCH] Fix build failure due to missing include for std::numeric_limits usage. + +Some configurations fail to build, limits should have been included. + +BUG=992832 + +Change-Id: I894ba0543bfcef101c93259e39a31d12ae6d035c +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1747981 +Commit-Queue: Dave Tapuska <dtapuska@chromium.org> +Reviewed-by: Mostyn Bramley-Moore <mostynb@vewd.com> +Cr-Commit-Position: refs/heads/master@{#686214} +--- + +diff --git a/third_party/blink/renderer/platform/exported/web_time_range.cc b/third_party/blink/renderer/platform/exported/web_time_range.cc +index 384566a..68d83e1 100644 +--- a/third_party/blink/renderer/platform/exported/web_time_range.cc ++++ b/third_party/blink/renderer/platform/exported/web_time_range.cc +@@ -31,6 +31,7 @@ + #include "third_party/blink/public/platform/web_time_range.h" + + #include <cmath> ++#include <limits> + + namespace blink { + diff --git a/www-client/chromium/files/chromium-77-clang.patch b/www-client/chromium/files/chromium-77-clang.patch new file mode 100644 index 0000000..a57b5a4 --- /dev/null +++ b/www-client/chromium/files/chromium-77-clang.patch @@ -0,0 +1,13 @@ +diff --git a/base/location.h b/base/location.h +index c07e747..924db1c 100644 +--- a/base/location.h ++++ b/base/location.h +@@ -18,7 +18,7 @@ + + namespace base { + +-#if defined(__has_builtin) ++#if defined(__clang__) + // Clang allows detection of these builtins. + #define SUPPORTS_LOCATION_BUILTINS \ + (__has_builtin(__builtin_FUNCTION) && __has_builtin(__builtin_FILE) && \ diff --git a/www-client/chromium/files/chromium-77-fix-gn-gen.patch b/www-client/chromium/files/chromium-77-fix-gn-gen.patch new file mode 100644 index 0000000..2c5f128 --- /dev/null +++ b/www-client/chromium/files/chromium-77-fix-gn-gen.patch @@ -0,0 +1,11 @@ +--- a/third_party/blink/tools/BUILD.gn ++++ b/third_party/blink/tools/BUILD.gn +@@ -11,7 +11,7 @@ action("build_wpt_metadata") { + rebase_path("$root_out_dir/wpt_expectations_metadata"), + ] + outputs = [ +- "$root_out_dir/wpt_expectations_metadata/", ++ "$root_out_dir/wpt_expectations_metadata", + ] + data = [ + # Include the blinkpy tools to access expectations data diff --git a/www-client/chromium/files/chromium-77-gcc-abstract.patch b/www-client/chromium/files/chromium-77-gcc-abstract.patch new file mode 100644 index 0000000..6d77299 --- /dev/null +++ b/www-client/chromium/files/chromium-77-gcc-abstract.patch @@ -0,0 +1,61 @@ +From f08cb0022527081c078e8b96062e6c9b4fbda151 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 26 Jul 2019 16:48:06 +0000 +Subject: [PATCH] BinaryUploadService: change parameter passing that cannot afford abstract class + +The method UploadForDeepScanning gets a Request as parameter. But Request is an +abstract class, so GCC will not allow that declaration (polimorphycs should be +passed by reference). Use std::unique_ptr so BinaryUploadService can assume +ownership. + +Bug: 819294 +Change-Id: I9e8c75cc92b01abd704d9049b0421555377da5ba +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1713550 +Reviewed-by: Daniel Rubery <drubery@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#681333} +--- + +diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc +index 6430c89..4e90487 100644 +--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc ++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.cc +@@ -10,7 +10,7 @@ + namespace safe_browsing { + + void BinaryUploadService::UploadForDeepScanning( +- BinaryUploadService::Request request) { ++ std::unique_ptr<BinaryUploadService::Request> request) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + NOTREACHED(); + } +diff --git a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h +index d2dfd83..9b6f395 100644 +--- a/chrome/browser/safe_browsing/download_protection/binary_upload_service.h ++++ b/chrome/browser/safe_browsing/download_protection/binary_upload_service.h +@@ -5,6 +5,8 @@ + #ifndef CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_ + #define CHROME_BROWSER_SAFE_BROWSING_DOWNLOAD_PROTECTION_BINARY_UPLOAD_SERVICE_H_ + ++#include <memory> ++ + #include "base/callback.h" + #include "components/safe_browsing/proto/webprotect.pb.h" + +@@ -40,6 +42,7 @@ + public: + // |callback| will run on the UI thread. + explicit Request(Callback callback); ++ virtual ~Request() = default; + Request(const Request&) = delete; + Request& operator=(const Request&) = delete; + +@@ -67,7 +70,7 @@ + // Upload the given file contents for deep scanning. The results will be + // returned asynchronously by calling |request|'s |callback|. This must be + // called on the UI thread. +- void UploadForDeepScanning(Request request); ++ void UploadForDeepScanning(std::unique_ptr<Request> request); + }; + + } // namespace safe_browsing diff --git a/www-client/chromium/files/chromium-77-gcc-include.patch b/www-client/chromium/files/chromium-77-gcc-include.patch new file mode 100644 index 0000000..f464039 --- /dev/null +++ b/www-client/chromium/files/chromium-77-gcc-include.patch @@ -0,0 +1,56 @@ +From 8c747a9c14ed4905f60f6680e2e09e33ea34163e Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 26 Jul 2019 16:18:17 +0000 +Subject: [PATCH] IWYU: include <memory> in one_euro_filter.h as it uses std::unique_ptr + +Bug: 819294 +Change-Id: Ie1530f7046b0c8eb76e26adca530fa57c67ed876 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1720637 +Reviewed-by: Ella Ge <eirage@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#681321} +--- + +diff --git a/third_party/one_euro_filter/src/one_euro_filter.h b/third_party/one_euro_filter/src/one_euro_filter.h +index 7f8d15b..a8cd0ab 100644 +--- a/third_party/one_euro_filter/src/one_euro_filter.h ++++ b/third_party/one_euro_filter/src/one_euro_filter.h +@@ -1,6 +1,8 @@ + #ifndef ONE_EURO_ONE_EURO_FILTER_H_ + #define ONE_EURO_ONE_EURO_FILTER_H_ + ++#include <memory> ++ + #include "low_pass_filter.h" + + namespace one_euro_filter { + +From 258f5f182f8dd72f727af26e614794c67a5996e6 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jose.dapena@lge.com> +Date: Fri, 26 Jul 2019 15:17:54 +0000 +Subject: [PATCH] IWYU: ScopedObserver of TabStripModel requires it to be included + +Build with GCC and libstdc++ is failing in files using tab_sharing_ui.h +as it has a ScopedObserver of a TabStripModel without including it +in advance. + +Bug: 819294 +Change-Id: I4b12073484f65ad2bb873119daa748245296d282 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1713526 +Reviewed-by: Guido Urdaneta <guidou@chromium.org> +Commit-Queue: José Dapena Paz <jose.dapena@lge.com> +Cr-Commit-Position: refs/heads/master@{#681290} +--- + +diff --git a/chrome/browser/ui/tab_sharing/tab_sharing_ui.h b/chrome/browser/ui/tab_sharing/tab_sharing_ui.h +index 6d931129..147868f 100644 +--- a/chrome/browser/ui/tab_sharing/tab_sharing_ui.h ++++ b/chrome/browser/ui/tab_sharing/tab_sharing_ui.h +@@ -14,6 +14,7 @@ + #include "base/strings/string16.h" + #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h" + #include "chrome/browser/ui/browser_list_observer.h" ++#include "chrome/browser/ui/tabs/tab_strip_model.h" + #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" + #include "components/infobars/core/infobar_manager.h" + #include "content/public/browser/desktop_media_id.h" diff --git a/www-client/chromium/files/chromium-77-std-string.patch b/www-client/chromium/files/chromium-77-std-string.patch new file mode 100644 index 0000000..f921f1a --- /dev/null +++ b/www-client/chromium/files/chromium-77-std-string.patch @@ -0,0 +1,130 @@ +From 74138b9febd37eac0fc26b8efb110014a83a52c6 Mon Sep 17 00:00:00 2001 +From: Jeremy Roman <jbroman@chromium.org> +Date: Wed, 07 Aug 2019 13:26:48 +0000 +Subject: [PATCH] WTF: Make LinkedHashSet understand values for which memset initialization would be bad. + +Includes a unit test which fails before, and uses this to fix FontCacheKeyTraits. + +Bug: 980025 +Change-Id: If41f97444c7fd37b9b95d6dadaf3da5689079e9e +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1739948 +Reviewed-by: Kentaro Hara <haraken@chromium.org> +Reviewed-by: Yutaka Hirano <yhirano@chromium.org> +Commit-Queue: Jeremy Roman <jbroman@chromium.org> +Cr-Commit-Position: refs/heads/master@{#684731} +--- + +diff --git a/third_party/blink/renderer/platform/fonts/font_cache_key.h b/third_party/blink/renderer/platform/fonts/font_cache_key.h +index 0efc8fb..90063cb 100644 +--- a/third_party/blink/renderer/platform/fonts/font_cache_key.h ++++ b/third_party/blink/renderer/platform/fonts/font_cache_key.h +@@ -133,6 +133,10 @@ + + struct FontCacheKeyTraits : WTF::SimpleClassHashTraits<FontCacheKey> { + STATIC_ONLY(FontCacheKeyTraits); ++ ++ // std::string's empty state need not be zero in all implementations, ++ // and it is held within FontFaceCreationParams. ++ static const bool kEmptyValueIsZero = false; + }; + + } // namespace blink +diff --git a/third_party/blink/renderer/platform/wtf/linked_hash_set.h b/third_party/blink/renderer/platform/wtf/linked_hash_set.h +index b35b6e9..77e524c 100644 +--- a/third_party/blink/renderer/platform/wtf/linked_hash_set.h ++++ b/third_party/blink/renderer/platform/wtf/linked_hash_set.h +@@ -146,6 +146,11 @@ + LinkedHashSetNodeBase* next) + : LinkedHashSetNodeBase(prev, next), value_(value) {} + ++ LinkedHashSetNode(ValueArg&& value, ++ LinkedHashSetNodeBase* prev, ++ LinkedHashSetNodeBase* next) ++ : LinkedHashSetNodeBase(prev, next), value_(std::move(value)) {} ++ + LinkedHashSetNode(LinkedHashSetNode&& other) + : LinkedHashSetNodeBase(std::move(other)), + value_(std::move(other.value_)) {} +@@ -445,10 +450,13 @@ + + // The slot is empty when the next_ field is zero so it's safe to zero + // the backing. +- static const bool kEmptyValueIsZero = true; ++ static const bool kEmptyValueIsZero = ValueTraits::kEmptyValueIsZero; + + static const bool kHasIsEmptyValueFunction = true; + static bool IsEmptyValue(const Node& node) { return !node.next_; } ++ static Node EmptyValue() { ++ return Node(ValueTraits::EmptyValue(), nullptr, nullptr); ++ } + + static const int kDeletedValue = -1; + +diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc +index 4c3f899..cd1be00 100644 +--- a/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc ++++ b/third_party/blink/renderer/platform/wtf/list_hash_set_test.cc +@@ -487,6 +487,7 @@ + }; + + struct Complicated { ++ Complicated() : Complicated(0) {} + Complicated(int value) : simple_(value) { objects_constructed_++; } + + Complicated(const Complicated& other) : simple_(other.simple_) { +@@ -495,9 +496,6 @@ + + Simple simple_; + static int objects_constructed_; +- +- private: +- Complicated() = delete; + }; + + int Complicated::objects_constructed_ = 0; +@@ -731,4 +729,45 @@ + + } // anonymous namespace + ++// A unit type which objects to its state being initialized wrong. ++struct InvalidZeroValue { ++ InvalidZeroValue() = default; ++ InvalidZeroValue(WTF::HashTableDeletedValueType) : deleted_(true) {} ++ ~InvalidZeroValue() { CHECK(ok_); } ++ bool IsHashTableDeletedValue() const { return deleted_; } ++ ++ bool ok_ = true; ++ bool deleted_ = false; ++}; ++ ++template <> ++struct HashTraits<InvalidZeroValue> : SimpleClassHashTraits<InvalidZeroValue> { ++ static const bool kEmptyValueIsZero = false; ++}; ++ ++template <> ++struct DefaultHash<InvalidZeroValue> { ++ struct Hash { ++ static unsigned GetHash(const InvalidZeroValue&) { return 0; } ++ static bool Equal(const InvalidZeroValue&, const InvalidZeroValue&) { ++ return true; ++ } ++ }; ++}; ++ ++template <typename Set> ++class ListOrLinkedHashSetInvalidZeroTest : public testing::Test {}; ++ ++using InvalidZeroValueSetTypes = ++ testing::Types<ListHashSet<InvalidZeroValue>, ++ ListHashSet<InvalidZeroValue, 1>, ++ LinkedHashSet<InvalidZeroValue>>; ++TYPED_TEST_SUITE(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValueSetTypes); ++ ++TYPED_TEST(ListOrLinkedHashSetInvalidZeroTest, InvalidZeroValue) { ++ using Set = TypeParam; ++ Set set; ++ set.insert(InvalidZeroValue()); ++} ++ + } // namespace WTF diff --git a/www-client/chromium/files/chromium-77-system-hb.patch b/www-client/chromium/files/chromium-77-system-hb.patch new file mode 100644 index 0000000..9cea0fa --- /dev/null +++ b/www-client/chromium/files/chromium-77-system-hb.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn +index 37d8e33..6610cc6 100644 +--- a/third_party/harfbuzz-ng/BUILD.gn ++++ b/third_party/harfbuzz-ng/BUILD.gn +@@ -16,7 +16,7 @@ if (use_system_harfbuzz) { + "//third_party:freetype_harfbuzz", + "//third_party/freetype:freetype_source", + ] +- packages = [ "harfbuzz" ] ++ packages = [ "harfbuzz", "harfbuzz-subset" ] + } + } else { + config("harfbuzz_config") { diff --git a/www-client/chromium/files/chromium-77-system-icu.patch b/www-client/chromium/files/chromium-77-system-icu.patch new file mode 100644 index 0000000..1f848d7 --- /dev/null +++ b/www-client/chromium/files/chromium-77-system-icu.patch @@ -0,0 +1,20 @@ +diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn +index 4450e40..9ca36dd 100644 +--- a/build/linux/unbundle/icu.gn ++++ b/build/linux/unbundle/icu.gn +@@ -96,6 +96,7 @@ shim_headers("icui18n_shim") { + "unicode/fpositer.h", + "unicode/gender.h", + "unicode/gregocal.h", ++ "unicode/listformatter.h", + "unicode/measfmt.h", + "unicode/measunit.h", + "unicode/measure.h", +@@ -178,7 +179,6 @@ shim_headers("icuuc_shim") { + "unicode/icudataver.h", + "unicode/icuplug.h", + "unicode/idna.h", +- "unicode/listformatter.h", + "unicode/localpointer.h", + "unicode/locdspnm.h", + "unicode/locid.h", diff --git a/www-client/chromium/files/chromium-78-include.patch b/www-client/chromium/files/chromium-78-include.patch new file mode 100644 index 0000000..a0b77c4 --- /dev/null +++ b/www-client/chromium/files/chromium-78-include.patch @@ -0,0 +1,13 @@ +diff --git a/components/password_manager/core/browser/leak_detection/encryption_utils.cc b/components/password_manager/core/browser/leak_detection/encryption_utils.cc +index 31a7116..53eb464 100644 +--- a/components/password_manager/core/browser/leak_detection/encryption_utils.cc ++++ b/components/password_manager/core/browser/leak_detection/encryption_utils.cc +@@ -13,6 +13,8 @@ + #include "crypto/sha2.h" + #include "third_party/boringssl/src/include/openssl/evp.h" + ++#include <climits> ++ + namespace password_manager { + + namespace { diff --git a/www-client/chromium/files/chromium-78-protobuf-RepeatedPtrField-export.patch b/www-client/chromium/files/chromium-78-protobuf-RepeatedPtrField-export.patch new file mode 100644 index 0000000..ddb9e80 --- /dev/null +++ b/www-client/chromium/files/chromium-78-protobuf-RepeatedPtrField-export.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/protobuf/src/google/protobuf/repeated_field.h b/third_party/protobuf/src/google/protobuf/repeated_field.h +index b5b193c..4434854 100644 +--- a/third_party/protobuf/src/google/protobuf/repeated_field.h ++++ b/third_party/protobuf/src/google/protobuf/repeated_field.h +@@ -804,7 +804,7 @@ class StringTypeHandler { + // RepeatedPtrField is like RepeatedField, but used for repeated strings or + // Messages. + template <typename Element> +-class RepeatedPtrField final : private internal::RepeatedPtrFieldBase { ++class PROTOBUF_EXPORT RepeatedPtrField final : private internal::RepeatedPtrFieldBase { + public: + RepeatedPtrField(); + explicit RepeatedPtrField(Arena* arena); diff --git a/www-client/chromium/files/chromium-79-gcc-protobuf-alignas.patch b/www-client/chromium/files/chromium-79-gcc-protobuf-alignas.patch new file mode 100644 index 0000000..20180c4 --- /dev/null +++ b/www-client/chromium/files/chromium-79-gcc-protobuf-alignas.patch @@ -0,0 +1,81 @@ +From 5d66d5907ac3e76d1e382b8a8e8afe653bd00f4c Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sun, 31 May 2020 13:59:15 +0000 +Subject: [PATCH] Fix GCC build with PROTOBUF_USE_DLLS enabled + +GCC does not allow mixing __attribute__(()) syntax and alignas() +syntax. Re-use approach from chromium base/compiler_specific.h +--- + .../protobuf/src/google/protobuf/arena.h | 2 +- + .../protobuf/src/google/protobuf/port_def.inc | 29 +++++++++++++++++++ + .../src/google/protobuf/port_undef.inc | 1 + + 3 files changed, 31 insertions(+), 1 deletion(-) + +diff --git a/third_party/protobuf/src/google/protobuf/arena.h b/third_party/protobuf/src/google/protobuf/arena.h +index dedc221..a8515ce 100644 +--- a/third_party/protobuf/src/google/protobuf/arena.h ++++ b/third_party/protobuf/src/google/protobuf/arena.h +@@ -245,7 +245,7 @@ struct ArenaOptions { + // well as protobuf container types like RepeatedPtrField and Map. The protocol + // is internal to protobuf and is not guaranteed to be stable. Non-proto types + // should not rely on this protocol. +-class PROTOBUF_EXPORT alignas(8) Arena final { ++class PROTOBUF_EXPORT PROTOBUF_ALIGNAS(8) Arena final { + public: + // Arena constructor taking custom options. See ArenaOptions below for + // descriptions of the options available. +diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc +index f1bd85d..6d02b53 100644 +--- a/third_party/protobuf/src/google/protobuf/port_def.inc ++++ b/third_party/protobuf/src/google/protobuf/port_def.inc +@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); + #undef IN + #endif // _MSC_VER + ++// Specify memory alignment for structs, classes, etc. ++// Use like: ++// class PROTOBUF_ALIGNAS(16) MyClass { ... } ++// PROTOBUF_ALIGNAS(16) int array[4]; ++// ++// In most places you can use the C++11 keyword "alignas", which is preferred. ++// ++// But compilers have trouble mixing __attribute__((...)) syntax with ++// alignas(...) syntax. ++// ++// Doesn't work in clang or gcc: ++// struct alignas(16) __attribute__((packed)) S { char c; }; ++// Works in clang but not gcc: ++// struct __attribute__((packed)) alignas(16) S2 { char c; }; ++// Works in clang and gcc: ++// struct alignas(16) S3 { char c; } __attribute__((packed)); ++// ++// There are also some attributes that must be specified *before* a class ++// definition: visibility (used for exporting functions/classes) is one of ++// these attributes. This means that it is not possible to use alignas() with a ++// class that is marked as exported. ++#if defined(_MSC_VER) ++#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment)) ++#elif defined(__GNUC__) ++#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment))) ++#else ++#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment) ++#endif ++ + #if defined(__clang__) + #pragma clang diagnostic push + // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many +diff --git a/third_party/protobuf/src/google/protobuf/port_undef.inc b/third_party/protobuf/src/google/protobuf/port_undef.inc +index b7e67fe..ba1fffc 100644 +--- a/third_party/protobuf/src/google/protobuf/port_undef.inc ++++ b/third_party/protobuf/src/google/protobuf/port_undef.inc +@@ -80,6 +80,7 @@ + #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec + #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport + #undef PROTOBUF_EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport ++#undef PROTOBUF_ALIGNAS + + + +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-79-span-stlcompat.patch b/www-client/chromium/files/chromium-79-span-stlcompat.patch new file mode 100644 index 0000000..9b47ee7 --- /dev/null +++ b/www-client/chromium/files/chromium-79-span-stlcompat.patch @@ -0,0 +1,12 @@ +diff --git a/base/containers/span.h b/base/containers/span.h +index c03bdf836..ff00275e7 100644 +--- a/base/containers/span.h ++++ b/base/containers/span.h +@@ -224,6 +224,7 @@ class span : public internal::ExtentStorage<Extent> { + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; ++ using iterator_category = std::random_access_iterator_tag; + using iterator = CheckedContiguousIterator<T>; + using const_iterator = CheckedContiguousConstIterator<T>; + using reverse_iterator = std::reverse_iterator<iterator>; diff --git a/www-client/chromium/files/chromium-80-QuicStreamSendBuffer-deleted-move-constructor.patch b/www-client/chromium/files/chromium-80-QuicStreamSendBuffer-deleted-move-constructor.patch new file mode 100644 index 0000000..aa3d541 --- /dev/null +++ b/www-client/chromium/files/chromium-80-QuicStreamSendBuffer-deleted-move-constructor.patch @@ -0,0 +1,30 @@ +From 00f47df999c9b19e80fdc01db0ae9ca1b6a12b3a Mon Sep 17 00:00:00 2001 +From: vasilvv <vasilvv@google.com> +Date: Wed, 03 Apr 2019 13:58:53 -0700 +Subject: [PATCH] GCC: do not delete move constructor of QuicStreamSendBuffer + +QuicStreamSendBuffer constructor is implicitely required in the +initialization of the vector of substreams in QuicCryptoStream. +Though clang apparently ignores that, GCC fails to build. + +BUG=chromium:819294 + +Originally submitted by José Dapena Paz <jose.dapena@lge.com> at https://quiche-review.googlesource.com/c/quiche/+/2420 + +PiperOrigin-RevId: 241800134 +Change-Id: I4e3c97d6e5895d85340e8c1b740e6196d9104066 +--- + +diff --git a/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h b/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h +index e34514b..74e9d0d 100644 +--- a/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h ++++ b/net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h +@@ -62,7 +62,7 @@ + public: + explicit QuicStreamSendBuffer(QuicBufferAllocator* allocator); + QuicStreamSendBuffer(const QuicStreamSendBuffer& other) = delete; +- QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = delete; ++ QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = default; + ~QuicStreamSendBuffer(); + + // Save |data_length| of data starts at |iov_offset| in |iov| to send buffer. diff --git a/www-client/chromium/files/chromium-84-blink-disable-clang-format.patch b/www-client/chromium/files/chromium-84-blink-disable-clang-format.patch new file mode 100644 index 0000000..c573db8 --- /dev/null +++ b/www-client/chromium/files/chromium-84-blink-disable-clang-format.patch @@ -0,0 +1,33 @@ +From 08ac7188f414218ac9d764e29e7aa64a6bfc2f96 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sun, 31 May 2020 10:02:03 +0000 +Subject: [PATCH] disable clang-format for generated code in blink + +For GCC builds clang-format might be not available. Additionally, +current scripts look for clang-format within chromium sources and +don't consider system clang-format. +--- + .../bindings/scripts/bind_gen/codegen_utils.py | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +index 7021f1a..33bf5bf 100644 +--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py ++++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +@@ -150,12 +150,4 @@ def write_code_node_to_file(code_node, filepath): + + rendered_text = render_code_node(code_node) + +- format_result = style_format.auto_format(rendered_text, filename=filepath) +- if not format_result.did_succeed: +- raise RuntimeError("Style-formatting failed: filename = {filename}\n" +- "---- stderr ----\n" +- "{stderr}:".format( +- filename=format_result.filename, +- stderr=format_result.error_message)) +- +- web_idl.file_io.write_to_file_if_changed(filepath, format_result.contents) ++ web_idl.file_io.write_to_file_if_changed(filepath, rendered_text) +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-86-ConsumeDurationNumber-constexpr.patch b/www-client/chromium/files/chromium-86-ConsumeDurationNumber-constexpr.patch new file mode 100644 index 0000000..b623223 --- /dev/null +++ b/www-client/chromium/files/chromium-86-ConsumeDurationNumber-constexpr.patch @@ -0,0 +1,32 @@ +From f64e2d2daa64749995253f8ad00679ce74abdc1b Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jdapena@igalia.com> +Date: Wed, 19 Aug 2020 11:02:00 +0200 +Subject: [PATCH] GCC: ConsumeDurationNumber cannot be a constexpr + +Declaring base::ConsumeDurationNumber as constexpr is not valid, as it +uses the BasicStringPiece::begin method, that is not constexpr. + +build error in GCC: +../../base/time/time.cc: In function ‘constexpr base::Optional<base::{anonymous}::ParsedDecimal> base::{anonymous}::ConsumeDurationNumber(base::StringPiece&)’: +../../base/time/time.cc:67:63: error: call to non-‘constexpr’ function ‘const value_type* base::BasicStringPiece<STRING_TYPE>::begin() const [with STRING_TYPE = std::__cxx11::basic_string<char>; base::BasicStringPiece<STRING_TYPE>::const_iterator = const char*; base::BasicStringPiece<STRING_TYPE>::value_type = char]’ + 67 | StringPiece::const_iterator orig_start = number_string.begin(); + | ~~~~~~~~~~~~~~~~~~~^~ + +Bug: 859294 +Change-Id: Id987d003f66052848d7083bb33abc3acfd109b73 +--- + +diff --git a/base/time/time.cc b/base/time/time.cc +index 1b1a830..7c47419 100644 +--- a/base/time/time.cc ++++ b/base/time/time.cc +@@ -61,8 +61,7 @@ + // + // Adapted from absl: + // https://cs.chromium.org/chromium/src/third_party/abseil-cpp/absl/time/duration.cc?l=807&rcl=2c22e9135f107a4319582ae52e2e3e6b201b6b7c +-constexpr Optional<ParsedDecimal> ConsumeDurationNumber( +- StringPiece& number_string) { ++Optional<ParsedDecimal> ConsumeDurationNumber(StringPiece& number_string) { + ParsedDecimal res; + StringPiece::const_iterator orig_start = number_string.begin(); + // Parse contiguous digits. diff --git a/www-client/chromium/files/chromium-86-ImageMemoryBarrierData-init.patch b/www-client/chromium/files/chromium-86-ImageMemoryBarrierData-init.patch new file mode 100644 index 0000000..ff12a80 --- /dev/null +++ b/www-client/chromium/files/chromium-86-ImageMemoryBarrierData-init.patch @@ -0,0 +1,31 @@ +From 2879a6ba43b65c33e3c02432b4ae7a7462d24096 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 28 Aug 2020 07:23:29 +0000 +Subject: [PATCH] GCC: fix ImageMemoryBarrierData initialization + +GCC can't convert constant string to char[40]. Use const char * instead. +Otherwise fails like this: + +src/libANGLE/renderer/vulkan/vk_helpers.cpp:121:1: error: could not convert +'...' from '<brace-enclosed initializer list>' to +'const angle::PackedEnumMap<rx::vk::ImageLayout, rx::vk::{anonymous}::ImageMemoryBarrierData>' +--- + third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp +index af957d7..7fe82ae 100644 +--- a/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp ++++ b/third_party/angle/src/libANGLE/renderer/vulkan/vk_helpers.cpp +@@ -73,7 +73,7 @@ enum BarrierType + + struct ImageMemoryBarrierData + { +- char name[40]; ++ const char *name; + + // The Vk layout corresponding to the ImageLayout key. + VkImageLayout layout; +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-86-compiler.patch b/www-client/chromium/files/chromium-86-compiler.patch new file mode 100644 index 0000000..3088207 --- /dev/null +++ b/www-client/chromium/files/chromium-86-compiler.patch @@ -0,0 +1,159 @@ +From f4d0b0eb899005b4b8b6388e1d8bb82cc0018fc8 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Thu, 20 Aug 2020 19:12:21 +0000 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 52 +++++++++++----------------------- + 1 file changed, 17 insertions(+), 35 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 06c166f..fe5d340 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -254,8 +254,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -488,17 +486,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1575,7 +1562,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1584,10 +1571,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1596,15 +1579,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2002,7 +1976,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2037,7 +2012,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2077,7 +2053,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2109,7 +2086,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2134,7 +2112,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2251,7 +2230,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2346,7 +2326,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2399,7 +2380,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-86-nearby-explicit.patch b/www-client/chromium/files/chromium-86-nearby-explicit.patch new file mode 100644 index 0000000..84709cb --- /dev/null +++ b/www-client/chromium/files/chromium-86-nearby-explicit.patch @@ -0,0 +1,25 @@ +From 849e5c6b3a8746d9205102bd3df4e140cead405a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sat, 18 Jul 2020 15:11:13 +0000 +Subject: [PATCH] GCC: remove explicit from AtomicReference constructor + +--- + .../nearby/src/cpp/platform_v2/public/atomic_reference.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/nearby/src/cpp/platform_v2/public/atomic_reference.h b/third_party/nearby/src/cpp/platform_v2/public/atomic_reference.h +index 5742724..bbb8c01 100644 +--- a/third_party/nearby/src/cpp/platform_v2/public/atomic_reference.h ++++ b/third_party/nearby/src/cpp/platform_v2/public/atomic_reference.h +@@ -37,7 +37,7 @@ class AtomicReference<T, std::enable_if_t<sizeof(T) <= sizeof(std::uint32_t) && + final { + public: + using Platform = api::ImplementationPlatform; +- explicit AtomicReference(T value) ++ AtomicReference(T value) + : impl_(Platform::CreateAtomicUint32(static_cast<std::uint32_t>(value))) { + } + ~AtomicReference() = default; +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-86-nearby-include.patch b/www-client/chromium/files/chromium-86-nearby-include.patch new file mode 100644 index 0000000..d3f02c2 --- /dev/null +++ b/www-client/chromium/files/chromium-86-nearby-include.patch @@ -0,0 +1,24 @@ +From a5b2ee9dd7dfb186e26ec6c0c06c2ae1a9d27195 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sat, 18 Jul 2020 14:15:50 +0000 +Subject: [PATCH] IWYU: memcpy is defined in cstring + +--- + third_party/nearby/src/cpp/platform_v2/base/byte_array.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/nearby/src/cpp/platform_v2/base/byte_array.h b/third_party/nearby/src/cpp/platform_v2/base/byte_array.h +index ee5d0eb..4b1d79b 100644 +--- a/third_party/nearby/src/cpp/platform_v2/base/byte_array.h ++++ b/third_party/nearby/src/cpp/platform_v2/base/byte_array.h +@@ -17,6 +17,7 @@ + + #include <array> + #include <cstdint> ++#include <cstring> + #include <string> + #include <type_traits> + #include <utility> +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-87-CrossThreadPersistent-template.patch b/www-client/chromium/files/chromium-87-CrossThreadPersistent-template.patch new file mode 100644 index 0000000..585c91f --- /dev/null +++ b/www-client/chromium/files/chromium-87-CrossThreadPersistent-template.patch @@ -0,0 +1,32 @@ +From 37070745728cd7744e12fa5110cde304ab6a048d Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jdapena@igalia.com> +Date: Tue, 15 Sep 2020 16:55:19 +0200 +Subject: [PATCH] GCC: avoid GCC getting confused with wrong using resolution in CrossThreadPersistent + +In the method to assign a CrossThreadWeakPersistent<U> to a CrossThreadPersistent<T>, +there is a call to the parent class implementation of Get. It uses Parent, that is, +in CrossThreadPersistent<T> an alias to its parent. GCC resolves it as that, but +that's wrong, and it should resolve to the parent of CrossThreadWeakPersistent<U>. + +To avoid the problem, we define in that method ParentU resolving to the right +parent, and use a static cast to it. + +Bug: 819294 +Change-Id: I0152dac92d4a28eb1f1abbc56473204b62f33797 +--- + +diff --git a/third_party/blink/renderer/platform/heap/persistent.h b/third_party/blink/renderer/platform/heap/persistent.h +index f08f42f..32cadc0 100644 +--- a/third_party/blink/renderer/platform/heap/persistent.h ++++ b/third_party/blink/renderer/platform/heap/persistent.h +@@ -784,7 +784,9 @@ + CrossThreadPersistent<T>& CrossThreadPersistent<T>::operator=( + const CrossThreadWeakPersistent<U>& other) { + MutexLocker locker(ProcessHeap::CrossThreadPersistentMutex()); +- this->AssignUnsafe(other.Parent::Get()); ++ using ParentU = PersistentBase<U, kWeakPersistentConfiguration, ++ kCrossThreadPersistentConfiguration>; ++ this->AssignUnsafe(static_cast<const ParentU&>(other).Get()); + return *this; + } + diff --git a/www-client/chromium/files/chromium-87-CursorFactory-include.patch b/www-client/chromium/files/chromium-87-CursorFactory-include.patch new file mode 100644 index 0000000..98cb9cf --- /dev/null +++ b/www-client/chromium/files/chromium-87-CursorFactory-include.patch @@ -0,0 +1,36 @@ +From c4f6e8cd34a245c3640b86a91c9694d69594d80b Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Wed, 16 Sep 2020 15:05:02 +0000 +Subject: [PATCH] IWYU: ui::CursorFactory is now required independent from + Ozone + +--- + .../ui/views/chrome_browser_main_extra_parts_views_linux.cc | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +index 5a97d61..ccedd2a 100644 +--- a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc ++++ b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +@@ -7,6 +7,7 @@ + #include "chrome/browser/themes/theme_service_aura_linux.h" + #include "chrome/browser/ui/browser_list.h" + #include "chrome/browser/ui/views/theme_profile_key.h" ++#include "ui/base/cursor/cursor_factory.h" + #include "ui/display/screen.h" + #include "ui/views/linux_ui/linux_ui.h" + +@@ -15,10 +16,6 @@ + #include "ui/gtk/gtk_ui_delegate.h" + #endif + +-#if defined(USE_OZONE) +-#include "ui/base/cursor/cursor_factory.h" +-#endif +- + #if defined(USE_X11) + #include "ui/gfx/x/connection.h" // nogncheck + #if BUILDFLAG(USE_GTK) +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-87-SystemMemoryPressureEvaluator-namespace.patch b/www-client/chromium/files/chromium-87-SystemMemoryPressureEvaluator-namespace.patch new file mode 100644 index 0000000..3129a75 --- /dev/null +++ b/www-client/chromium/files/chromium-87-SystemMemoryPressureEvaluator-namespace.patch @@ -0,0 +1,70 @@ +From b73f096a06f4241a1459b0e02ddaa0bb4e14f7a1 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 4 Sep 2020 17:57:22 +0000 +Subject: [PATCH] GCC: fix clash in predefined macro "linux" + +"linux" is predefined in GCC and can't be used for namespace name. +--- + base/util/memory_pressure/system_memory_pressure_evaluator.cc | 2 +- + .../memory_pressure/system_memory_pressure_evaluator_linux.cc | 4 ++-- + .../memory_pressure/system_memory_pressure_evaluator_linux.h | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator.cc b/base/util/memory_pressure/system_memory_pressure_evaluator.cc +index babb4f8..4a9963b 100644 +--- a/base/util/memory_pressure/system_memory_pressure_evaluator.cc ++++ b/base/util/memory_pressure/system_memory_pressure_evaluator.cc +@@ -46,7 +46,7 @@ SystemMemoryPressureEvaluator::CreateDefaultSystemEvaluator( + } + return evaluator; + #elif defined(OS_LINUX) && !defined(OS_CHROMEOS) +- return std::make_unique<util::linux::SystemMemoryPressureEvaluator>( ++ return std::make_unique<util::os_linux::SystemMemoryPressureEvaluator>( + monitor->CreateVoter()); + #endif + return nullptr; +diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator_linux.cc b/base/util/memory_pressure/system_memory_pressure_evaluator_linux.cc +index 258d983..1878d88 100644 +--- a/base/util/memory_pressure/system_memory_pressure_evaluator_linux.cc ++++ b/base/util/memory_pressure/system_memory_pressure_evaluator_linux.cc +@@ -32,7 +32,7 @@ int GetAvailableSystemMemoryMiB(const base::SystemMemoryInfoKB& mem_info) { + } // namespace + + namespace util { +-namespace linux { ++namespace os_linux { + + const base::TimeDelta SystemMemoryPressureEvaluator::kModeratePressureCooldown = + base::TimeDelta::FromSeconds(10); +@@ -153,5 +153,5 @@ SystemMemoryPressureEvaluator::CalculateCurrentPressureLevel() { + return base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE; + } + +-} // namespace linux ++} // namespace os_linux + } // namespace util +diff --git a/base/util/memory_pressure/system_memory_pressure_evaluator_linux.h b/base/util/memory_pressure/system_memory_pressure_evaluator_linux.h +index 0f5c43d..3a24427 100644 +--- a/base/util/memory_pressure/system_memory_pressure_evaluator_linux.h ++++ b/base/util/memory_pressure/system_memory_pressure_evaluator_linux.h +@@ -13,7 +13,7 @@ + #include "base/util/memory_pressure/system_memory_pressure_evaluator.h" + + namespace util { +-namespace linux { ++namespace os_linux { + + // Linux memory pressure voter. Because there is no OS provided signal this + // polls at a low frequency, and applies internal hysteresis. +@@ -106,7 +106,7 @@ class SystemMemoryPressureEvaluator + SEQUENCE_CHECKER(sequence_checker_); + }; + +-} // namespace linux ++} // namespace os_linux + } // namespace util + + #endif // BASE_UTIL_MEMORY_PRESSURE_SYSTEM_MEMORY_PRESSURE_EVALUATOR_LINUX_H_ +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-87-Thumbnail-noexcept.patch b/www-client/chromium/files/chromium-87-Thumbnail-noexcept.patch new file mode 100644 index 0000000..76c3d43 --- /dev/null +++ b/www-client/chromium/files/chromium-87-Thumbnail-noexcept.patch @@ -0,0 +1,46 @@ +From 92db841a0d8449b46ce9d9e76bb4a23e5b370f9c Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 11 Sep 2020 07:07:00 +0000 +Subject: [PATCH] GCC: remove noexcept from PDF Thumbnail + +Move constructor/operator can't be noexcept, because of SkBitmap +member has no noexcept move constructor/operator. +--- + pdf/thumbnail.cc | 4 ++-- + pdf/thumbnail.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/pdf/thumbnail.cc b/pdf/thumbnail.cc +index d46b20b..82f4790 100644 +--- a/pdf/thumbnail.cc ++++ b/pdf/thumbnail.cc +@@ -113,9 +113,9 @@ Thumbnail::Thumbnail(const gfx::Size& page_size, float device_pixel_ratio) { + DCHECK(success); + } + +-Thumbnail::Thumbnail(Thumbnail&& other) noexcept = default; ++Thumbnail::Thumbnail(Thumbnail&& other) = default; + +-Thumbnail& Thumbnail::operator=(Thumbnail&& other) noexcept = default; ++Thumbnail& Thumbnail::operator=(Thumbnail&& other) = default; + + Thumbnail::~Thumbnail() = default; + +diff --git a/pdf/thumbnail.h b/pdf/thumbnail.h +index 4b2bdef..d62a56a 100644 +--- a/pdf/thumbnail.h ++++ b/pdf/thumbnail.h +@@ -17,8 +17,8 @@ class Thumbnail final { + public: + Thumbnail(); + Thumbnail(const gfx::Size& page_size, float device_pixel_ratio); +- Thumbnail(Thumbnail&& other) noexcept; +- Thumbnail& operator=(Thumbnail&& other) noexcept; ++ Thumbnail(Thumbnail&& other); ++ Thumbnail& operator=(Thumbnail&& other); + ~Thumbnail(); + + SkBitmap& bitmap() { return bitmap_; } +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-87-anonymous-struct.patch b/www-client/chromium/files/chromium-87-anonymous-struct.patch new file mode 100644 index 0000000..7d7c356 --- /dev/null +++ b/www-client/chromium/files/chromium-87-anonymous-struct.patch @@ -0,0 +1,61 @@ +From 9f2b2a3a6153be7ae5cef3305161c07fa2f6f70c Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jdapena@igalia.com> +Date: Tue, 15 Sep 2020 18:58:11 +0000 +Subject: [PATCH] GCC: do not use anonymous structs + +Two using declarations have been added in x11.h for an +unnamed struct. This is not allowed by C++ (and GCC). An example: +using XErrorEvent = struct { + ... +}; + +The solution is giving a name to the struct. + +Bug: 819294 +Change-Id: I9e77017851efe8e0a92fb37c01fdba693bb7a36d +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2412450 +Reviewed-by: Thomas Anderson <thomasanderson@chromium.org> +Commit-Queue: José Dapena Paz <jdapena@igalia.com> +Cr-Commit-Position: refs/heads/master@{#807126} +--- + +diff --git a/ui/gfx/x/x11.h b/ui/gfx/x/x11.h +index 6b36d48..d2dab40 100644 +--- a/ui/gfx/x/x11.h ++++ b/ui/gfx/x/x11.h +@@ -139,7 +139,7 @@ + + enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue }; + +-using XErrorEvent = struct { ++using XErrorEvent = struct _XErrorEvent { + int type; + Display* display; + XID resourceid; +@@ -149,7 +149,7 @@ + unsigned char minor_code; + }; + +-using XRectangle = struct { ++using XRectangle = struct _XRectangle { + short x, y; + unsigned short width, height; + }; +@@ -161,7 +161,7 @@ + XPointer private_data; + }; + +-using Visual = struct { ++using Visual = struct _Visual { + XExtData* ext_data; + VisualID visualid; + int c_class; +@@ -170,7 +170,7 @@ + int map_entries; + }; + +-using XVisualInfo = struct { ++using XVisualInfo = struct _XVisualInfo { + Visual* visual; + VisualID visualid; + int screen; diff --git a/www-client/chromium/files/chromium-87-compiler-r1.patch b/www-client/chromium/files/chromium-87-compiler-r1.patch new file mode 100644 index 0000000..181e724 --- /dev/null +++ b/www-client/chromium/files/chromium-87-compiler-r1.patch @@ -0,0 +1,166 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 4f6461b6b..b5d2c7700 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -254,8 +254,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -480,36 +478,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- +- # Pinned clang has enable-dse-memoryssa enabled by default but it's broken, +- # so we have to force it off. +- # Trunk clang has it disabled by default but it might work, so we force it +- # on so the ToT bots can check if it works now. +- if (!llvm_force_head_revision) { +- cflags += [ +- # TODO(https://crbug.com/1127713): Investigate, remove. +- "-mllvm", +- "-enable-dse-memoryssa=false", +- ] +- } +- if (llvm_force_head_revision) { +- cflags += [ +- # TODO(https://crbug.com/1127713): Investigate, remove. +- "-mllvm", +- "-enable-dse-memoryssa=true", +- ] +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1571,7 +1539,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1580,10 +1548,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1592,15 +1556,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1998,7 +1953,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2033,7 +1989,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2073,7 +2030,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2105,7 +2063,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2130,7 +2089,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2247,7 +2207,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2355,7 +2316,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2408,7 +2370,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-87-openscreen-crypto-include.patch b/www-client/chromium/files/chromium-87-openscreen-crypto-include.patch new file mode 100644 index 0000000..5edd10b --- /dev/null +++ b/www-client/chromium/files/chromium-87-openscreen-crypto-include.patch @@ -0,0 +1,11 @@ +--- a/third_party/openscreen/src/util/crypto/random_bytes.h 2020-10-03 07:37:39.335192533 +0800 ++++ b/third_party/openscreen/src/util/crypto/random_bytes.h 2020-10-03 07:37:29.548124971 +0800 +@@ -5,6 +5,8 @@ + #ifndef UTIL_CRYPTO_RANDOM_BYTES_H_ + #define UTIL_CRYPTO_RANDOM_BYTES_H_ + ++#include <stdint.h> ++ + #include <array> + + namespace openscreen { diff --git a/www-client/chromium/files/chromium-87-ozone-deps.patch b/www-client/chromium/files/chromium-87-ozone-deps.patch new file mode 100644 index 0000000..c9bac08 --- /dev/null +++ b/www-client/chromium/files/chromium-87-ozone-deps.patch @@ -0,0 +1,15 @@ +diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn +index 51b25f1a8..56dfeb165 100644 +--- a/chrome/browser/BUILD.gn ++++ b/chrome/browser/BUILD.gn +@@ -5073,7 +5073,9 @@ static_library("browser") { + "chrome_browser_main_extra_parts_ozone.cc", + "chrome_browser_main_extra_parts_ozone.h", + ] +- deps += [ "//ui/ozone" ] ++ if (use_ozone) { ++ deps += [ "//ui/ozone" ] ++ } + } + + if (enable_background_mode) { diff --git a/www-client/chromium/files/chromium-87-remotesyscall.patch b/www-client/chromium/files/chromium-87-remotesyscall.patch new file mode 100644 index 0000000..63d1cf9 --- /dev/null +++ b/www-client/chromium/files/chromium-87-remotesyscall.patch @@ -0,0 +1,13 @@ +diff --git a/sandbox/linux/syscall_broker/remote_syscall_arg_handler.cc b/sandbox/linux/syscall_broker/remote_syscall_arg_handler.cc +index 33ff80225..d503a86e0 100644 +--- a/sandbox/linux/syscall_broker/remote_syscall_arg_handler.cc ++++ b/sandbox/linux/syscall_broker/remote_syscall_arg_handler.cc +@@ -4,6 +4,8 @@ + + #include "sandbox/linux/syscall_broker/remote_syscall_arg_handler.h" + ++#include <string.h> ++ + #include <sys/ioctl.h> + #include <sys/syscall.h> + #include <sys/types.h> diff --git a/www-client/chromium/files/chromium-87-std-max_align_t.patch b/www-client/chromium/files/chromium-87-std-max_align_t.patch new file mode 100644 index 0000000..e37d0fb --- /dev/null +++ b/www-client/chromium/files/chromium-87-std-max_align_t.patch @@ -0,0 +1,43 @@ +From 1e0683735e26c6fcecb0977e0cdae5da2eaf7c84 Mon Sep 17 00:00:00 2001 +From: Jose Dapena Paz <jdapena@igalia.com> +Date: Tue, 22 Sep 2020 13:18:55 +0200 +Subject: [PATCH] libstdc++: use max_align_t without std prefix in partition alloc constants. + +Using std::max_align_t would require using cstddef instead of stddef.h. As +partition alloc constants is including stddef.h, let's remove the std:: +namespace prefix. + +This fixes this error building with libstdc++ +../../base/allocator/partition_allocator/partition_alloc_constants.h:200:51: error: ‘max_align_t’ is not a member of ‘std’; did you mean ‘max_align_t’? + +Bug: 957519 +Change-Id: I72b22428937e7b7b1e6bb31fb0ac0bef3b72c581 + +(Adjusted to work with clang too) +--- + +diff --git a/base/allocator/partition_allocator/partition_alloc_constants.h b/base/allocator/partition_allocator/partition_alloc_constants.h +index 0c74dbe..ef1488f 100644 +--- a/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -183,7 +183,7 @@ NumPartitionPagesPerSuperPage() { + } + + // Alignment has two constraints: +-// - Alignment requirement for scalar types: alignof(std::max_align_t) ++// - Alignment requirement for scalar types: alignof(max_align_t) + // - Alignment requirement for operator new(). + // + // The two are separate on Windows 64 bits, where the first one is 8 bytes, and +@@ -195,9 +195,9 @@ NumPartitionPagesPerSuperPage() { + // platforms, as Chrome's requirement is C++14 as of 2020. + #if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__) + static constexpr size_t kAlignment = +- std::max(alignof(std::max_align_t), __STDCPP_DEFAULT_NEW_ALIGNMENT__); ++ std::max(alignof(max_align_t), __STDCPP_DEFAULT_NEW_ALIGNMENT__); + #else +-static constexpr size_t kAlignment = alignof(std::max_align_t); ++static constexpr size_t kAlignment = alignof(max_align_t); + #endif + static_assert(kAlignment <= 16, + "PartitionAlloc doesn't support a fundamental alignment larger " diff --git a/www-client/chromium/files/chromium-87-thread_cache.patch b/www-client/chromium/files/chromium-87-thread_cache.patch new file mode 100644 index 0000000..b2ef990 --- /dev/null +++ b/www-client/chromium/files/chromium-87-thread_cache.patch @@ -0,0 +1,25 @@ +diff --git a/base/allocator/partition_allocator/partition_alloc.h b/base/allocator/partition_allocator/partition_alloc.h +index 549451e2d..17b7deab3 100644 +--- a/base/allocator/partition_allocator/partition_alloc.h ++++ b/base/allocator/partition_allocator/partition_alloc.h +@@ -582,7 +582,7 @@ struct BASE_EXPORT PartitionRoot { + EXCLUSIVE_LOCKS_REQUIRED(lock_); + void DecommitEmptyPages() EXCLUSIVE_LOCKS_REQUIRED(lock_); + +- friend class internal::ThreadCache; ++ friend class base::internal::ThreadCache; + }; + + static_assert(sizeof(PartitionRoot<internal::ThreadSafe>) == +diff --git a/base/allocator/partition_allocator/thread_cache.h b/base/allocator/partition_allocator/thread_cache.h +index dd71ccc09..05097470a 100644 +--- a/base/allocator/partition_allocator/thread_cache.h ++++ b/base/allocator/partition_allocator/thread_cache.h +@@ -5,6 +5,7 @@ + #ifndef BASE_ALLOCATOR_PARTITION_ALLOCATOR_THREAD_CACHE_H_ + #define BASE_ALLOCATOR_PARTITION_ALLOCATOR_THREAD_CACHE_H_ + ++#include <atomic> + #include <cstdint> + #include <memory> + diff --git a/www-client/chromium/files/chromium-88-angle-renderer.patch b/www-client/chromium/files/chromium-88-angle-renderer.patch new file mode 100644 index 0000000..257c00c --- /dev/null +++ b/www-client/chromium/files/chromium-88-angle-renderer.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/angle/src/libANGLE/renderer/EGLReusableSync.h b/third_party/angle/src/libANGLE/renderer/EGLReusableSync.h +index 9c65fccad..12c972565 100644 +--- a/third_party/angle/src/libANGLE/renderer/EGLReusableSync.h ++++ b/third_party/angle/src/libANGLE/renderer/EGLReusableSync.h +@@ -14,6 +14,8 @@ + + #include "common/angleutils.h" + ++#include <condition_variable> ++ + namespace rx + { + diff --git a/www-client/chromium/files/chromium-88-compiler.patch b/www-client/chromium/files/chromium-88-compiler.patch new file mode 100644 index 0000000..cb72cf2 --- /dev/null +++ b/www-client/chromium/files/chromium-88-compiler.patch @@ -0,0 +1,147 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 9d66490cd..4e79a84f8 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -254,8 +254,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -478,17 +476,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1574,7 +1561,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1583,10 +1570,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1595,15 +1578,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2006,7 +1980,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2041,7 +2016,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2081,7 +2057,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2113,7 +2090,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2138,7 +2116,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2267,7 +2246,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2365,7 +2345,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2418,7 +2399,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-88-compositor-dcheck.patch b/www-client/chromium/files/chromium-88-compositor-dcheck.patch new file mode 100644 index 0000000..ef51614 --- /dev/null +++ b/www-client/chromium/files/chromium-88-compositor-dcheck.patch @@ -0,0 +1,13 @@ +diff --git a/cc/metrics/compositor_frame_reporter.cc b/cc/metrics/compositor_frame_reporter.cc +index 93d0e2352..7ca5e379c 100644 +--- a/cc/metrics/compositor_frame_reporter.cc ++++ b/cc/metrics/compositor_frame_reporter.cc +@@ -671,7 +671,7 @@ void CompositorFrameReporter::ReportCompositorLatencyHistogram( + + void CompositorFrameReporter::ReportEventLatencyHistograms() const { + for (const auto& event_metrics : events_metrics_) { +- DCHECK_NE(event_metrics, nullptr); ++ DCHECK_NE(event_metrics.get(), nullptr); + const std::string histogram_base_name = + GetEventLatencyHistogramBaseName(*event_metrics); + const int event_type_index = static_cast<int>(event_metrics->type()); diff --git a/www-client/chromium/files/chromium-88-dawn-include.patch b/www-client/chromium/files/chromium-88-dawn-include.patch new file mode 100644 index 0000000..3b01546 --- /dev/null +++ b/www-client/chromium/files/chromium-88-dawn-include.patch @@ -0,0 +1,12 @@ +diff --git a/third_party/dawn/src/dawn_wire/ChunkedCommandSerializer.h b/third_party/dawn/src/dawn_wire/ChunkedCommandSerializer.h +index cef4ebba4..db28b87e2 100644 +--- a/third_party/dawn/src/dawn_wire/ChunkedCommandSerializer.h ++++ b/third_party/dawn/src/dawn_wire/ChunkedCommandSerializer.h +@@ -21,6 +21,7 @@ + + #include <algorithm> + #include <cstring> ++#include <memory> + + namespace dawn_wire { + diff --git a/www-client/chromium/files/chromium-88-dawn-size_t-std.patch b/www-client/chromium/files/chromium-88-dawn-size_t-std.patch new file mode 100644 index 0000000..f6392e9 --- /dev/null +++ b/www-client/chromium/files/chromium-88-dawn-size_t-std.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/dawn/src/common/ityp_array.h b/third_party/dawn/src/common/ityp_array.h +index 48e080fa5..d70d9e2da 100644 +--- a/third_party/dawn/src/common/ityp_array.h ++++ b/third_party/dawn/src/common/ityp_array.h +@@ -27,7 +27,7 @@ namespace ityp { + // indices must be a particular type |Index|. Dawn uses multiple flat maps of + // index-->data, and this class helps ensure an indices cannot be passed interchangably + // to a flat map of a different type. +- template <typename Index, typename Value, size_t Size> ++ template <typename Index, typename Value, std::size_t Size> + class array : private std::array<Value, Size> { + using I = UnderlyingType<Index>; + using Base = std::array<Value, Size>; diff --git a/www-client/chromium/files/chromium-88-gpu-internals-ozone.patch b/www-client/chromium/files/chromium-88-gpu-internals-ozone.patch new file mode 100644 index 0000000..c74e72b --- /dev/null +++ b/www-client/chromium/files/chromium-88-gpu-internals-ozone.patch @@ -0,0 +1,21 @@ +diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc +index ce9359413..472d42913 100644 +--- a/content/browser/gpu/gpu_internals_ui.cc ++++ b/content/browser/gpu/gpu_internals_ui.cc +@@ -69,6 +69,7 @@ + + #if defined(USE_OZONE) + #include "ui/base/ui_base_features.h" ++#include "ui/ozone/public/ozone_platform.h" + #endif + + namespace content { +@@ -393,7 +394,7 @@ std::unique_ptr<base::ListValue> GpuMemoryBufferInfo( + gpu::GpuMemoryBufferSupport gpu_memory_buffer_support; + + gpu::GpuMemoryBufferConfigurationSet native_config; +-#if defined(USE_X11) ++#if defined(USE_X11) && defined(USE_OZONE) + if (!features::IsUsingOzonePlatform()) { + for (const auto& config : gpu_extra_info.gpu_memory_buffer_support_x11) { + native_config.emplace(config); diff --git a/www-client/chromium/files/chromium-88-mediasource-uniqptrostream.patch b/www-client/chromium/files/chromium-88-mediasource-uniqptrostream.patch new file mode 100644 index 0000000..908a993 --- /dev/null +++ b/www-client/chromium/files/chromium-88-mediasource-uniqptrostream.patch @@ -0,0 +1,22 @@ +diff --git a/third_party/blink/renderer/modules/mediasource/cross_thread_media_source_attachment.cc b/third_party/blink/renderer/modules/mediasource/cross_thread_media_source_attachment.cc +index 4caa0753b..9efe53057 100644 +--- a/third_party/blink/renderer/modules/mediasource/cross_thread_media_source_attachment.cc ++++ b/third_party/blink/renderer/modules/mediasource/cross_thread_media_source_attachment.cc +@@ -575,7 +575,7 @@ void CrossThreadMediaSourceAttachment::CompleteAttachingToMediaElement( + MediaSourceTracer* /* tracer */, + std::unique_ptr<WebMediaSource> web_media_source) { + DVLOG(1) << __func__ << " this=" << this +- << ", web_media_source=" << web_media_source; ++ << ", web_media_source=" << web_media_source.get(); + DCHECK(web_media_source); + + { +@@ -618,7 +618,7 @@ void CrossThreadMediaSourceAttachment:: + DCHECK(worker_runner_->BelongsToCurrentThread()); + + DVLOG(1) << __func__ << " this=" << this +- << ", web_media_source=" << web_media_source; ++ << ", web_media_source=" << web_media_source.get(); + + // While awaiting task scheduling, the media element could have begun + // detachment or main context could have been destroyed. Return early in diff --git a/www-client/chromium/files/chromium-88-pcscan-nonfinal.patch b/www-client/chromium/files/chromium-88-pcscan-nonfinal.patch new file mode 100644 index 0000000..ea7f31f --- /dev/null +++ b/www-client/chromium/files/chromium-88-pcscan-nonfinal.patch @@ -0,0 +1,13 @@ +diff --git a/base/allocator/partition_allocator/pcscan.cc b/base/allocator/partition_allocator/pcscan.cc +index 5cc93dbbd..69aaa0934 100644 +--- a/base/allocator/partition_allocator/pcscan.cc ++++ b/base/allocator/partition_allocator/pcscan.cc +@@ -41,7 +41,7 @@ ThreadSafePartitionRoot& PCScanMetadataAllocator() { + // STL allocator which is needed to keep internal data structures required by + // PCScan. + template <typename T> +-class MetadataAllocator final { ++class MetadataAllocator { + public: + using value_type = T; + diff --git a/www-client/chromium/files/chromium-88-service-worker-registration-crash.patch b/www-client/chromium/files/chromium-88-service-worker-registration-crash.patch new file mode 100644 index 0000000..e543fca --- /dev/null +++ b/www-client/chromium/files/chromium-88-service-worker-registration-crash.patch @@ -0,0 +1,14 @@ +diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc +index 5cb7b2da2..fa11602ed 100644 +--- a/content/browser/service_worker/service_worker_container_host.cc ++++ b/content/browser/service_worker/service_worker_container_host.cc +@@ -626,6 +626,9 @@ void ServiceWorkerContainerHost::RemoveServiceWorkerRegistrationObjectHost( + int64_t registration_id) { + DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); + DCHECK(base::Contains(registration_object_hosts_, registration_id)); ++ std::unique_ptr<ServiceWorkerRegistrationObjectHost> to_be_deleted = ++ std::move(registration_object_hosts_[registration_id]); ++ DCHECK(to_be_deleted); + registration_object_hosts_.erase(registration_id); + } + diff --git a/www-client/chromium/files/chromium-88-system-icu.patch b/www-client/chromium/files/chromium-88-system-icu.patch new file mode 100644 index 0000000..968143e --- /dev/null +++ b/www-client/chromium/files/chromium-88-system-icu.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc +index fb8ab0530..5d4ea13e7 100644 +--- a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc ++++ b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc +@@ -432,7 +432,7 @@ String TextCodecICU::Decode(const char* bytes, + // ICU decodes it as U+E5E5. + if (!strcmp(encoding_.GetName(), "GBK")) { + if (EqualIgnoringASCIICase(encoding_.GetName(), "gb18030")) +- resultString.Replace(0xE5E5, ideographicSpaceCharacter); ++ resultString.Replace(0xE5E5, kIdeographicSpaceCharacter); + // Make GBK compliant to the encoding spec and align with GB18030 + resultString.Replace(0x01F9, 0xE7C8); + // FIXME: Once https://www.w3.org/Bugs/Public/show_bug.cgi?id=28740#c3 diff --git a/www-client/chromium/files/chromium-88-tree-formatter-include.patch b/www-client/chromium/files/chromium-88-tree-formatter-include.patch new file mode 100644 index 0000000..71258c5 --- /dev/null +++ b/www-client/chromium/files/chromium-88-tree-formatter-include.patch @@ -0,0 +1,14 @@ +diff --git a/ui/accessibility/platform/inspect/tree_formatter.h b/ui/accessibility/platform/inspect/tree_formatter.h +index 4a70a4d54..532da613a 100644 +--- a/ui/accessibility/platform/inspect/tree_formatter.h ++++ b/ui/accessibility/platform/inspect/tree_formatter.h +@@ -5,6 +5,9 @@ + #ifndef UI_ACCESSIBILITY_PLATFORM_INSPECT_TREE_FORMATTER_H_ + #define UI_ACCESSIBILITY_PLATFORM_INSPECT_TREE_FORMATTER_H_ + ++#include <vector> ++#include <memory> ++ + #include "ui/accessibility/platform/inspect/inspect.h" + + #include "ui/gfx/native_widget_types.h" diff --git a/www-client/chromium/files/chromium-89-CursorFactory-include.patch b/www-client/chromium/files/chromium-89-CursorFactory-include.patch new file mode 100644 index 0000000..dfce7bc --- /dev/null +++ b/www-client/chromium/files/chromium-89-CursorFactory-include.patch @@ -0,0 +1,20 @@ +diff --git a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +index d69bec5b8..0f9a87571 100644 +--- a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc ++++ b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.cc +@@ -8,6 +8,7 @@ + #include "chrome/browser/ui/browser_list.h" + #include "chrome/browser/ui/views/theme_profile_key.h" + #include "ui/base/ime/linux/fake_input_method_context_factory.h" ++#include "ui/base/cursor/cursor_factory.h" + #include "ui/display/screen.h" + #include "ui/views/linux_ui/linux_ui.h" + +@@ -17,7 +18,6 @@ + #endif + + #if defined(USE_OZONE) +-#include "ui/base/cursor/cursor_factory.h" + #include "ui/base/ime/input_method.h" + #include "ui/base/ui_base_features.h" + #include "ui/ozone/public/ozone_platform.h" diff --git a/www-client/chromium/files/chromium-89-EnumTable-crash.patch b/www-client/chromium/files/chromium-89-EnumTable-crash.patch new file mode 100644 index 0000000..89a5070 --- /dev/null +++ b/www-client/chromium/files/chromium-89-EnumTable-crash.patch @@ -0,0 +1,71 @@ +diff --git a/components/cast_channel/enum_table.h b/components/cast_channel/enum_table.h +index e3130c7..2ad16ea 100644 +--- a/components/cast_channel/enum_table.h ++++ b/components/cast_channel/enum_table.h +@@ -212,7 +212,7 @@ class + + template <typename E> + friend class EnumTable; +- DISALLOW_COPY_AND_ASSIGN(GenericEnumTableEntry); ++ DISALLOW_ASSIGN(GenericEnumTableEntry); + }; + + // Yes, these constructors really needs to be inlined. Even though they look +@@ -250,8 +250,7 @@ class EnumTable { + // Constructor for regular entries. + constexpr Entry(E value, base::StringPiece str) + : GenericEnumTableEntry(static_cast<int32_t>(value), str) {} +- +- DISALLOW_COPY_AND_ASSIGN(Entry); ++ DISALLOW_ASSIGN(Entry); + }; + + static_assert(sizeof(E) <= sizeof(int32_t), +@@ -306,15 +305,14 @@ class EnumTable { + if (is_sorted_) { + const std::size_t index = static_cast<std::size_t>(value); + if (ANALYZER_ASSUME_TRUE(index < data_.size())) { +- const auto& entry = data_.begin()[index]; ++ const auto& entry = data_[index]; + if (ANALYZER_ASSUME_TRUE(entry.has_str())) + return entry.str(); + } + return base::nullopt; + } + return GenericEnumTableEntry::FindByValue( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), static_cast<int32_t>(value)); ++ &data_[0], data_.size(), static_cast<int32_t>(value)); + } + + // This overload of GetString is designed for cases where the argument is a +@@ -342,8 +340,7 @@ class EnumTable { + // enum value directly. + base::Optional<E> GetEnum(base::StringPiece str) const { + auto* entry = GenericEnumTableEntry::FindByString( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), str); ++ &data_[0], data_.size(), str); + return entry ? static_cast<E>(entry->value) : base::Optional<E>(); + } + +@@ -358,7 +355,7 @@ class EnumTable { + // Align the data on a cache line boundary. + alignas(64) + #endif +- std::initializer_list<Entry> data_; ++ const std::vector<Entry> data_; + bool is_sorted_; + + constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted) +@@ -370,8 +367,8 @@ class EnumTable { + + for (std::size_t i = 0; i < data.size(); i++) { + for (std::size_t j = i + 1; j < data.size(); j++) { +- const Entry& ei = data.begin()[i]; +- const Entry& ej = data.begin()[j]; ++ const Entry& ei = data[i]; ++ const Entry& ej = data[j]; + DCHECK(ei.value != ej.value) + << "Found duplicate enum values at indices " << i << " and " << j; + DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str())) diff --git a/www-client/chromium/files/chromium-89-angle-display.patch b/www-client/chromium/files/chromium-89-angle-display.patch new file mode 100644 index 0000000..d467ce9 --- /dev/null +++ b/www-client/chromium/files/chromium-89-angle-display.patch @@ -0,0 +1,1747 @@ +diff --git a/third_party/angle/scripts/code_generation_hashes/GL_EGL_entry_points.json b/third_party/angle/scripts/code_generation_hashes/GL_EGL_entry_points.json +index c506d31fb..df8758d30 100644 +--- a/third_party/angle/scripts/code_generation_hashes/GL_EGL_entry_points.json ++++ b/third_party/angle/scripts/code_generation_hashes/GL_EGL_entry_points.json +@@ -8,7 +8,7 @@ + "scripts/entry_point_packed_gl_enums.json": + "846be5dc8cb36076207699b025633fcc", + "scripts/generate_entry_points.py": +- "95fc7635243122e679e82e1757816ab3", ++ "d15fcd0f5e3296787753ff507f7051d9", + "scripts/gl.xml": + "f66967f3f3d696b5d8306fd80bbd49a8", + "scripts/gl_angle_ext.xml": +@@ -102,7 +102,7 @@ + "src/libANGLE/frame_capture_utils_autogen.h": + "652b821a877d6eb2c62ba8d151157eea", + "src/libANGLE/validationEGL_autogen.h": +- "b3c0eae46748da68d6833cc40e4bb486", ++ "3927fa260ad183fd9193d65b3f8d82c5", + "src/libANGLE/validationES1_autogen.h": + "c8edb0a5b26303bf7c4692b9d0b05c1f", + "src/libANGLE/validationES2_autogen.h": +@@ -238,17 +238,17 @@ + "src/libGL/libGL_autogen.def": + "2789d87b05eea9f53d52e2aff499b785", + "src/libGLESv2/egl_ext_stubs_autogen.h": +- "03de6401c1695f8ca4acbde9c3ae1ba2", ++ "aeb007419aaab7b5e52b084d83dda77c", + "src/libGLESv2/egl_get_labeled_object_data.json": + "2f4148b2ddf34e62670e32c5e6da4937", + "src/libGLESv2/egl_stubs_autogen.h": +- "1c9d160acb1ed9bf5e7c26918d4a039e", ++ "6439daa350c1663e71dd0af37dcc91df", + "src/libGLESv2/entry_points_egl_autogen.cpp": +- "9fd1b2d1e0dbab804e854e33e5bc9ef2", ++ "ba9796b20452dbbe4180480aae02b8a3", + "src/libGLESv2/entry_points_egl_autogen.h": + "3bc7a8df9deadd7cfd615d0cfad0c6a8", + "src/libGLESv2/entry_points_egl_ext_autogen.cpp": +- "f52756d7a31ce136ea04a67e0ea1b447", ++ "5397ab40e9cbe1d7aa3faf91154a837a", + "src/libGLESv2/entry_points_egl_ext_autogen.h": + "9154781afd9bd6354ec6fc201b43c790", + "src/libGLESv2/entry_points_gles_1_0_autogen.cpp": +@@ -283,4 +283,4 @@ + "f93450c1f787f3da53f2525865568989", + "src/libGLESv2/libGLESv2_with_capture_autogen.def": + "7b78ab59dd1fe360a5d3c1f513c7ce55" +-} +\ No newline at end of file ++} +diff --git a/third_party/angle/scripts/generate_entry_points.py b/third_party/angle/scripts/generate_entry_points.py +index de26a60ad..0e99f6bf2 100755 +--- a/third_party/angle/scripts/generate_entry_points.py ++++ b/third_party/angle/scripts/generate_entry_points.py +@@ -1010,7 +1010,8 @@ EGL_PACKED_TYPES = { + "EGLContext": "gl::Context *", + "EGLConfig": "Config *", + "EGLDeviceEXT": "Device *", +- "EGLDisplay": "Display *", ++ # Needs an explicit namespace to avoid an X11 namespace collision. ++ "EGLDisplay": "egl::Display *", + "EGLImage": "Image *", + "EGLImageKHR": "Image *", + "EGLStreamKHR": "Stream *", +@@ -2085,7 +2086,7 @@ def get_egl_entry_point_labeled_object(ep_to_object, cmd_stripped, params, packe + return just_the_name_packed(param, packed_enums) + return None + +- display_param = find_param(params, "Display", packed_enums) ++ display_param = find_param(params, "egl::Display", packed_enums) + + # For entry points not listed in the JSON file, they default to an EGLDisplay or nothing. + if cmd_stripped not in ep_to_object: +diff --git a/third_party/angle/src/libANGLE/validationEGL_autogen.h b/third_party/angle/src/libANGLE/validationEGL_autogen.h +index aa43ab156..869bd86e5 100644 +--- a/third_party/angle/src/libANGLE/validationEGL_autogen.h ++++ b/third_party/angle/src/libANGLE/validationEGL_autogen.h +@@ -18,47 +18,47 @@ namespace egl + + // EGL 1.0 + bool ValidateChooseConfig(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const AttributeMap &attrib_listPacked, + const EGLConfig *configs, + EGLint config_size, + const EGLint *num_config); + bool ValidateCopyBuffers(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLNativePixmapType target); + bool ValidateCreateContext(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const gl::Context *share_contextPacked, + const AttributeMap &attrib_listPacked); + bool ValidateCreatePbufferSurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const AttributeMap &attrib_listPacked); + bool ValidateCreatePixmapSurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + EGLNativePixmapType pixmap, + const AttributeMap &attrib_listPacked); + bool ValidateCreateWindowSurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + EGLNativeWindowType win, + const AttributeMap &attrib_listPacked); + bool ValidateDestroyContext(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked); + bool ValidateDestroySurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked); + bool ValidateGetConfigAttrib(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + EGLint attribute, + const EGLint *value); + bool ValidateGetConfigs(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const EGLConfig *configs, + EGLint config_size, + const EGLint *num_config); +@@ -68,52 +68,54 @@ bool ValidateGetDisplay(const ValidationContext *val, EGLNativeDisplayType displ + bool ValidateGetError(const ValidationContext *val); + bool ValidateGetProcAddress(const ValidationContext *val, const char *procname); + bool ValidateInitialize(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const EGLint *major, + const EGLint *minor); + bool ValidateMakeCurrent(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *drawPacked, + const Surface *readPacked, + const gl::Context *ctxPacked); + bool ValidateQueryContext(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked, + EGLint attribute, + const EGLint *value); +-bool ValidateQueryString(const ValidationContext *val, const Display *dpyPacked, EGLint name); ++bool ValidateQueryString(const ValidationContext *val, const egl::Display *dpyPacked, EGLint name); + bool ValidateQuerySurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint attribute, + const EGLint *value); + bool ValidateSwapBuffers(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked); +-bool ValidateTerminate(const ValidationContext *val, const Display *dpyPacked); ++bool ValidateTerminate(const ValidationContext *val, const egl::Display *dpyPacked); + bool ValidateWaitGL(const ValidationContext *val); + bool ValidateWaitNative(const ValidationContext *val, EGLint engine); + + // EGL 1.1 + bool ValidateBindTexImage(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint buffer); + bool ValidateReleaseTexImage(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint buffer); + bool ValidateSurfaceAttrib(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint attribute, + EGLint value); +-bool ValidateSwapInterval(const ValidationContext *val, const Display *dpyPacked, EGLint interval); ++bool ValidateSwapInterval(const ValidationContext *val, ++ const egl::Display *dpyPacked, ++ EGLint interval); + + // EGL 1.2 + bool ValidateBindAPI(const ValidationContext *val, EGLenum api); + bool ValidateCreatePbufferFromClientBuffer(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLenum buftype, + EGLClientBuffer buffer, + const Config *configPacked, +@@ -127,53 +129,53 @@ bool ValidateGetCurrentContext(const ValidationContext *val); + + // EGL 1.5 + bool ValidateClientWaitSync(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint flags, + EGLTime timeout); + bool ValidateCreateImage(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked, + EGLenum target, + EGLClientBuffer buffer, + const AttributeMap &attrib_listPacked); + bool ValidateCreatePlatformPixmapSurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const void *native_pixmap, + const AttributeMap &attrib_listPacked); + bool ValidateCreatePlatformWindowSurface(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const void *native_window, + const AttributeMap &attrib_listPacked); + bool ValidateCreateSync(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLenum type, + const AttributeMap &attrib_listPacked); + bool ValidateDestroyImage(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Image *imagePacked); + bool ValidateDestroySync(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked); + bool ValidateGetPlatformDisplay(const ValidationContext *val, + EGLenum platform, + const void *native_display, + const AttributeMap &attrib_listPacked); + bool ValidateGetSyncAttrib(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint attribute, + const EGLAttrib *value); + bool ValidateWaitSync(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint flags); + + // EGL_ANDROID_blob_cache + bool ValidateSetBlobCacheFuncsANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLSetBlobFuncANDROID set, + EGLGetBlobFuncANDROID get); + +@@ -183,25 +185,25 @@ bool ValidateCreateNativeClientBufferANDROID(const ValidationContext *val, + + // EGL_ANDROID_get_frame_timestamps + bool ValidateGetCompositorTimingSupportedANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + CompositorTiming namePacked); + bool ValidateGetCompositorTimingANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint numTimestamps, + const EGLint *names, + const EGLnsecsANDROID *values); + bool ValidateGetNextFrameIdANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + const EGLuint64KHR *frameId); + bool ValidateGetFrameTimestampSupportedANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + Timestamp timestampPacked); + bool ValidateGetFrameTimestampsANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLuint64KHR frameId, + EGLint numTimestamps, +@@ -214,12 +216,12 @@ bool ValidateGetNativeClientBufferANDROID(const ValidationContext *val, + + // EGL_ANDROID_native_fence_sync + bool ValidateDupNativeFenceFDANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked); + + // EGL_ANDROID_presentation_time + bool ValidatePresentationTimeANDROID(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLnsecsANDROID time); + +@@ -232,79 +234,79 @@ bool ValidateReleaseDeviceANGLE(const ValidationContext *val, const Device *devi + + // EGL_ANGLE_feature_control + bool ValidateQueryStringiANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLint name, + EGLint index); + bool ValidateQueryDisplayAttribANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLint attribute, + const EGLAttrib *value); + + // EGL_ANGLE_power_preference + bool ValidateReleaseHighPowerGPUANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked); + bool ValidateReacquireHighPowerGPUANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked); +-bool ValidateHandleGPUSwitchANGLE(const ValidationContext *val, const Display *dpyPacked); ++bool ValidateHandleGPUSwitchANGLE(const ValidationContext *val, const egl::Display *dpyPacked); + + // EGL_ANGLE_program_cache_control + bool ValidateProgramCacheGetAttribANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLenum attrib); + bool ValidateProgramCacheQueryANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLint index, + const void *key, + const EGLint *keysize, + const void *binary, + const EGLint *binarysize); + bool ValidateProgramCachePopulateANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const void *key, + EGLint keysize, + const void *binary, + EGLint binarysize); + bool ValidateProgramCacheResizeANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLint limit, + EGLint mode); + + // EGL_ANGLE_query_surface_pointer + bool ValidateQuerySurfacePointerANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint attribute, + void *const *value); + + // EGL_ANGLE_stream_producer_d3d_texture + bool ValidateCreateStreamProducerD3DTextureANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + const AttributeMap &attrib_listPacked); + bool ValidateStreamPostD3DTextureANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + const void *texture, + const AttributeMap &attrib_listPacked); + + // EGL_ANGLE_swap_with_frame_token + bool ValidateSwapBuffersWithFrameTokenANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLFrameTokenANGLE frametoken); + + // EGL_ANGLE_sync_control_rate + bool ValidateGetMscRateANGLE(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + const EGLint *numerator, + const EGLint *denominator); + + // EGL_CHROMIUM_sync_control + bool ValidateGetSyncValuesCHROMIUM(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + const EGLuint64KHR *ust, + const EGLuint64KHR *msc, +@@ -319,18 +321,18 @@ bool ValidateQueryDeviceStringEXT(const ValidationContext *val, + const Device *devicePacked, + EGLint name); + bool ValidateQueryDisplayAttribEXT(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLint attribute, + const EGLAttrib *value); + + // EGL_EXT_platform_base + bool ValidateCreatePlatformPixmapSurfaceEXT(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const void *native_pixmap, + const AttributeMap &attrib_listPacked); + bool ValidateCreatePlatformWindowSurfaceEXT(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Config *configPacked, + const void *native_window, + const AttributeMap &attrib_listPacked); +@@ -344,7 +346,7 @@ bool ValidateDebugMessageControlKHR(const ValidationContext *val, + EGLDEBUGPROCKHR callback, + const AttributeMap &attrib_listPacked); + bool ValidateLabelObjectKHR(const ValidationContext *val, +- const Display *displayPacked, ++ const egl::Display *displayPacked, + ObjectType objectTypePacked, + EGLObjectKHR object, + EGLLabelKHR label); +@@ -352,90 +354,90 @@ bool ValidateQueryDebugKHR(const ValidationContext *val, EGLint attribute, const + + // EGL_KHR_fence_sync + bool ValidateClientWaitSyncKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint flags, + EGLTimeKHR timeout); + bool ValidateCreateSyncKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + EGLenum type, + const AttributeMap &attrib_listPacked); + bool ValidateDestroySyncKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked); + bool ValidateGetSyncAttribKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint attribute, + const EGLint *value); + + // EGL_KHR_image + bool ValidateCreateImageKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const gl::Context *ctxPacked, + EGLenum target, + EGLClientBuffer buffer, + const AttributeMap &attrib_listPacked); + bool ValidateDestroyImageKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Image *imagePacked); + + // EGL_KHR_reusable_sync + bool ValidateSignalSyncKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLenum mode); + + // EGL_KHR_stream + bool ValidateCreateStreamKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const AttributeMap &attrib_listPacked); + bool ValidateDestroyStreamKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked); + bool ValidateQueryStreamKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + EGLenum attribute, + const EGLint *value); + bool ValidateQueryStreamu64KHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + EGLenum attribute, + const EGLuint64KHR *value); + bool ValidateStreamAttribKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + EGLenum attribute, + EGLint value); + + // EGL_KHR_stream_consumer_gltexture + bool ValidateStreamConsumerAcquireKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked); + bool ValidateStreamConsumerGLTextureExternalKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked); + bool ValidateStreamConsumerReleaseKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked); + + // EGL_KHR_swap_buffers_with_damage + bool ValidateSwapBuffersWithDamageKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + const EGLint *rects, + EGLint n_rects); + + // EGL_KHR_wait_sync + bool ValidateWaitSyncKHR(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Sync *syncPacked, + EGLint flags); + + // EGL_NV_post_sub_buffer + bool ValidatePostSubBufferNV(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Surface *surfacePacked, + EGLint x, + EGLint y, +@@ -444,7 +446,7 @@ bool ValidatePostSubBufferNV(const ValidationContext *val, + + // EGL_NV_stream_consumer_gltexture_yuv + bool ValidateStreamConsumerGLTextureExternalAttribsNV(const ValidationContext *val, +- const Display *dpyPacked, ++ const egl::Display *dpyPacked, + const Stream *streamPacked, + const AttributeMap &attrib_listPacked); + } // namespace egl +diff --git a/third_party/angle/src/libGLESv2/egl_ext_stubs_autogen.h b/third_party/angle/src/libGLESv2/egl_ext_stubs_autogen.h +index aecd051d9..404717bde 100644 +--- a/third_party/angle/src/libGLESv2/egl_ext_stubs_autogen.h ++++ b/third_party/angle/src/libGLESv2/egl_ext_stubs_autogen.h +@@ -33,12 +33,12 @@ class Thread; + struct Config; + + EGLint ClientWaitSyncKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Sync *syncPacked, + EGLint flags, + EGLTimeKHR timeout); + EGLImageKHR CreateImageKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + gl::Context *ctxPacked, + EGLenum target, + EGLClientBuffer buffer, +@@ -46,75 +46,75 @@ EGLImageKHR CreateImageKHR(Thread *thread, + EGLClientBuffer CreateNativeClientBufferANDROID(Thread *thread, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePlatformPixmapSurfaceEXT(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + void *native_pixmap, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePlatformWindowSurfaceEXT(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + void *native_window, + const AttributeMap &attrib_listPacked); + EGLStreamKHR CreateStreamKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + const AttributeMap &attrib_listPacked); + EGLSyncKHR CreateSyncKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLenum type, + const AttributeMap &attrib_listPacked); + EGLint DebugMessageControlKHR(Thread *thread, + EGLDEBUGPROCKHR callback, + const AttributeMap &attrib_listPacked); +-EGLBoolean DestroyImageKHR(Thread *thread, Display *dpyPacked, Image *imagePacked); +-EGLBoolean DestroyStreamKHR(Thread *thread, Display *dpyPacked, Stream *streamPacked); +-EGLBoolean DestroySyncKHR(Thread *thread, Display *dpyPacked, Sync *syncPacked); +-EGLint DupNativeFenceFDANDROID(Thread *thread, Display *dpyPacked, Sync *syncPacked); ++EGLBoolean DestroyImageKHR(Thread *thread, egl::Display *dpyPacked, Image *imagePacked); ++EGLBoolean DestroyStreamKHR(Thread *thread, egl::Display *dpyPacked, Stream *streamPacked); ++EGLBoolean DestroySyncKHR(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked); ++EGLint DupNativeFenceFDANDROID(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked); + EGLClientBuffer GetNativeClientBufferANDROID(Thread *thread, const struct AHardwareBuffer *buffer); + EGLDisplay GetPlatformDisplayEXT(Thread *thread, + EGLenum platform, + void *native_display, + const AttributeMap &attrib_listPacked); + EGLBoolean GetSyncAttribKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Sync *syncPacked, + EGLint attribute, + EGLint *value); + EGLint LabelObjectKHR(Thread *thread, +- Display *displayPacked, ++ egl::Display *displayPacked, + ObjectType objectTypePacked, + EGLObjectKHR object, + EGLLabelKHR label); + EGLBoolean PostSubBufferNV(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint x, + EGLint y, + EGLint width, + EGLint height); + EGLBoolean PresentationTimeANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLnsecsANDROID time); + EGLBoolean GetCompositorTimingSupportedANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + CompositorTiming namePacked); + EGLBoolean GetCompositorTimingANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint numTimestamps, + const EGLint *names, + EGLnsecsANDROID *values); + EGLBoolean GetNextFrameIdANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLuint64KHR *frameId); + EGLBoolean GetFrameTimestampSupportedANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + Timestamp timestampPacked); + EGLBoolean GetFrameTimestampsANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLuint64KHR frameId, + EGLint numTimestamps, +@@ -127,99 +127,99 @@ EGLBoolean QueryDeviceAttribEXT(Thread *thread, + EGLAttrib *value); + const char *QueryDeviceStringEXT(Thread *thread, Device *devicePacked, EGLint name); + EGLBoolean QueryDisplayAttribEXT(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLint attribute, + EGLAttrib *value); + EGLBoolean QueryStreamKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + EGLenum attribute, + EGLint *value); + EGLBoolean QueryStreamu64KHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + EGLenum attribute, + EGLuint64KHR *value); + EGLBoolean QuerySurfacePointerANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint attribute, + void **value); + void SetBlobCacheFuncsANDROID(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLSetBlobFuncANDROID set, + EGLGetBlobFuncANDROID get); +-EGLBoolean SignalSyncKHR(Thread *thread, Display *dpyPacked, Sync *syncPacked, EGLenum mode); ++EGLBoolean SignalSyncKHR(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked, EGLenum mode); + EGLBoolean StreamAttribKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + EGLenum attribute, + EGLint value); +-EGLBoolean StreamConsumerAcquireKHR(Thread *thread, Display *dpyPacked, Stream *streamPacked); ++EGLBoolean StreamConsumerAcquireKHR(Thread *thread, egl::Display *dpyPacked, Stream *streamPacked); + EGLBoolean StreamConsumerGLTextureExternalKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked); + EGLBoolean StreamConsumerGLTextureExternalAttribsNV(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + const AttributeMap &attrib_listPacked); +-EGLBoolean StreamConsumerReleaseKHR(Thread *thread, Display *dpyPacked, Stream *streamPacked); ++EGLBoolean StreamConsumerReleaseKHR(Thread *thread, egl::Display *dpyPacked, Stream *streamPacked); + EGLBoolean SwapBuffersWithDamageKHR(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint *rects, + EGLint n_rects); +-EGLint WaitSyncKHR(Thread *thread, Display *dpyPacked, Sync *syncPacked, EGLint flags); ++EGLint WaitSyncKHR(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked, EGLint flags); + EGLDeviceEXT CreateDeviceANGLE(Thread *thread, + EGLint device_type, + void *native_device, + const EGLAttrib *attrib_list); + EGLBoolean ReleaseDeviceANGLE(Thread *thread, Device *devicePacked); + EGLBoolean CreateStreamProducerD3DTextureANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + const AttributeMap &attrib_listPacked); + EGLBoolean StreamPostD3DTextureANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Stream *streamPacked, + void *texture, + const AttributeMap &attrib_listPacked); + EGLBoolean GetMscRateANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint *numerator, + EGLint *denominator); + EGLBoolean GetSyncValuesCHROMIUM(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLuint64KHR *ust, + EGLuint64KHR *msc, + EGLuint64KHR *sbc); +-EGLint ProgramCacheGetAttribANGLE(Thread *thread, Display *dpyPacked, EGLenum attrib); ++EGLint ProgramCacheGetAttribANGLE(Thread *thread, egl::Display *dpyPacked, EGLenum attrib); + void ProgramCacheQueryANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLint index, + void *key, + EGLint *keysize, + void *binary, + EGLint *binarysize); + void ProgramCachePopulateANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + const void *key, + EGLint keysize, + const void *binary, + EGLint binarysize); +-EGLint ProgramCacheResizeANGLE(Thread *thread, Display *dpyPacked, EGLint limit, EGLint mode); +-const char *QueryStringiANGLE(Thread *thread, Display *dpyPacked, EGLint name, EGLint index); ++EGLint ProgramCacheResizeANGLE(Thread *thread, egl::Display *dpyPacked, EGLint limit, EGLint mode); ++const char *QueryStringiANGLE(Thread *thread, egl::Display *dpyPacked, EGLint name, EGLint index); + EGLBoolean SwapBuffersWithFrameTokenANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLFrameTokenANGLE frametoken); +-void ReleaseHighPowerGPUANGLE(Thread *thread, Display *dpyPacked, gl::Context *ctxPacked); +-void ReacquireHighPowerGPUANGLE(Thread *thread, Display *dpyPacked, gl::Context *ctxPacked); +-void HandleGPUSwitchANGLE(Thread *thread, Display *dpyPacked); ++void ReleaseHighPowerGPUANGLE(Thread *thread, egl::Display *dpyPacked, gl::Context *ctxPacked); ++void ReacquireHighPowerGPUANGLE(Thread *thread, egl::Display *dpyPacked, gl::Context *ctxPacked); ++void HandleGPUSwitchANGLE(Thread *thread, egl::Display *dpyPacked); + EGLBoolean QueryDisplayAttribANGLE(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLint attribute, + EGLAttrib *value); + } // namespace egl +diff --git a/third_party/angle/src/libGLESv2/egl_stubs_autogen.h b/third_party/angle/src/libGLESv2/egl_stubs_autogen.h +index 9118495ed..6d7d210d9 100644 +--- a/third_party/angle/src/libGLESv2/egl_stubs_autogen.h ++++ b/third_party/angle/src/libGLESv2/egl_stubs_autogen.h +@@ -33,78 +33,81 @@ class Thread; + struct Config; + + EGLBoolean BindAPI(Thread *thread, EGLenum api); +-EGLBoolean BindTexImage(Thread *thread, Display *dpyPacked, Surface *surfacePacked, EGLint buffer); ++EGLBoolean BindTexImage(Thread *thread, ++ egl::Display *dpyPacked, ++ Surface *surfacePacked, ++ EGLint buffer); + EGLBoolean ChooseConfig(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + const AttributeMap &attrib_listPacked, + EGLConfig *configs, + EGLint config_size, + EGLint *num_config); + EGLint ClientWaitSync(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Sync *syncPacked, + EGLint flags, + EGLTime timeout); + EGLBoolean CopyBuffers(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLNativePixmapType target); + EGLContext CreateContext(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + gl::Context *share_contextPacked, + const AttributeMap &attrib_listPacked); + EGLImage CreateImage(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + gl::Context *ctxPacked, + EGLenum target, + EGLClientBuffer buffer, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePbufferFromClientBuffer(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLenum buftype, + EGLClientBuffer buffer, + Config *configPacked, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePbufferSurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePixmapSurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + EGLNativePixmapType pixmap, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePlatformPixmapSurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + void *native_pixmap, + const AttributeMap &attrib_listPacked); + EGLSurface CreatePlatformWindowSurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + void *native_window, + const AttributeMap &attrib_listPacked); + EGLSync CreateSync(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLenum type, + const AttributeMap &attrib_listPacked); + EGLSurface CreateWindowSurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + EGLNativeWindowType win, + const AttributeMap &attrib_listPacked); +-EGLBoolean DestroyContext(Thread *thread, Display *dpyPacked, gl::Context *ctxPacked); +-EGLBoolean DestroyImage(Thread *thread, Display *dpyPacked, Image *imagePacked); +-EGLBoolean DestroySurface(Thread *thread, Display *dpyPacked, Surface *surfacePacked); +-EGLBoolean DestroySync(Thread *thread, Display *dpyPacked, Sync *syncPacked); ++EGLBoolean DestroyContext(Thread *thread, egl::Display *dpyPacked, gl::Context *ctxPacked); ++EGLBoolean DestroyImage(Thread *thread, egl::Display *dpyPacked, Image *imagePacked); ++EGLBoolean DestroySurface(Thread *thread, egl::Display *dpyPacked, Surface *surfacePacked); ++EGLBoolean DestroySync(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked); + EGLBoolean GetConfigAttrib(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Config *configPacked, + EGLint attribute, + EGLint *value); + EGLBoolean GetConfigs(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + EGLConfig *configs, + EGLint config_size, + EGLint *num_config); +@@ -119,44 +122,44 @@ EGLDisplay GetPlatformDisplay(Thread *thread, + const AttributeMap &attrib_listPacked); + __eglMustCastToProperFunctionPointerType GetProcAddress(Thread *thread, const char *procname); + EGLBoolean GetSyncAttrib(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Sync *syncPacked, + EGLint attribute, + EGLAttrib *value); +-EGLBoolean Initialize(Thread *thread, Display *dpyPacked, EGLint *major, EGLint *minor); ++EGLBoolean Initialize(Thread *thread, egl::Display *dpyPacked, EGLint *major, EGLint *minor); + EGLBoolean MakeCurrent(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *drawPacked, + Surface *readPacked, + gl::Context *ctxPacked); + EGLenum QueryAPI(Thread *thread); + EGLBoolean QueryContext(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + gl::Context *ctxPacked, + EGLint attribute, + EGLint *value); +-const char *QueryString(Thread *thread, Display *dpyPacked, EGLint name); ++const char *QueryString(Thread *thread, egl::Display *dpyPacked, EGLint name); + EGLBoolean QuerySurface(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint attribute, + EGLint *value); + EGLBoolean ReleaseTexImage(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint buffer); + EGLBoolean ReleaseThread(Thread *thread); + EGLBoolean SurfaceAttrib(Thread *thread, +- Display *dpyPacked, ++ egl::Display *dpyPacked, + Surface *surfacePacked, + EGLint attribute, + EGLint value); +-EGLBoolean SwapBuffers(Thread *thread, Display *dpyPacked, Surface *surfacePacked); +-EGLBoolean SwapInterval(Thread *thread, Display *dpyPacked, EGLint interval); +-EGLBoolean Terminate(Thread *thread, Display *dpyPacked); ++EGLBoolean SwapBuffers(Thread *thread, egl::Display *dpyPacked, Surface *surfacePacked); ++EGLBoolean SwapInterval(Thread *thread, egl::Display *dpyPacked, EGLint interval); ++EGLBoolean Terminate(Thread *thread, egl::Display *dpyPacked); + EGLBoolean WaitClient(Thread *thread); + EGLBoolean WaitGL(Thread *thread); + EGLBoolean WaitNative(Thread *thread, EGLint engine); +-EGLBoolean WaitSync(Thread *thread, Display *dpyPacked, Sync *syncPacked, EGLint flags); ++EGLBoolean WaitSync(Thread *thread, egl::Display *dpyPacked, Sync *syncPacked, EGLint flags); + } // namespace egl + #endif // LIBGLESV2_EGL_STUBS_AUTOGEN_H_ +diff --git a/third_party/angle/src/libGLESv2/entry_points_egl_autogen.cpp b/third_party/angle/src/libGLESv2/entry_points_egl_autogen.cpp +index 3e127ee9d..7671cc7ab 100644 +--- a/third_party/angle/src/libGLESv2/entry_points_egl_autogen.cpp ++++ b/third_party/angle/src/libGLESv2/entry_points_egl_autogen.cpp +@@ -35,7 +35,7 @@ EGLBoolean EGLAPIENTRY EGL_ChooseConfig(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + + ANGLE_EGL_VALIDATE(thread, ChooseConfig, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, +@@ -55,8 +55,8 @@ EGLBoolean EGLAPIENTRY EGL_CopyBuffers(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, CopyBuffers, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, target); +@@ -77,7 +77,7 @@ EGLContext EGLAPIENTRY EGL_CreateContext(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + gl::Context *share_contextPacked = PackParam<gl::Context *>(share_context); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); +@@ -100,7 +100,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePbufferSurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -123,7 +123,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePixmapSurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -146,7 +146,7 @@ EGLSurface EGLAPIENTRY EGL_CreateWindowSurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -164,8 +164,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroyContext(EGLDisplay dpy, EGLContext ctx) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + + ANGLE_EGL_VALIDATE(thread, DestroyContext, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + ctxPacked); +@@ -181,8 +181,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroySurface(EGLDisplay dpy, EGLSurface surface) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, DestroySurface, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked); +@@ -203,8 +203,8 @@ EGLBoolean EGLAPIENTRY EGL_GetConfigAttrib(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Config *configPacked = PackParam<Config *>(config); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Config *configPacked = PackParam<Config *>(config); + + ANGLE_EGL_VALIDATE(thread, GetConfigAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + configPacked, attribute, value); +@@ -225,7 +225,7 @@ EGLBoolean EGLAPIENTRY EGL_GetConfigs(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, GetConfigs, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + configs, config_size, num_config); +@@ -303,7 +303,7 @@ EGLBoolean EGLAPIENTRY EGL_Initialize(EGLDisplay dpy, EGLint *major, EGLint *min + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, Initialize, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + major, minor); +@@ -324,10 +324,10 @@ EGLBoolean EGLAPIENTRY EGL_MakeCurrent(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *drawPacked = PackParam<Surface *>(draw); +- Surface *readPacked = PackParam<Surface *>(read); +- gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *drawPacked = PackParam<Surface *>(draw); ++ Surface *readPacked = PackParam<Surface *>(read); ++ gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + + ANGLE_EGL_VALIDATE(thread, MakeCurrent, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + drawPacked, readPacked, ctxPacked); +@@ -348,8 +348,8 @@ EGLBoolean EGLAPIENTRY EGL_QueryContext(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + + ANGLE_EGL_VALIDATE(thread, QueryContext, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + ctxPacked, attribute, value); +@@ -364,7 +364,7 @@ const char *EGLAPIENTRY EGL_QueryString(EGLDisplay dpy, EGLint name) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, QueryString, GetDisplayIfValid(dpyPacked), const char *, dpyPacked, + name); +@@ -385,8 +385,8 @@ EGLBoolean EGLAPIENTRY EGL_QuerySurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, QuerySurface, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, attribute, value); +@@ -402,8 +402,8 @@ EGLBoolean EGLAPIENTRY EGL_SwapBuffers(EGLDisplay dpy, EGLSurface surface) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, SwapBuffers, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked); +@@ -418,7 +418,7 @@ EGLBoolean EGLAPIENTRY EGL_Terminate(EGLDisplay dpy) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, Terminate, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked); + +@@ -458,8 +458,8 @@ EGLBoolean EGLAPIENTRY EGL_BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLi + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, BindTexImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, buffer); +@@ -475,8 +475,8 @@ EGLBoolean EGLAPIENTRY EGL_ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, E + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, ReleaseTexImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, buffer); +@@ -496,8 +496,8 @@ EGLBoolean EGLAPIENTRY EGL_SurfaceAttrib(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, SurfaceAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, attribute, value); +@@ -512,7 +512,7 @@ EGLBoolean EGLAPIENTRY EGL_SwapInterval(EGLDisplay dpy, EGLint interval) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, SwapInterval, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + interval); +@@ -548,7 +548,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePbufferFromClientBuffer(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -618,8 +618,8 @@ EGLint EGLAPIENTRY EGL_ClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, ClientWaitSync, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked, + syncPacked, flags, timeout); +@@ -641,7 +641,7 @@ EGLImage EGLAPIENTRY EGL_CreateImage(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -664,7 +664,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePlatformPixmapSurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -688,7 +688,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePlatformWindowSurface(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -707,7 +707,7 @@ EGLSync EGLAPIENTRY EGL_CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + + ANGLE_EGL_VALIDATE(thread, CreateSync, GetDisplayIfValid(dpyPacked), EGLSync, dpyPacked, type, +@@ -724,8 +724,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroyImage(EGLDisplay dpy, EGLImage image) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Image *imagePacked = PackParam<Image *>(image); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Image *imagePacked = PackParam<Image *>(image); + + ANGLE_EGL_VALIDATE(thread, DestroyImage, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + imagePacked); +@@ -741,8 +741,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroySync(EGLDisplay dpy, EGLSync sync) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, DestroySync, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + syncPacked); +@@ -783,8 +783,8 @@ EGLBoolean EGLAPIENTRY EGL_GetSyncAttrib(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, GetSyncAttrib, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + syncPacked, attribute, value); +@@ -800,8 +800,8 @@ EGLBoolean EGLAPIENTRY EGL_WaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, WaitSync, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + syncPacked, flags); +diff --git a/third_party/angle/src/libGLESv2/entry_points_egl_ext_autogen.cpp b/third_party/angle/src/libGLESv2/entry_points_egl_ext_autogen.cpp +index d9f4b76ea..76fcf8c17 100644 +--- a/third_party/angle/src/libGLESv2/entry_points_egl_ext_autogen.cpp ++++ b/third_party/angle/src/libGLESv2/entry_points_egl_ext_autogen.cpp +@@ -31,7 +31,7 @@ void EGLAPIENTRY EGL_SetBlobCacheFuncsANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE_VOID(thread, SetBlobCacheFuncsANDROID, GetDisplayIfValid(dpyPacked), + dpyPacked, set, get); +@@ -68,7 +68,7 @@ EGLBoolean EGLAPIENTRY EGL_GetCompositorTimingSupportedANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Surface *surfacePacked = PackParam<Surface *>(surface); + CompositorTiming namePacked = PackParam<CompositorTiming>(name); + +@@ -93,8 +93,8 @@ EGLBoolean EGLAPIENTRY EGL_GetCompositorTimingANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, GetCompositorTimingANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, numTimestamps, names, values); +@@ -114,8 +114,8 @@ EGLBoolean EGLAPIENTRY EGL_GetNextFrameIdANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, GetNextFrameIdANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, frameId); +@@ -134,7 +134,7 @@ EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampSupportedANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Surface *surfacePacked = PackParam<Surface *>(surface); + Timestamp timestampPacked = PackParam<Timestamp>(timestamp); + +@@ -161,8 +161,8 @@ EGLBoolean EGLAPIENTRY EGL_GetFrameTimestampsANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, GetFrameTimestampsANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, frameId, numTimestamps, timestamps, values); +@@ -193,8 +193,8 @@ EGLint EGLAPIENTRY EGL_DupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, DupNativeFenceFDANDROID, GetDisplayIfValid(dpyPacked), EGLint, + dpyPacked, syncPacked); +@@ -214,8 +214,8 @@ EGLBoolean EGLAPIENTRY EGL_PresentationTimeANDROID(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, PresentationTimeANDROID, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, time); +@@ -265,7 +265,7 @@ const char *EGLAPIENTRY EGL_QueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLin + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, QueryStringiANGLE, GetDisplayIfValid(dpyPacked), const char *, + dpyPacked, name, index); +@@ -284,7 +284,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, QueryDisplayAttribANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, attribute, value); +@@ -301,8 +301,8 @@ void EGLAPIENTRY EGL_ReleaseHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + + ANGLE_EGL_VALIDATE_VOID(thread, ReleaseHighPowerGPUANGLE, GetDisplayIfValid(dpyPacked), + dpyPacked, ctxPacked); +@@ -318,8 +318,8 @@ void EGLAPIENTRY EGL_ReacquireHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + + ANGLE_EGL_VALIDATE_VOID(thread, ReacquireHighPowerGPUANGLE, GetDisplayIfValid(dpyPacked), + dpyPacked, ctxPacked); +@@ -334,7 +334,7 @@ void EGLAPIENTRY EGL_HandleGPUSwitchANGLE(EGLDisplay dpy) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE_VOID(thread, HandleGPUSwitchANGLE, GetDisplayIfValid(dpyPacked), dpyPacked); + +@@ -350,7 +350,7 @@ EGLint EGLAPIENTRY EGL_ProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, ProgramCacheGetAttribANGLE, GetDisplayIfValid(dpyPacked), EGLint, + dpyPacked, attrib); +@@ -375,7 +375,7 @@ void EGLAPIENTRY EGL_ProgramCacheQueryANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE_VOID(thread, ProgramCacheQueryANGLE, GetDisplayIfValid(dpyPacked), dpyPacked, + index, key, keysize, binary, binarysize); +@@ -397,7 +397,7 @@ void EGLAPIENTRY EGL_ProgramCachePopulateANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE_VOID(thread, ProgramCachePopulateANGLE, GetDisplayIfValid(dpyPacked), + dpyPacked, key, keysize, binary, binarysize); +@@ -413,7 +413,7 @@ EGLint EGLAPIENTRY EGL_ProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGL + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, ProgramCacheResizeANGLE, GetDisplayIfValid(dpyPacked), EGLint, + dpyPacked, limit, mode); +@@ -435,8 +435,8 @@ EGLBoolean EGLAPIENTRY EGL_QuerySurfacePointerANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, QuerySurfacePointerANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, attribute, value); +@@ -457,7 +457,7 @@ EGLBoolean EGLAPIENTRY EGL_CreateStreamProducerD3DTextureANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Stream *streamPacked = PackParam<Stream *>(stream); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -480,7 +480,7 @@ EGLBoolean EGLAPIENTRY EGL_StreamPostD3DTextureANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Stream *streamPacked = PackParam<Stream *>(stream); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -502,8 +502,8 @@ EGLBoolean EGLAPIENTRY EGL_SwapBuffersWithFrameTokenANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, SwapBuffersWithFrameTokenANGLE, GetDisplayIfValid(dpyPacked), + EGLBoolean, dpyPacked, surfacePacked, frametoken); +@@ -525,8 +525,8 @@ EGLBoolean EGLAPIENTRY EGL_GetMscRateANGLE(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, GetMscRateANGLE, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, numerator, denominator); +@@ -549,8 +549,8 @@ EGLBoolean EGLAPIENTRY EGL_GetSyncValuesCHROMIUM(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, GetSyncValuesCHROMIUM, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, ust, msc, sbc); +@@ -602,7 +602,7 @@ EGLBoolean EGLAPIENTRY EGL_QueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribut + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + + ANGLE_EGL_VALIDATE(thread, QueryDisplayAttribEXT, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, attribute, value); +@@ -624,7 +624,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -648,7 +648,7 @@ EGLSurface EGLAPIENTRY EGL_CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Config *configPacked = PackParam<Config *>(config); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -711,7 +711,7 @@ EGLint EGLAPIENTRY EGL_LabelObjectKHR(EGLDisplay display, + + Thread *thread = egl::GetCurrentThread(); + +- Display *displayPacked = PackParam<Display *>(display); ++ egl::Display *displayPacked = PackParam<egl::Display *>(display); + ObjectType objectTypePacked = PackParam<ObjectType>(objectType); + + ANGLE_EGL_VALIDATE(thread, LabelObjectKHR, GetDisplayIfValid(displayPacked), EGLint, +@@ -746,8 +746,8 @@ EGLint EGLAPIENTRY EGL_ClientWaitSyncKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, ClientWaitSyncKHR, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked, + syncPacked, flags, timeout); +@@ -764,7 +764,7 @@ EGLSyncKHR EGLAPIENTRY EGL_CreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGL + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + + ANGLE_EGL_VALIDATE(thread, CreateSyncKHR, GetDisplayIfValid(dpyPacked), EGLSyncKHR, dpyPacked, +@@ -781,8 +781,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, DestroySyncKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + syncPacked); +@@ -803,8 +803,8 @@ EGLBoolean EGLAPIENTRY EGL_GetSyncAttribKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, GetSyncAttribKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, syncPacked, attribute, value); +@@ -827,7 +827,7 @@ EGLImageKHR EGLAPIENTRY EGL_CreateImageKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + gl::Context *ctxPacked = PackParam<gl::Context *>(ctx); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + +@@ -845,8 +845,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Image *imagePacked = PackParam<Image *>(image); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Image *imagePacked = PackParam<Image *>(image); + + ANGLE_EGL_VALIDATE(thread, DestroyImageKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + imagePacked); +@@ -863,8 +863,8 @@ EGLBoolean EGLAPIENTRY EGL_SignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenu + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, SignalSyncKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + syncPacked, mode); +@@ -889,7 +889,7 @@ EGLStreamKHR EGLAPIENTRY EGL_CreateStreamKHR(EGLDisplay dpy, const EGLint *attri + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + + ANGLE_EGL_VALIDATE(thread, CreateStreamKHR, GetDisplayIfValid(dpyPacked), EGLStreamKHR, +@@ -906,8 +906,8 @@ EGLBoolean EGLAPIENTRY EGL_DestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream) + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, DestroyStreamKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, streamPacked); +@@ -928,8 +928,8 @@ EGLBoolean EGLAPIENTRY EGL_QueryStreamKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, QueryStreamKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + streamPacked, attribute, value); +@@ -950,8 +950,8 @@ EGLBoolean EGLAPIENTRY EGL_QueryStreamu64KHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, QueryStreamu64KHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, streamPacked, attribute, value); +@@ -971,8 +971,8 @@ EGLBoolean EGLAPIENTRY EGL_StreamAttribKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, StreamAttribKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + streamPacked, attribute, value); +@@ -989,8 +989,8 @@ EGLBoolean EGLAPIENTRY EGL_StreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, StreamConsumerAcquireKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, streamPacked); +@@ -1007,8 +1007,8 @@ EGLBoolean EGLAPIENTRY EGL_StreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EG + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, StreamConsumerGLTextureExternalKHR, GetDisplayIfValid(dpyPacked), + EGLBoolean, dpyPacked, streamPacked); +@@ -1024,8 +1024,8 @@ EGLBoolean EGLAPIENTRY EGL_StreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Stream *streamPacked = PackParam<Stream *>(stream); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Stream *streamPacked = PackParam<Stream *>(stream); + + ANGLE_EGL_VALIDATE(thread, StreamConsumerReleaseKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, streamPacked); +@@ -1047,8 +1047,8 @@ EGLBoolean EGLAPIENTRY EGL_SwapBuffersWithDamageKHR(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, SwapBuffersWithDamageKHR, GetDisplayIfValid(dpyPacked), EGLBoolean, + dpyPacked, surfacePacked, rects, n_rects); +@@ -1065,8 +1065,8 @@ EGLint EGLAPIENTRY EGL_WaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Sync *syncPacked = PackParam<Sync *>(sync); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Sync *syncPacked = PackParam<Sync *>(sync); + + ANGLE_EGL_VALIDATE(thread, WaitSyncKHR, GetDisplayIfValid(dpyPacked), EGLint, dpyPacked, + syncPacked, flags); +@@ -1090,8 +1090,8 @@ EGLBoolean EGLAPIENTRY EGL_PostSubBufferNV(EGLDisplay dpy, + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); +- Surface *surfacePacked = PackParam<Surface *>(surface); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); ++ Surface *surfacePacked = PackParam<Surface *>(surface); + + ANGLE_EGL_VALIDATE(thread, PostSubBufferNV, GetDisplayIfValid(dpyPacked), EGLBoolean, dpyPacked, + surfacePacked, x, y, width, height); +@@ -1112,7 +1112,7 @@ EGLBoolean EGLAPIENTRY EGL_StreamConsumerGLTextureExternalAttribsNV(EGLDisplay d + + Thread *thread = egl::GetCurrentThread(); + +- Display *dpyPacked = PackParam<Display *>(dpy); ++ egl::Display *dpyPacked = PackParam<egl::Display *>(dpy); + Stream *streamPacked = PackParam<Stream *>(stream); + const AttributeMap &attrib_listPacked = PackParam<const AttributeMap &>(attrib_list); + diff --git a/www-client/chromium/files/chromium-89-compositor-dcheck.patch b/www-client/chromium/files/chromium-89-compositor-dcheck.patch new file mode 100644 index 0000000..2a12ca9 --- /dev/null +++ b/www-client/chromium/files/chromium-89-compositor-dcheck.patch @@ -0,0 +1,13 @@ +diff --git a/cc/metrics/compositor_frame_reporter.cc b/cc/metrics/compositor_frame_reporter.cc +index bab060123..f3ee60127 100644 +--- a/cc/metrics/compositor_frame_reporter.cc ++++ b/cc/metrics/compositor_frame_reporter.cc +@@ -767,7 +767,7 @@ void CompositorFrameReporter::ReportCompositorLatencyHistogram( + + void CompositorFrameReporter::ReportEventLatencyHistograms() const { + for (const auto& event_metrics : events_metrics_) { +- DCHECK(event_metrics); ++ DCHECK(event_metrics.get()); + const std::string histogram_base_name = + GetEventLatencyHistogramBaseName(*event_metrics); + const int event_type_index = static_cast<int>(event_metrics->type()); diff --git a/www-client/chromium/files/chromium-89-content-dcheck-uniqueptr.patch b/www-client/chromium/files/chromium-89-content-dcheck-uniqueptr.patch new file mode 100644 index 0000000..2297062 --- /dev/null +++ b/www-client/chromium/files/chromium-89-content-dcheck-uniqueptr.patch @@ -0,0 +1,13 @@ +diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc +index f020be446..d7cb4656e 100644 +--- a/content/browser/renderer_host/render_frame_host_manager.cc ++++ b/content/browser/renderer_host/render_frame_host_manager.cc +@@ -738,7 +738,7 @@ void RenderFrameHostManager::ValidateSpeculativeRenderFrameHostForBug1146573() { + // This should never be true. + SCOPED_CRASH_KEY_BOOL(ValidateSpeculative, HostsEqual, + speculative_render_frame_host_ == render_frame_host_); +- DCHECK_NE(speculative_render_frame_host_, render_frame_host_); ++ DCHECK_NE(speculative_render_frame_host_.get(), render_frame_host_.get()); + SCOPED_CRASH_KEY_BOOL(ValidateSpeculative, Live, + render_frame_host_->IsRenderFrameLive()); + SCOPED_CRASH_KEY_STRING256( diff --git a/www-client/chromium/files/chromium-89-dawn-string-include.patch b/www-client/chromium/files/chromium-89-dawn-string-include.patch new file mode 100644 index 0000000..ae0bcc8 --- /dev/null +++ b/www-client/chromium/files/chromium-89-dawn-string-include.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/dawn/src/dawn_wire/ChunkedCommandHandler.cpp b/third_party/dawn/src/dawn_wire/ChunkedCommandHandler.cpp +index e91e540fa..502a470e6 100644 +--- a/third_party/dawn/src/dawn_wire/ChunkedCommandHandler.cpp ++++ b/third_party/dawn/src/dawn_wire/ChunkedCommandHandler.cpp +@@ -14,6 +14,8 @@ + + #include "dawn_wire/ChunkedCommandHandler.h" + ++#include <string.h> ++ + #include <algorithm> + + namespace dawn_wire { diff --git a/www-client/chromium/files/chromium-89-pcscan-include.patch b/www-client/chromium/files/chromium-89-pcscan-include.patch new file mode 100644 index 0000000..96fcfb6 --- /dev/null +++ b/www-client/chromium/files/chromium-89-pcscan-include.patch @@ -0,0 +1,12 @@ +diff --git a/base/allocator/partition_allocator/pcscan.cc b/base/allocator/partition_allocator/pcscan.cc +index b8d96e32d..a802a1fae 100644 +--- a/base/allocator/partition_allocator/pcscan.cc ++++ b/base/allocator/partition_allocator/pcscan.cc +@@ -7,6 +7,7 @@ + #include <algorithm> + #include <map> + #include <mutex> ++#include <condition_variable> + #include <numeric> + #include <set> + #include <thread> diff --git a/www-client/chromium/files/chromium-89-quiche-uniqueptr.patch b/www-client/chromium/files/chromium-89-quiche-uniqueptr.patch new file mode 100644 index 0000000..a093522 --- /dev/null +++ b/www-client/chromium/files/chromium-89-quiche-uniqueptr.patch @@ -0,0 +1,13 @@ +diff --git a/net/third_party/quiche/src/quic/core/quic_path_validator.cc b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +index 5d5e7206d..8145252aa 100644 +--- a/net/third_party/quiche/src/quic/core/quic_path_validator.cc ++++ b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +@@ -66,7 +66,7 @@ void QuicPathValidator::StartValidingPath( + std::unique_ptr<QuicPathValidationContext> context, + std::unique_ptr<ResultDelegate> result_delegate) { + CancelPathValidation(); +- DCHECK_NE(nullptr, context); ++ DCHECK_NE(nullptr, context.get()); + QUIC_DLOG(INFO) << "Start validating path " << *context + << " via writer: " << context->WriterToUse(); + diff --git a/www-client/chromium/files/chromium-89-quiche-uniqueptr_r1.patch b/www-client/chromium/files/chromium-89-quiche-uniqueptr_r1.patch new file mode 100644 index 0000000..6872128 --- /dev/null +++ b/www-client/chromium/files/chromium-89-quiche-uniqueptr_r1.patch @@ -0,0 +1,13 @@ +diff --git a/net/third_party/quiche/src/quic/core/quic_path_validator.cc b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +index 0722216a8..834a491e0 100644 +--- a/net/third_party/quiche/src/quic/core/quic_path_validator.cc ++++ b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +@@ -68,7 +68,7 @@ void QuicPathValidator::OnPathResponse(const QuicPathFrameBuffer& probing_data, + void QuicPathValidator::StartPathValidation( + std::unique_ptr<QuicPathValidationContext> context, + std::unique_ptr<ResultDelegate> result_delegate) { +- DCHECK_NE(nullptr, context); ++ DCHECK_NE(nullptr, context.get()); + QUIC_DLOG(INFO) << "Start validating path " << *context + << " via writer: " << context->WriterToUse(); + if (path_context_ != nullptr) { diff --git a/www-client/chromium/files/chromium-89-sstream.patch b/www-client/chromium/files/chromium-89-sstream.patch new file mode 100644 index 0000000..8204fe2 --- /dev/null +++ b/www-client/chromium/files/chromium-89-sstream.patch @@ -0,0 +1,344 @@ +diff --git a/chrome/browser/ui/webui/internals/web_app/web_app_internals_page_handler_impl.cc b/chrome/browser/ui/webui/internals/web_app/web_app_internals_page_handler_impl.cc +index 339fc5a6c..5e23be6fb 100644 +--- a/chrome/browser/ui/webui/internals/web_app/web_app_internals_page_handler_impl.cc ++++ b/chrome/browser/ui/webui/internals/web_app/web_app_internals_page_handler_impl.cc +@@ -23,7 +23,7 @@ namespace { + + template <typename T> + std::string ConvertToString(const T& value) { +- return (std::stringstream() << value).str(); ++ return static_cast<const std::stringstream &>(std::stringstream() << value).str(); + } + + } // namespace +diff --git a/chrome/browser/web_applications/external_web_app_manager.cc b/chrome/browser/web_applications/external_web_app_manager.cc +index 3da14c154..64c2e80a9 100644 +--- a/chrome/browser/web_applications/external_web_app_manager.cc ++++ b/chrome/browser/web_applications/external_web_app_manager.cc +@@ -100,7 +100,7 @@ LoadedConfigs LoadConfigsBlocking(const base::FilePath& config_dir) { + deserializer.Deserialize(nullptr, &error_msg); + if (!app_config) { + result.errors.push_back( +- (std::stringstream() << file << " was not valid JSON: " << error_msg) ++ static_cast<const std::stringstream &>(std::stringstream() << file << " was not valid JSON: " << error_msg) + .str()); + VLOG(1) << result.errors.back(); + continue; +diff --git a/chrome/browser/web_applications/external_web_app_utils.cc b/chrome/browser/web_applications/external_web_app_utils.cc +index 8b3414d06..6d0718198 100644 +--- a/chrome/browser/web_applications/external_web_app_utils.cc ++++ b/chrome/browser/web_applications/external_web_app_utils.cc +@@ -158,7 +158,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + options.require_manifest = true; + + if (app_config.type() != base::Value::Type::DICTIONARY) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " was not a dictionary as the top level") + .str(); + } +@@ -166,18 +166,18 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + // user_type + const base::Value* value = app_config.FindListKey(kUserType); + if (!value) { +- return (std::stringstream() << file << " missing " << kUserType).str(); ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " missing " << kUserType).str(); + } + for (const auto& item : value->GetList()) { + if (!item.is_string()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " has invalid " << kUserType << item) + .str(); + } + options.user_type_allowlist.push_back(item.GetString()); + } + if (options.user_type_allowlist.empty()) { +- return (std::stringstream() << file << " has empty " << kUserType).str(); ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " has empty " << kUserType).str(); + } + + // feature_name +@@ -188,18 +188,18 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + // app_url + value = app_config.FindKeyOfType(kAppUrl, base::Value::Type::STRING); + if (!value) { +- return (std::stringstream() << file << " had a missing " << kAppUrl).str(); ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " had a missing " << kAppUrl).str(); + } + options.install_url = GURL(value->GetString()); + if (!options.install_url.is_valid()) { +- return (std::stringstream() << file << " had an invalid " << kAppUrl).str(); ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " had an invalid " << kAppUrl).str(); + } + + // only_for_new_users + value = app_config.FindKey(kOnlyForNewUsers); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kOnlyForNewUsers) + .str(); + } +@@ -211,7 +211,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kHideFromUser); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kHideFromUser) + .str(); + } +@@ -226,7 +226,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kCreateShortcuts); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kCreateShortcuts) + .str(); + } +@@ -242,7 +242,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kDisableIfArcSupported); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kDisableIfArcSupported) + .str(); + } +@@ -253,7 +253,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kDisableIfTabletFormFactor); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kDisableIfTabletFormFactor) + .str(); + } +@@ -263,7 +263,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + // launch_container + value = app_config.FindKeyOfType(kLaunchContainer, base::Value::Type::STRING); + if (!value) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kLaunchContainer) + .str(); + } +@@ -273,7 +273,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + } else if (launch_container_str == kLaunchContainerWindow) { + options.user_display_mode = DisplayMode::kStandalone; + } else { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kLaunchContainer << ": " + << launch_container_str) + .str(); +@@ -283,7 +283,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kLaunchQueryParams); + if (value) { + if (!value->is_string()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kLaunchQueryParams) + .str(); + } +@@ -294,7 +294,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kLoadAndAwaitServiceWorkerRegistration); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() << file << " had an invalid " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " had an invalid " + << kLoadAndAwaitServiceWorkerRegistration) + .str(); + } +@@ -305,20 +305,20 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kServiceWorkerRegistrationUrl); + if (value) { + if (!options.load_and_await_service_worker_registration) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " should not specify a " + << kServiceWorkerRegistrationUrl << " while " + << kLoadAndAwaitServiceWorkerRegistration << " is disabled") + .str(); + } + if (!value->is_string()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kServiceWorkerRegistrationUrl) + .str(); + } + options.service_worker_registration_url.emplace(value->GetString()); + if (!options.service_worker_registration_url->is_valid()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kServiceWorkerRegistrationUrl) + .str(); + } +@@ -328,7 +328,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kUninstallAndReplace); + if (value) { + if (!value->is_list()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kUninstallAndReplace) + .str(); + } +@@ -336,7 +336,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + + for (const auto& app_id_value : uninstall_and_replace_values) { + if (!app_id_value.is_string()) { +- return (std::stringstream() << file << " had an invalid " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " had an invalid " + << kUninstallAndReplace << " entry") + .str(); + } +@@ -348,7 +348,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + value = app_config.FindKey(kOnlyUseOfflineManifest); + if (value) { + if (!value->is_bool()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " had an invalid " << kOnlyUseOfflineManifest) + .str(); + } +@@ -369,7 +369,7 @@ OptionsOrError ParseConfig(FileUtilsWrapper& file_utils, + } + + if (options.only_use_app_info_factory && !options.app_info_factory) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << kOnlyUseOfflineManifest << " set with no " + << kOfflineManifest << " available") + .str(); +@@ -389,7 +389,7 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + const std::string* name_string = + offline_manifest.FindStringKey(kOfflineManifestName); + if (!name_string) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestName + << " missing or invalid.") + .str(); +@@ -397,7 +397,7 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + if (!base::UTF8ToUTF16(name_string->data(), name_string->size(), + &app_info.title) || + app_info.title.empty()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestName + << " invalid: " << *name_string) + .str(); +@@ -407,14 +407,14 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + const std::string* start_url_string = + offline_manifest.FindStringKey(kOfflineManifestStartUrl); + if (!start_url_string) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " + << kOfflineManifestStartUrl << " missing or invalid.") + .str(); + } + app_info.start_url = GURL(*start_url_string); + if (!app_info.start_url.is_valid()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " + << kOfflineManifestStartUrl << " invalid: " << *start_url_string) + .str(); +@@ -424,21 +424,21 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + const std::string* scope_string = + offline_manifest.FindStringKey(kOfflineManifestScope); + if (!scope_string) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestScope + << " missing or invalid.") + .str(); + } + app_info.scope = GURL(*scope_string); + if (!app_info.scope.is_valid()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestScope + << " invalid: " << *scope_string) + .str(); + } + if (!base::StartsWith(app_info.start_url.path(), app_info.scope.path(), + base::CompareCase::SENSITIVE)) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestScope + << " (" << app_info.start_url << ") not within " + << kOfflineManifestScope << " (" << app_info.scope << ").") +@@ -449,14 +449,14 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + const std::string* display_string = + offline_manifest.FindStringKey(kOfflineManifestDisplay); + if (!display_string) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestDisplay + << " missing or invalid.") + .str(); + } + DisplayMode display = blink::DisplayModeFromString(*display_string); + if (display == DisplayMode::kUndefined) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " << kOfflineManifestDisplay + << " invalid: " << display_string) + .str(); +@@ -467,14 +467,14 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + const base::Value* icon_files = + offline_manifest.FindListKey(kOfflineManifestIconAnyPngs); + if (!icon_files || icon_files->GetList().empty()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " + << kOfflineManifestIconAnyPngs << " missing, empty or invalid.") + .str(); + } + for (const base::Value& icon_file : icon_files->GetList()) { + if (!icon_file.is_string()) { +- return (std::stringstream() ++ return static_cast<const std::stringstream &>(std::stringstream() + << file << " " << kOfflineManifest << " " + << kOfflineManifestIconAnyPngs << " " << icon_file << " invalid.") + .str(); +@@ -483,7 +483,7 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + base::FilePath icon_path = dir.AppendASCII(icon_file.GetString()); + std::string icon_data; + if (!file_utils.ReadFileToString(icon_path, &icon_data)) { +- return (std::stringstream() << file << " " << kOfflineManifest << " " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " " << kOfflineManifest << " " + << kOfflineManifestIconAnyPngs << " " + << icon_file << " failed to read.") + .str(); +@@ -493,14 +493,14 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + if (!gfx::PNGCodec::Decode( + reinterpret_cast<const unsigned char*>(icon_data.c_str()), + icon_data.size(), &bitmap)) { +- return (std::stringstream() << file << " " << kOfflineManifest << " " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " " << kOfflineManifest << " " + << kOfflineManifestIconAnyPngs << " " + << icon_file << " failed to decode.") + .str(); + } + + if (bitmap.width() != bitmap.height()) { +- return (std::stringstream() << file << " " << kOfflineManifest << " " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " " << kOfflineManifest << " " + << kOfflineManifestIconAnyPngs << " " + << icon_file << " must be square: " + << bitmap.width() << "x" << bitmap.height()) +@@ -521,7 +521,7 @@ WebApplicationInfoFactoryOrError ParseOfflineManifest( + SkColor theme_color; + if (!theme_color_argb_hex || + !base::HexStringToUInt(*theme_color_argb_hex, &theme_color)) { +- return (std::stringstream() << file << " " << kOfflineManifest << " " ++ return static_cast<const std::stringstream &>(std::stringstream() << file << " " << kOfflineManifest << " " + << kOfflineManifestThemeColorArgbHex + << " invalid: " << *theme_color_value) + .str(); diff --git a/www-client/chromium/files/chromium-89-uigfx-image-skia.patch b/www-client/chromium/files/chromium-89-uigfx-image-skia.patch new file mode 100644 index 0000000..a96dd00 --- /dev/null +++ b/www-client/chromium/files/chromium-89-uigfx-image-skia.patch @@ -0,0 +1,22 @@ +diff --git a/ui/gfx/image/image_skia.cc b/ui/gfx/image/image_skia.cc +index 6d2748d67..31dfdf5d2 100644 +--- a/ui/gfx/image/image_skia.cc ++++ b/ui/gfx/image/image_skia.cc +@@ -125,7 +125,7 @@ class ImageSkiaStorage : public base::RefCountedThreadSafe<ImageSkiaStorage> { + // one and rescale the image. + // Right now only Windows uses 2 and other platforms use 1 by default. + // TODO(mukai, oshima): abandon 1 code path and use 2 for every platforms. +- std::vector<const ImageSkiaRep>::iterator FindRepresentation( ++ std::vector<ImageSkiaRep>::const_iterator FindRepresentation( + float scale, + bool fetch_new_image) const; + +@@ -211,7 +211,7 @@ bool ImageSkiaStorage::HasRepresentationAtAllScales() const { + return source_ && source_->HasRepresentationAtAllScales(); + } + +-std::vector<const ImageSkiaRep>::iterator ImageSkiaStorage::FindRepresentation( ++std::vector<ImageSkiaRep>::const_iterator ImageSkiaStorage::FindRepresentation( + float scale, + bool fetch_new_image) const { + auto closest_iter = image_reps_.end(); diff --git a/www-client/chromium/files/chromium-89-webui-config-include.patch b/www-client/chromium/files/chromium-89-webui-config-include.patch new file mode 100644 index 0000000..5ed2bd5 --- /dev/null +++ b/www-client/chromium/files/chromium-89-webui-config-include.patch @@ -0,0 +1,12 @@ +diff --git a/ui/webui/webui_config.h b/ui/webui/webui_config.h +index 29990bd5a..44918fa34 100644 +--- a/ui/webui/webui_config.h ++++ b/ui/webui/webui_config.h +@@ -6,6 +6,7 @@ + #define UI_WEBUI_WEBUI_CONFIG_H_ + + #include <string> ++#include <memory> + + #include "base/strings/string_piece.h" + diff --git a/www-client/chromium/files/chromium-90-blink-disable-clang-format.patch b/www-client/chromium/files/chromium-90-blink-disable-clang-format.patch new file mode 100644 index 0000000..2d8ea05 --- /dev/null +++ b/www-client/chromium/files/chromium-90-blink-disable-clang-format.patch @@ -0,0 +1,19 @@ +diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +index e24764c13..7c5add8f4 100644 +--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py ++++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py +@@ -171,13 +171,5 @@ def write_code_node_to_file(code_node, filepath): + + rendered_text = render_code_node(code_node) + +- format_result = style_format.auto_format(rendered_text, filename=filepath) +- if not format_result.did_succeed: +- raise RuntimeError("Style-formatting failed: filename = {filename}\n" +- "---- stderr ----\n" +- "{stderr}:".format( +- filename=format_result.filename, +- stderr=format_result.error_message)) +- + web_idl.file_io.write_to_file_if_changed( +- filepath, format_result.contents.encode('utf-8')) ++ filepath, rendered_text.encode('utf-8')) diff --git a/www-client/chromium/files/chromium-90-compositor-dcheck.patch b/www-client/chromium/files/chromium-90-compositor-dcheck.patch new file mode 100644 index 0000000..d718a68 --- /dev/null +++ b/www-client/chromium/files/chromium-90-compositor-dcheck.patch @@ -0,0 +1,13 @@ +diff --git a/cc/metrics/compositor_frame_reporter.cc b/cc/metrics/compositor_frame_reporter.cc +index fcad7a8cd..152b724c8 100644 +--- a/cc/metrics/compositor_frame_reporter.cc ++++ b/cc/metrics/compositor_frame_reporter.cc +@@ -960,7 +960,7 @@ void CompositorFrameReporter::ReportEventLatencyHistograms() const { + "EventLatency." + total_latency_stage_name; + + for (const auto& event_metrics : events_metrics_) { +- DCHECK(event_metrics); ++ DCHECK(event_metrics.get()); + const std::string histogram_base_name = + GetEventLatencyHistogramBaseName(*event_metrics); + const int event_type_index = static_cast<int>(event_metrics->type()); diff --git a/www-client/chromium/files/chromium-90-disable-nomerge.patch b/www-client/chromium/files/chromium-90-disable-nomerge.patch new file mode 100644 index 0000000..fc4049f --- /dev/null +++ b/www-client/chromium/files/chromium-90-disable-nomerge.patch @@ -0,0 +1,13 @@ +diff --git a/base/compiler_specific.h b/base/compiler_specific.h +index 14a5d6870..b4d31d77e 100644 +--- a/base/compiler_specific.h ++++ b/base/compiler_specific.h +@@ -334,7 +334,7 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) { + + // Use nomerge attribute to disable optimization of merging multiple same calls. + #if defined(__clang__) && __has_attribute(nomerge) && !defined(OS_CHROMEOS) +-#define NOMERGE [[clang::nomerge]] ++#define NOMERGE //[[clang::nomerge]] + #else + #define NOMERGE + #endif diff --git a/www-client/chromium/files/chromium-90-langdetect-include.patch b/www-client/chromium/files/chromium-90-langdetect-include.patch new file mode 100644 index 0000000..39cd0a8 --- /dev/null +++ b/www-client/chromium/files/chromium-90-langdetect-include.patch @@ -0,0 +1,12 @@ +diff --git a/components/translate/core/language_detection/ngram_hash_ops_utils.cc b/components/translate/core/language_detection/ngram_hash_ops_utils.cc +index cf9103358..dd03a3db4 100644 +--- a/components/translate/core/language_detection/ngram_hash_ops_utils.cc ++++ b/components/translate/core/language_detection/ngram_hash_ops_utils.cc +@@ -4,6 +4,7 @@ + + #include "components/translate/core/language_detection/ngram_hash_ops_utils.h" + ++#include <cstring> + #include <vector> + + #include "third_party/utf/src/include/utf.h" diff --git a/www-client/chromium/files/chromium-90-quantization-util-stdint.patch b/www-client/chromium/files/chromium-90-quantization-util-stdint.patch new file mode 100644 index 0000000..060763a --- /dev/null +++ b/www-client/chromium/files/chromium-90-quantization-util-stdint.patch @@ -0,0 +1,12 @@ +diff --git a/components/translate/core/language_detection/quantization_utils.h b/components/translate/core/language_detection/quantization_utils.h +index eb8f6d1e9..699a48897 100644 +--- a/components/translate/core/language_detection/quantization_utils.h ++++ b/components/translate/core/language_detection/quantization_utils.h +@@ -7,6 +7,7 @@ + + #include <algorithm> + #include <cmath> ++#include <cstdint> + + namespace translate { + diff --git a/www-client/chromium/files/chromium-90-quiche-uniqueptr.patch b/www-client/chromium/files/chromium-90-quiche-uniqueptr.patch new file mode 100644 index 0000000..21183a6 --- /dev/null +++ b/www-client/chromium/files/chromium-90-quiche-uniqueptr.patch @@ -0,0 +1,13 @@ +diff --git a/net/third_party/quiche/src/quic/core/quic_path_validator.cc b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +index f2abef054..b419c9070 100644 +--- a/net/third_party/quiche/src/quic/core/quic_path_validator.cc ++++ b/net/third_party/quiche/src/quic/core/quic_path_validator.cc +@@ -68,7 +68,7 @@ void QuicPathValidator::OnPathResponse(const QuicPathFrameBuffer& probing_data, + void QuicPathValidator::StartPathValidation( + std::unique_ptr<QuicPathValidationContext> context, + std::unique_ptr<ResultDelegate> result_delegate) { +- QUICHE_DCHECK(context); ++ QUICHE_DCHECK(context.get()); + QUIC_DLOG(INFO) << "Start validating path " << *context + << " via writer: " << context->WriterToUse(); + if (path_context_ != nullptr) { diff --git a/www-client/chromium/files/chromium-90-ruy-include.patch b/www-client/chromium/files/chromium-90-ruy-include.patch new file mode 100644 index 0000000..81d5367 --- /dev/null +++ b/www-client/chromium/files/chromium-90-ruy-include.patch @@ -0,0 +1,24 @@ +From 714092f336bb14d2fcc27396ec323b3d843bb962 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Thu, 4 Mar 2021 15:05:46 +0000 +Subject: [PATCH] IWYU: include limits for std::numeric_limits + +--- + third_party/ruy/src/ruy/block_map.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/ruy/src/ruy/block_map.cc b/third_party/ruy/src/ruy/block_map.cc +index 44e5039..a7a7559 100644 +--- a/third_party/ruy/src/ruy/block_map.cc ++++ b/third_party/ruy/src/ruy/block_map.cc +@@ -17,6 +17,7 @@ limitations under the License. + + #include <algorithm> + #include <cstdint> ++#include <limits> + + #ifdef RUY_MAKEBLOCKMAP_DEBUG + #include <cstdio> +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-91-clipboard-ozone.patch b/www-client/chromium/files/chromium-91-clipboard-ozone.patch new file mode 100644 index 0000000..5aac0ee --- /dev/null +++ b/www-client/chromium/files/chromium-91-clipboard-ozone.patch @@ -0,0 +1,48 @@ +diff --git a/ui/base/clipboard/clipboard_factory_ozone.cc b/ui/base/clipboard/clipboard_factory_ozone.cc +index e2a061df8..5463e6bf9 100644 +--- a/ui/base/clipboard/clipboard_factory_ozone.cc ++++ b/ui/base/clipboard/clipboard_factory_ozone.cc +@@ -50,7 +50,8 @@ Clipboard* Clipboard::Create() { + #if defined(USE_X11) && BUILDFLAG(IS_CHROMEOS_LACROS) + NOTREACHED() << "System clipboard integration should be in place."; + #endif +- return new ClipboardNonBacked; ++ return nullptr; ++ //return new ClipboardNonBacked; + } + + } // namespace ui +diff --git a/ui/base/clipboard/clipboard_non_backed.cc b/ui/base/clipboard/clipboard_non_backed.cc +index a6e85cd2f..734c7e961 100644 +--- a/ui/base/clipboard/clipboard_non_backed.cc ++++ b/ui/base/clipboard/clipboard_non_backed.cc +@@ -688,6 +688,7 @@ void ClipboardNonBacked::ReadData(const ClipboardFormatType& format, + #endif + } + ++#if defined(USE_OZONE) + bool ClipboardNonBacked::IsSelectionBufferAvailable() const { + #if BUILDFLAG(IS_CHROMEOS_ASH) + return false; +@@ -695,6 +696,7 @@ bool ClipboardNonBacked::IsSelectionBufferAvailable() const { + return true; + #endif + } ++#endif // defined(USE_OZONE) + + void ClipboardNonBacked::WritePortableRepresentations( + ClipboardBuffer buffer, +diff --git a/ui/base/clipboard/clipboard_non_backed.h b/ui/base/clipboard/clipboard_non_backed.h +index d14ff0ff6..702f02a84 100644 +--- a/ui/base/clipboard/clipboard_non_backed.h ++++ b/ui/base/clipboard/clipboard_non_backed.h +@@ -97,7 +97,9 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ClipboardNonBacked + void ReadData(const ClipboardFormatType& format, + const DataTransferEndpoint* data_dst, + std::string* result) const override; ++#if defined(USE_OZONE) + bool IsSelectionBufferAvailable() const override; ++#endif // defined(USE_OZONE) + void WritePortableRepresentations( + ClipboardBuffer buffer, + const ObjectMap& objects, diff --git a/www-client/chromium/files/chromium-91-compiler-r1.patch b/www-client/chromium/files/chromium-91-compiler-r1.patch new file mode 100644 index 0000000..8724c6b --- /dev/null +++ b/www-client/chromium/files/chromium-91-compiler-r1.patch @@ -0,0 +1,165 @@ +From f4d0b0eb899005b4b8b6388e1d8bb82cc0018fc8 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Wed, 7 Apr 2021 08:50:04 +0000 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 59 ++++++++++------------------------ + 1 file changed, 17 insertions(+), 42 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 72ea590..539672d 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -273,8 +273,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -518,24 +516,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1643,7 +1623,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1652,10 +1632,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1664,15 +1640,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2068,7 +2035,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2103,7 +2071,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2143,7 +2112,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2175,7 +2145,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2200,7 +2171,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2319,7 +2291,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2422,7 +2395,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2481,7 +2455,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + +-- +2.26.3 diff --git a/www-client/chromium/files/chromium-91-compiler.patch b/www-client/chromium/files/chromium-91-compiler.patch new file mode 100644 index 0000000..e45d4a3 --- /dev/null +++ b/www-client/chromium/files/chromium-91-compiler.patch @@ -0,0 +1,154 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 72ea590d6..bc23dce78 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -273,8 +273,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -518,24 +516,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1643,7 +1623,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1652,10 +1632,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1664,15 +1640,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2068,7 +2035,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2103,7 +2071,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2143,7 +2112,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2175,7 +2145,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2200,7 +2171,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2319,7 +2291,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2422,7 +2395,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2481,7 +2455,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-91-disable-nomerge.patch b/www-client/chromium/files/chromium-91-disable-nomerge.patch new file mode 100644 index 0000000..11dc66a --- /dev/null +++ b/www-client/chromium/files/chromium-91-disable-nomerge.patch @@ -0,0 +1,13 @@ +diff --git a/base/compiler_specific.h b/base/compiler_specific.h +index d662305dc..8e99145da 100644 +--- a/base/compiler_specific.h ++++ b/base/compiler_specific.h +@@ -341,7 +341,7 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) { + + // Use nomerge attribute to disable optimization of merging multiple same calls. + #if defined(__clang__) && __has_attribute(nomerge) +-#define NOMERGE [[clang::nomerge]] ++#define NOMERGE //[[clang::nomerge]] + #else + #define NOMERGE + #endif diff --git a/www-client/chromium/files/chromium-91-libyuv-aarch64.patch b/www-client/chromium/files/chromium-91-libyuv-aarch64.patch new file mode 100644 index 0000000..77b8f4c --- /dev/null +++ b/www-client/chromium/files/chromium-91-libyuv-aarch64.patch @@ -0,0 +1,91 @@ +diff --git a/third_party/libyuv/source/row_neon64.cc b/third_party/libyuv/source/row_neon64.cc +index 350c964..2aab413 100644 +--- a/third_party/libyuv/source/row_neon64.cc ++++ b/third_party/libyuv/source/row_neon64.cc +@@ -1835,7 +1835,7 @@ void ARGBToAB64Row_NEON(const uint8_t* src_argb, + : "+r"(src_argb), // %0 + "+r"(dst_ab64), // %1 + "+r"(width) // %2 +- : "m"(kShuffleARGBToABGR) // %3 ++ : "Q"(kShuffleARGBToABGR) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + +@@ -1859,7 +1859,7 @@ void AR64ToARGBRow_NEON(const uint16_t* src_ar64, + : "+r"(src_ar64), // %0 + "+r"(dst_argb), // %1 + "+r"(width) // %2 +- : "m"(kShuffleAR64ToARGB) // %3 ++ : "Q"(kShuffleAR64ToARGB) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + +@@ -1883,7 +1883,7 @@ void AB64ToARGBRow_NEON(const uint16_t* src_ab64, + : "+r"(src_ab64), // %0 + "+r"(dst_argb), // %1 + "+r"(width) // %2 +- : "m"(kShuffleAB64ToARGB) // %3 ++ : "Q"(kShuffleAB64ToARGB) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + +diff --git a/third_party/libyuv/source/scale_neon64.cc b/third_party/libyuv/source/scale_neon64.cc +index 8656fec..9f9636e 100644 +--- a/third_party/libyuv/source/scale_neon64.cc ++++ b/third_party/libyuv/source/scale_neon64.cc +@@ -601,8 +601,8 @@ void ScaleRowUp2_Bilinear_NEON(const uint8_t* src_ptr, + "umlal v4.8h, v1.8b, v31.8b \n" // 3*near+far (2, odd) + "umlal v5.8h, v0.8b, v31.8b \n" // 3*near+far (2, even) + +- "mov v0.8h, v4.8h \n" +- "mov v1.8h, v5.8h \n" ++ "mov v0.16b, v4.16b \n" ++ "mov v1.16b, v5.16b \n" + "mla v4.8h, v2.8h, v30.8h \n" // 9 3 3 1 (1, odd) + "mla v5.8h, v3.8h, v30.8h \n" // 9 3 3 1 (1, even) + "mla v2.8h, v0.8h, v30.8h \n" // 9 3 3 1 (2, odd) +@@ -642,7 +642,7 @@ void ScaleRowUp2_Linear_12_NEON(const uint16_t* src_ptr, + "ld1 {v1.8h}, [%1], #16 \n" // 12345678 (16b) + "prfm pldl1keep, [%0, 448] \n" // prefetch 7 lines ahead + +- "mov v2.8h, v0.8h \n" ++ "mov v2.16b, v0.16b \n" + "mla v0.8h, v1.8h, v31.8h \n" // 3*near+far (odd) + "mla v1.8h, v2.8h, v31.8h \n" // 3*near+far (even) + +@@ -679,7 +679,7 @@ void ScaleRowUp2_Bilinear_12_NEON(const uint16_t* src_ptr, + "ld1 {v3.8h}, [%2], #16 \n" // 12345678 (16b) + "prfm pldl1keep, [%0, 448] \n" // prefetch 7 lines ahead + +- "mov v0.8h, v2.8h \n" ++ "mov v0.16b, v2.16b \n" + "mla v2.8h, v3.8h, v31.8h \n" // 3*near+far (odd) + "mla v3.8h, v0.8h, v31.8h \n" // 3*near+far (even) + +@@ -687,12 +687,12 @@ void ScaleRowUp2_Bilinear_12_NEON(const uint16_t* src_ptr, + "ld1 {v5.8h}, [%3], #16 \n" // 12345678 (16b) + "prfm pldl1keep, [%1, 448] \n" // prefetch 7 lines ahead + +- "mov v0.8h, v4.8h \n" ++ "mov v0.16b, v4.16b \n" + "mla v4.8h, v5.8h, v31.8h \n" // 3*near+far (odd) + "mla v5.8h, v0.8h, v31.8h \n" // 3*near+far (even) + +- "mov v0.8h, v4.8h \n" +- "mov v1.8h, v5.8h \n" ++ "mov v0.16b, v4.16b \n" ++ "mov v1.16b, v5.16b \n" + "mla v4.8h, v2.8h, v31.8h \n" // 9 3 3 1 (1, odd) + "mla v5.8h, v3.8h, v31.8h \n" // 9 3 3 1 (1, even) + "mla v2.8h, v0.8h, v31.8h \n" // 9 3 3 1 (2, odd) +@@ -887,8 +887,8 @@ void ScaleUVRowUp2_Bilinear_NEON(const uint8_t* src_ptr, + "umlal v4.8h, v1.8b, v31.8b \n" // 3*near+far (2, odd) + "umlal v5.8h, v0.8b, v31.8b \n" // 3*near+far (2, even) + +- "mov v0.8h, v4.8h \n" +- "mov v1.8h, v5.8h \n" ++ "mov v0.16b, v4.16b \n" ++ "mov v1.16b, v5.16b \n" + "mla v4.8h, v2.8h, v30.8h \n" // 9 3 3 1 (1, odd) + "mla v5.8h, v3.8h, v30.8h \n" // 9 3 3 1 (1, even) + "mla v2.8h, v0.8h, v30.8h \n" // 9 3 3 1 (2, odd) diff --git a/www-client/chromium/files/chromium-92-ClassPropertyCaster-namespace.patch b/www-client/chromium/files/chromium-92-ClassPropertyCaster-namespace.patch new file mode 100644 index 0000000..08d7416 --- /dev/null +++ b/www-client/chromium/files/chromium-92-ClassPropertyCaster-namespace.patch @@ -0,0 +1,46 @@ +From 546b72d3b31e5d42e4d6cb783def2c89c977c5a6 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 7 May 2021 14:34:29 +0000 +Subject: [PATCH] GCC: drop anonymous namespace from ClassPropertyCaster +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Explicit template specialization is done for ui::ElementIdentifier +in another header. GCC fails to compile this with: + +../../ui/base/interaction/element_identifier.h:208:7: error: + explicit specialization of ‘template<class T> + class ui::{anonymous}::ClassPropertyCaster’ outside its + namespace must use a nested-name-specifier + +This is a known GCC bug (https://gcc.gnu.org/PR92598). +--- + ui/base/class_property.h | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/ui/base/class_property.h b/ui/base/class_property.h +index 4af52ae..25c00e7 100644 +--- a/ui/base/class_property.h ++++ b/ui/base/class_property.h +@@ -137,8 +137,6 @@ class COMPONENT_EXPORT(UI_BASE) PropertyHandler { + std::map<const void*, Value> prop_map_; + }; + +-namespace { +- + // No single new-style cast works for every conversion to/from int64_t, so we + // need this helper class. + template<typename T> +@@ -162,8 +160,6 @@ class ClassPropertyCaster<base::TimeDelta> { + } + }; + +-} // namespace +- + namespace subtle { + + class COMPONENT_EXPORT(UI_BASE) PropertyHelper { +-- +2.26.3 + diff --git a/www-client/chromium/files/chromium-92-base_atomic_include.patch b/www-client/chromium/files/chromium-92-base_atomic_include.patch new file mode 100644 index 0000000..e6faf77 --- /dev/null +++ b/www-client/chromium/files/chromium-92-base_atomic_include.patch @@ -0,0 +1,12 @@ +diff --git a/base/threading/platform_thread.cc b/base/threading/platform_thread.cc +index 3dc218163..f167af4ff 100644 +--- a/base/threading/platform_thread.cc ++++ b/base/threading/platform_thread.cc +@@ -4,6 +4,7 @@ + + #include "base/threading/platform_thread.h" + ++#include <atomic> + #include <memory> + + #include "base/feature_list.h" diff --git a/www-client/chromium/files/chromium-92-glibc-2.33.patch b/www-client/chromium/files/chromium-92-glibc-2.33.patch new file mode 100644 index 0000000..3b2ec6b --- /dev/null +++ b/www-client/chromium/files/chromium-92-glibc-2.33.patch @@ -0,0 +1,146 @@ +diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +index 05c39f0f5..3a9d6f359 100644 +--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ++++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +@@ -280,6 +280,18 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno, + return RestrictKillTarget(current_pid, sysno); + } + ++#if defined(__NR_newfstatat) ++ if (sysno == __NR_newfstatat) { ++ return RewriteFstatatSIGSYS(); ++ } ++#endif ++ ++#if defined(__NR_fstatat64) ++ if (sysno == __NR_fstatat64) { ++ return RewriteFstatatSIGSYS(); ++ } ++#endif ++ + // memfd_create is considered a file system syscall which below will be denied + // with fs_denied_errno, we need memfd_create for Mojo shared memory channels. + if (sysno == __NR_memfd_create) { +diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +index 76eb32493..09aa3f0b1 100644 +--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc ++++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +@@ -6,6 +6,8 @@ + + #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" + ++#include <errno.h> ++#include <fcntl.h> + #include <stddef.h> + #include <stdint.h> + #include <string.h> +@@ -355,6 +357,35 @@ intptr_t SIGSYSSchedHandler(const struct arch_seccomp_data& args, + return -ENOSYS; + } + ++intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, ++ void* aux) { ++ switch (args.nr) { ++#if defined(__NR_newfstatat) ++ case __NR_newfstatat: ++#endif ++#if defined(__NR_fstatat64) ++ case __NR_fstatat64: ++#endif ++#if defined(__NR_newfstatat) || defined(__NR_fstatat64) ++ if (*reinterpret_cast<const char *>(args.args[1]) == '\0' ++ && args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) { ++ return sandbox::sys_fstat64(static_cast<int>(args.args[0]), ++ reinterpret_cast<struct stat64 *>(args.args[2])); ++ } else { ++ errno = EACCES; ++ return -1; ++ } ++ break; ++#endif ++ } ++ ++ CrashSIGSYS_Handler(args, aux); ++ ++ // Should never be reached. ++ RAW_CHECK(false); ++ return -ENOSYS; ++} ++ + bpf_dsl::ResultExpr CrashSIGSYS() { + return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL); + } +@@ -387,6 +418,10 @@ bpf_dsl::ResultExpr RewriteSchedSIGSYS() { + return bpf_dsl::Trap(SIGSYSSchedHandler, NULL); + } + ++bpf_dsl::ResultExpr RewriteFstatatSIGSYS() { ++ return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL); ++} ++ + void AllocateCrashKeys() { + #if !defined(OS_NACL_NONSFI) + if (seccomp_crash_key) +diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h +index 7a958b93b..d0bfab74b 100644 +--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h ++++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h +@@ -62,6 +62,10 @@ SANDBOX_EXPORT intptr_t SIGSYSPtraceFailure(const arch_seccomp_data& args, + // sched_setparam(), sched_setscheduler() + SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args, + void* aux); ++// If the fstatat syscall is actually a disguised fstat, calls the regular fstat ++// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler. ++SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, ++ void* aux); + + // Variants of the above functions for use with bpf_dsl. + SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS(); +@@ -72,6 +76,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSKill(); + SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex(); + SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace(); + SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS(); ++SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS(); + + // Allocates a crash key so that Seccomp information can be recorded. + void AllocateCrashKeys(); +diff --git a/sandbox/linux/services/syscall_wrappers.cc b/sandbox/linux/services/syscall_wrappers.cc +index fcfd2aa12..5396b36da 100644 +--- a/sandbox/linux/services/syscall_wrappers.cc ++++ b/sandbox/linux/services/syscall_wrappers.cc +@@ -261,4 +261,13 @@ int sys_sigaction(int signum, + + #endif // defined(MEMORY_SANITIZER) + ++SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf) ++{ ++#if defined(__NR_fstat64) ++ return syscall(__NR_fstat64, fd, buf); ++#else ++ return syscall(__NR_fstat, fd, buf); ++#endif ++} ++ + } // namespace sandbox +diff --git a/sandbox/linux/services/syscall_wrappers.h b/sandbox/linux/services/syscall_wrappers.h +index 1975bfbd8..ed7ee5a1c 100644 +--- a/sandbox/linux/services/syscall_wrappers.h ++++ b/sandbox/linux/services/syscall_wrappers.h +@@ -17,6 +17,7 @@ struct sock_fprog; + struct rlimit64; + struct cap_hdr; + struct cap_data; ++struct stat64; + + namespace sandbox { + +@@ -84,6 +85,9 @@ SANDBOX_EXPORT int sys_sigaction(int signum, + const struct sigaction* act, + struct sigaction* oldact); + ++// Recent glibc rewrites fstat to fstatat. ++SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf); ++ + } // namespace sandbox + + #endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_ diff --git a/www-client/chromium/files/chromium-92-platform_thread-include.patch b/www-client/chromium/files/chromium-92-platform_thread-include.patch new file mode 100644 index 0000000..881a2a0 --- /dev/null +++ b/www-client/chromium/files/chromium-92-platform_thread-include.patch @@ -0,0 +1,24 @@ +From 49c9ab14152b52edc9f0d8f1245039792f270315 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 7 May 2021 09:53:18 +0000 +Subject: [PATCH] IWYU: include atomic for std::atomic + +--- + base/threading/platform_thread.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/base/threading/platform_thread.cc b/base/threading/platform_thread.cc +index 3dc2181..f167af4 100644 +--- a/base/threading/platform_thread.cc ++++ b/base/threading/platform_thread.cc +@@ -4,6 +4,7 @@ + + #include "base/threading/platform_thread.h" + ++#include <atomic> + #include <memory> + + #include "base/feature_list.h" +-- +2.26.3 + diff --git a/www-client/chromium/files/chromium-92-sql-cursor.patch b/www-client/chromium/files/chromium-92-sql-cursor.patch new file mode 100644 index 0000000..a4864ba --- /dev/null +++ b/www-client/chromium/files/chromium-92-sql-cursor.patch @@ -0,0 +1,231 @@ +From 80368f8ba7a8bab13440463a254888311efe3986 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Tue, 04 May 2021 15:00:19 +0000 +Subject: [PATCH] sql: make VirtualCursor standard layout type + +sql::recover::VirtualCursor needs to be a standard layout type, but +has members of type std::unique_ptr. However, std::unique_ptr is not +guaranteed to be standard layout. Compiling with clang combined with +gcc-11 libstdc++ fails because of this. Replace std::unique_ptr with +raw pointers. + +Bug: 1189788 +Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c +--- + +diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc +index 9ecaafe..839318a 100644 +--- a/sql/recover_module/btree.cc ++++ b/sql/recover_module/btree.cc +@@ -135,16 +135,25 @@ + "Move the destructor to the .cc file if it's non-trival"); + #endif // !DCHECK_IS_ON() + +-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept +- : page_id_(db_reader->page_id()), +- db_reader_(db_reader), +- cell_count_(ComputeCellCount(db_reader)), +- next_read_index_(0), +- last_record_size_(0) { ++void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) { ++ DCHECK(db_reader); + DCHECK(IsOnValidPage(db_reader)); ++ page_id_ = db_reader->page_id(); ++ db_reader_ = db_reader; ++ cell_count_ = ComputeCellCount(db_reader); ++ next_read_index_ = 0; ++ last_record_size_ = 0; + DCHECK(DatabasePageReader::IsValidPageId(page_id_)); + } + ++void LeafPageDecoder::Reset() { ++ db_reader_ = nullptr; ++ page_id_ = 0; ++ cell_count_ = 0; ++ next_read_index_ = 0; ++ last_record_size_ = 0; ++} ++ + bool LeafPageDecoder::TryAdvance() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(CanAdvance()); +diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h +index d76d076..33114b0 100644 +--- a/sql/recover_module/btree.h ++++ b/sql/recover_module/btree.h +@@ -102,7 +102,7 @@ + // + // |db_reader| must have been used to read an inner page of a table B-tree. + // |db_reader| must outlive this instance. +- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept; ++ explicit LeafPageDecoder() noexcept = default; + ~LeafPageDecoder() noexcept = default; + + LeafPageDecoder(const LeafPageDecoder&) = delete; +@@ -150,6 +150,15 @@ + // read as long as CanAdvance() returns true. + bool TryAdvance(); + ++ // Initialize with DatabasePageReader ++ void Initialize(DatabasePageReader* db_reader); ++ ++ // Reset internal DatabasePageReader ++ void Reset(); ++ ++ // True if DatabasePageReader is valid ++ bool IsValid() { return (db_reader_ != nullptr); } ++ + // True if the given reader may point to an inner page in a table B-tree. + // + // The last ReadPage() call on |db_reader| must have succeeded. +@@ -163,14 +172,14 @@ + static int ComputeCellCount(DatabasePageReader* db_reader); + + // The number of the B-tree page this reader is reading. +- const int64_t page_id_; ++ int64_t page_id_; + // Used to read the tree page. + // + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the DatabasePageReader outlives this. +- DatabasePageReader* const db_reader_; ++ DatabasePageReader* db_reader_; + // Caches the ComputeCellCount() value for this reader's page. +- const int cell_count_ = ComputeCellCount(db_reader_); ++ int cell_count_; + + // The reader's cursor state. + // +diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc +index 0029ff9..42548bc 100644 +--- a/sql/recover_module/cursor.cc ++++ b/sql/recover_module/cursor.cc +@@ -26,7 +26,7 @@ + int VirtualCursor::First() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + inner_decoders_.clear(); +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + + AppendPageDecoder(table_->root_page_id()); + return Next(); +@@ -36,18 +36,18 @@ + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + record_reader_.Reset(); + +- while (!inner_decoders_.empty() || leaf_decoder_.get()) { +- if (leaf_decoder_.get()) { +- if (!leaf_decoder_->CanAdvance()) { ++ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) { ++ if (leaf_decoder_.IsValid()) { ++ if (!leaf_decoder_.CanAdvance()) { + // The leaf has been exhausted. Remove it from the DFS stack. +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + continue; + } +- if (!leaf_decoder_->TryAdvance()) ++ if (!leaf_decoder_.TryAdvance()) + continue; + +- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(), +- leaf_decoder_->last_record_offset())) { ++ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(), ++ leaf_decoder_.last_record_offset())) { + continue; + } + if (!record_reader_.Initialize()) +@@ -99,13 +99,13 @@ + int64_t VirtualCursor::RowId() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(record_reader_.IsInitialized()); +- DCHECK(leaf_decoder_.get()); +- return leaf_decoder_->last_record_rowid(); ++ DCHECK(leaf_decoder_.IsValid()); ++ return leaf_decoder_.last_record_rowid(); + } + + void VirtualCursor::AppendPageDecoder(int page_id) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- DCHECK(leaf_decoder_.get() == nullptr) ++ DCHECK(!leaf_decoder_.IsValid()) + << __func__ + << " must only be called when the current path has no leaf decoder"; + +@@ -113,7 +113,7 @@ + return; + + if (LeafPageDecoder::IsOnValidPage(&db_reader_)) { +- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_); ++ leaf_decoder_.Initialize(&db_reader_); + return; + } + +diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h +index afcd690..b15c31d 100644 +--- a/sql/recover_module/cursor.h ++++ b/sql/recover_module/cursor.h +@@ -129,7 +129,7 @@ + std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_; + + // Decodes the leaf page containing records. +- std::unique_ptr<LeafPageDecoder> leaf_decoder_; ++ LeafPageDecoder leaf_decoder_; + + SEQUENCE_CHECKER(sequence_checker_); + }; +diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc +index 58e75de..5fe9620 100644 +--- a/sql/recover_module/pager.cc ++++ b/sql/recover_module/pager.cc +@@ -23,8 +23,7 @@ + "ints are not appropriate for representing page IDs"); + + DatabasePageReader::DatabasePageReader(VirtualTable* table) +- : page_data_(std::make_unique<uint8_t[]>(table->page_size())), +- table_(table) { ++ : page_data_(), table_(table) { + DCHECK(table != nullptr); + DCHECK(IsValidPageSize(table->page_size())); + } +@@ -57,8 +56,8 @@ + std::numeric_limits<int64_t>::max(), + "The |read_offset| computation above may overflow"); + +- int sqlite_status = +- RawRead(sqlite_file, read_size, read_offset, page_data_.get()); ++ int sqlite_status = RawRead(sqlite_file, read_size, read_offset, ++ const_cast<uint8_t*>(page_data_.data())); + + // |page_id_| needs to be set to kInvalidPageId if the read failed. + // Otherwise, future ReadPage() calls with the previous |page_id_| value +diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h +index 0e388ddc..99314e3 100644 +--- a/sql/recover_module/pager.h ++++ b/sql/recover_module/pager.h +@@ -5,6 +5,7 @@ + #ifndef SQL_RECOVER_MODULE_PAGER_H_ + #define SQL_RECOVER_MODULE_PAGER_H_ + ++#include <array> + #include <cstdint> + #include <memory> + +@@ -70,7 +71,7 @@ + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_NE(page_id_, kInvalidPageId) + << "Successful ReadPage() required before accessing pager state"; +- return page_data_.get(); ++ return page_data_.data(); + } + + // The number of bytes in the page read by the last ReadPage() call. +@@ -137,7 +138,7 @@ + int page_id_ = kInvalidPageId; + // Stores the bytes of the last page successfully read by ReadPage(). + // The content is undefined if the last call to ReadPage() did not succeed. +- const std::unique_ptr<uint8_t[]> page_data_; ++ const std::array<uint8_t, kMaxPageSize> page_data_; + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the VirtualTable outlives this. + VirtualTable* const table_; diff --git a/www-client/chromium/files/chromium-93-AXPropertyNode-private.patch b/www-client/chromium/files/chromium-93-AXPropertyNode-private.patch new file mode 100644 index 0000000..f184af6 --- /dev/null +++ b/www-client/chromium/files/chromium-93-AXPropertyNode-private.patch @@ -0,0 +1,43 @@ +From 0cdb42df76598037785ca33eb66bdc9ac2c16fd9 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sat, 5 Jun 2021 11:16:29 +0000 +Subject: [PATCH] libstdc++: make constructors public in AXPropertyNode + +Making std::allocator<AXPropertyNode> friend of AXPropertyNode is +useless, because std::allocator is free to delegate the task of +construction to a free function or class which is not friend of +AXPropertyNode. libstdc++ uses __gnu_cxx::new_allocator<T> for +construction and fails if constructors of AXPropertyNode are +private. +--- + ui/accessibility/platform/inspect/ax_property_node.h | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/ui/accessibility/platform/inspect/ax_property_node.h b/ui/accessibility/platform/inspect/ax_property_node.h +index 35b8309..78bafa5 100644 +--- a/ui/accessibility/platform/inspect/ax_property_node.h ++++ b/ui/accessibility/platform/inspect/ax_property_node.h +@@ -93,7 +93,6 @@ class AX_EXPORT AXPropertyNode final { + // Returns a tree-like string representation of the node. + std::string ToTreeString(const std::string& indent = "") const; + +- private: + using iterator = std::string::const_iterator; + + explicit AXPropertyNode(iterator key_begin, +@@ -105,11 +104,10 @@ class AX_EXPORT AXPropertyNode final { + iterator value_begin, + iterator value_end); + ++ private: + // Builds a property node struct for a string of NAME(ARG1, ..., ARGN) format, + // where each ARG is a scalar value or a string of the same format. + static iterator Parse(AXPropertyNode* node, iterator begin, iterator end); +- +- friend class std::allocator<AXPropertyNode>; + }; + + } // namespace ui +-- +2.31.1 + diff --git a/www-client/chromium/files/chromium-93-EnumTable-crash.patch b/www-client/chromium/files/chromium-93-EnumTable-crash.patch new file mode 100644 index 0000000..a5c2def --- /dev/null +++ b/www-client/chromium/files/chromium-93-EnumTable-crash.patch @@ -0,0 +1,79 @@ +diff --git a/components/cast_channel/enum_table.h b/components/cast_channel/enum_table.h +index a63ae86..83ada65 100644 +--- a/components/cast_channel/enum_table.h ++++ b/components/cast_channel/enum_table.h +@@ -8,6 +8,7 @@ + #include <cstdint> + #include <cstring> + #include <ostream> ++#include <vector> + + #include "base/check_op.h" + #include "base/macros.h" +@@ -213,7 +214,7 @@ class + + template <typename E> + friend class EnumTable; +- DISALLOW_COPY_AND_ASSIGN(GenericEnumTableEntry); ++ DISALLOW_ASSIGN(GenericEnumTableEntry); + }; + + // Yes, these constructors really needs to be inlined. Even though they look +@@ -251,8 +252,7 @@ class EnumTable { + // Constructor for regular entries. + constexpr Entry(E value, base::StringPiece str) + : GenericEnumTableEntry(static_cast<int32_t>(value), str) {} +- +- DISALLOW_COPY_AND_ASSIGN(Entry); ++ DISALLOW_ASSIGN(Entry); + }; + + static_assert(sizeof(E) <= sizeof(int32_t), +@@ -307,15 +307,14 @@ class EnumTable { + if (is_sorted_) { + const std::size_t index = static_cast<std::size_t>(value); + if (ANALYZER_ASSUME_TRUE(index < data_.size())) { +- const auto& entry = data_.begin()[index]; ++ const auto& entry = data_[index]; + if (ANALYZER_ASSUME_TRUE(entry.has_str())) + return entry.str(); + } + return absl::nullopt; + } + return GenericEnumTableEntry::FindByValue( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), static_cast<int32_t>(value)); ++ &data_[0], data_.size(), static_cast<int32_t>(value)); + } + + // This overload of GetString is designed for cases where the argument is a +@@ -343,8 +342,7 @@ class EnumTable { + // enum value directly. + absl::optional<E> GetEnum(base::StringPiece str) const { + auto* entry = GenericEnumTableEntry::FindByString( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), str); ++ &data_[0], data_.size(), str); + return entry ? static_cast<E>(entry->value) : absl::optional<E>(); + } + +@@ -359,7 +357,7 @@ class EnumTable { + // Align the data on a cache line boundary. + alignas(64) + #endif +- std::initializer_list<Entry> data_; ++ const std::vector<Entry> data_; + bool is_sorted_; + + constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted) +@@ -371,8 +369,8 @@ class EnumTable { + + for (std::size_t i = 0; i < data.size(); i++) { + for (std::size_t j = i + 1; j < data.size(); j++) { +- const Entry& ei = data.begin()[i]; +- const Entry& ej = data.begin()[j]; ++ const Entry& ei = data[i]; ++ const Entry& ej = data[j]; + DCHECK(ei.value != ej.value) + << "Found duplicate enum values at indices " << i << " and " << j; + DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str())) diff --git a/www-client/chromium/files/chromium-93-InkDropHost-crash.patch b/www-client/chromium/files/chromium-93-InkDropHost-crash.patch new file mode 100644 index 0000000..54d16db --- /dev/null +++ b/www-client/chromium/files/chromium-93-InkDropHost-crash.patch @@ -0,0 +1,25 @@ +diff --git a/ui/views/animation/ink_drop_host_view.h b/ui/views/animation/ink_drop_host_view.h +index bd0975b..e5df288 100644 +--- a/ui/views/animation/ink_drop_host_view.h ++++ b/ui/views/animation/ink_drop_host_view.h +@@ -238,6 +238,11 @@ class VIEWS_EXPORT InkDropHost { + // Used to observe View and inform the InkDrop of host-transform changes. + ViewLayerTransformObserver host_view_transform_observer_; + ++ // Declared before |ink_drop_|, because InkDropImpl may call ++ // RemoveInkDropLayer on partly destructed InkDropHost. In ++ // that case |ink_drop_mask_| must be still valid. ++ std::unique_ptr<views::InkDropMask> ink_drop_mask_; ++ + // Should not be accessed directly. Use GetInkDrop() instead. + std::unique_ptr<InkDrop> ink_drop_; + +@@ -261,8 +266,6 @@ class VIEWS_EXPORT InkDropHost { + int ink_drop_small_corner_radius_ = 2; + int ink_drop_large_corner_radius_ = 4; + +- std::unique_ptr<views::InkDropMask> ink_drop_mask_; +- + base::RepeatingCallback<std::unique_ptr<InkDrop>()> create_ink_drop_callback_; + base::RepeatingCallback<std::unique_ptr<InkDropRipple>()> + create_ink_drop_ripple_callback_; diff --git a/www-client/chromium/files/chromium-93-cart-include.patch b/www-client/chromium/files/chromium-93-cart-include.patch new file mode 100644 index 0000000..82ca038 --- /dev/null +++ b/www-client/chromium/files/chromium-93-cart-include.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/cart/cart_db.h b/chrome/browser/cart/cart_db.h +index 82b2a56c3..0f8472f3e 100644 +--- a/chrome/browser/cart/cart_db.h ++++ b/chrome/browser/cart/cart_db.h +@@ -5,6 +5,8 @@ + #ifndef CHROME_BROWSER_CART_CART_DB_H_ + #define CHROME_BROWSER_CART_CART_DB_H_ + ++#include <vector> ++ + #include "base/callback_helpers.h" + #include "base/memory/weak_ptr.h" + diff --git a/www-client/chromium/files/chromium-93-devtools-msg-dispatcher-include.patch b/www-client/chromium/files/chromium-93-devtools-msg-dispatcher-include.patch new file mode 100644 index 0000000..ddb94cf --- /dev/null +++ b/www-client/chromium/files/chromium-93-devtools-msg-dispatcher-include.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/devtools/devtools_embedder_message_dispatcher.h b/chrome/browser/devtools/devtools_embedder_message_dispatcher.h +index 12f8500b7..4007112f3 100644 +--- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.h ++++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.h +@@ -8,6 +8,7 @@ + #include <map> + #include <memory> + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "ui/gfx/geometry/insets.h" diff --git a/www-client/chromium/files/chromium-93-dnsprefetch-include.patch b/www-client/chromium/files/chromium-93-dnsprefetch-include.patch new file mode 100644 index 0000000..c8d63b6 --- /dev/null +++ b/www-client/chromium/files/chromium-93-dnsprefetch-include.patch @@ -0,0 +1,12 @@ +diff --git a/components/network_hints/renderer/renderer_dns_prefetch.h b/components/network_hints/renderer/renderer_dns_prefetch.h +index 87f1bb1bb..3ead6b3a6 100644 +--- a/components/network_hints/renderer/renderer_dns_prefetch.h ++++ b/components/network_hints/renderer/renderer_dns_prefetch.h +@@ -25,6 +25,7 @@ + + #include <map> + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "base/macros.h" diff --git a/www-client/chromium/files/chromium-93-ext-autoconfirm-include.patch b/www-client/chromium/files/chromium-93-ext-autoconfirm-include.patch new file mode 100644 index 0000000..6bf4fcf --- /dev/null +++ b/www-client/chromium/files/chromium-93-ext-autoconfirm-include.patch @@ -0,0 +1,12 @@ +diff --git a/extensions/browser/extension_dialog_auto_confirm.cc b/extensions/browser/extension_dialog_auto_confirm.cc +index adb4ac3f9..be8b161bc 100644 +--- a/extensions/browser/extension_dialog_auto_confirm.cc ++++ b/extensions/browser/extension_dialog_auto_confirm.cc +@@ -4,6 +4,7 @@ + + #include "extensions/browser/extension_dialog_auto_confirm.h" + ++#include <cstring> + #include <utility> + + #include "base/check.h" diff --git a/www-client/chromium/files/chromium-93-gpu-ipc-include.patch b/www-client/chromium/files/chromium-93-gpu-ipc-include.patch new file mode 100644 index 0000000..24793fa --- /dev/null +++ b/www-client/chromium/files/chromium-93-gpu-ipc-include.patch @@ -0,0 +1,13 @@ +diff --git a/gpu/ipc/gpu_task_scheduler_helper.h b/gpu/ipc/gpu_task_scheduler_helper.h +index 4315277b2..01c9c8ed9 100644 +--- a/gpu/ipc/gpu_task_scheduler_helper.h ++++ b/gpu/ipc/gpu_task_scheduler_helper.h +@@ -5,6 +5,8 @@ + #ifndef GPU_IPC_GPU_TASK_SCHEDULER_HELPER_H_ + #define GPU_IPC_GPU_TASK_SCHEDULER_HELPER_H_ + ++#include <vector> ++ + #include "base/callback.h" + #include "gpu/command_buffer/common/sync_token.h" + #include "gpu/command_buffer/service/sequence_id.h" diff --git a/www-client/chromium/files/chromium-93-hid-chooser-include.patch b/www-client/chromium/files/chromium-93-hid-chooser-include.patch new file mode 100644 index 0000000..7ae8938 --- /dev/null +++ b/www-client/chromium/files/chromium-93-hid-chooser-include.patch @@ -0,0 +1,13 @@ +diff --git a/content/public/browser/hid_chooser.h b/content/public/browser/hid_chooser.h +index d40cf59be..b2b9613cf 100644 +--- a/content/public/browser/hid_chooser.h ++++ b/content/public/browser/hid_chooser.h +@@ -5,6 +5,8 @@ + #ifndef CONTENT_PUBLIC_BROWSER_HID_CHOOSER_H_ + #define CONTENT_PUBLIC_BROWSER_HID_CHOOSER_H_ + ++#include <vector> ++ + #include "base/callback_forward.h" + #include "base/macros.h" + #include "content/common/content_export.h" diff --git a/www-client/chromium/files/chromium-93-lang-prefs-include.patch b/www-client/chromium/files/chromium-93-lang-prefs-include.patch new file mode 100644 index 0000000..7b1829d --- /dev/null +++ b/www-client/chromium/files/chromium-93-lang-prefs-include.patch @@ -0,0 +1,12 @@ +diff --git a/components/language/core/browser/language_prefs.h b/components/language/core/browser/language_prefs.h +index 28c89546c..617d1ed91 100644 +--- a/components/language/core/browser/language_prefs.h ++++ b/components/language/core/browser/language_prefs.h +@@ -7,6 +7,7 @@ + + #include <set> + #include <string> ++#include <vector> + + #include "base/macros.h" + #include "base/strings/string_piece.h" diff --git a/www-client/chromium/files/chromium-93-login-detection-include.patch b/www-client/chromium/files/chromium-93-login-detection-include.patch new file mode 100644 index 0000000..e2a6aa3 --- /dev/null +++ b/www-client/chromium/files/chromium-93-login-detection-include.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/login_detection/oauth_login_detector.h b/chrome/browser/login_detection/oauth_login_detector.h +index 6844529c7..c0c3b185f 100644 +--- a/chrome/browser/login_detection/oauth_login_detector.h ++++ b/chrome/browser/login_detection/oauth_login_detector.h +@@ -7,6 +7,7 @@ + + #include <set> + #include <string> ++#include <vector> + + #include "third_party/abseil-cpp/absl/types/optional.h" + #include "url/gurl.h" diff --git a/www-client/chromium/files/chromium-93-media-ffmpeg-type.patch b/www-client/chromium/files/chromium-93-media-ffmpeg-type.patch new file mode 100644 index 0000000..ca8b98f --- /dev/null +++ b/www-client/chromium/files/chromium-93-media-ffmpeg-type.patch @@ -0,0 +1,36 @@ +diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc +index ac4713b07..492a9a37d 100644 +--- a/media/filters/ffmpeg_demuxer.cc ++++ b/media/filters/ffmpeg_demuxer.cc +@@ -427,11 +427,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + scoped_refptr<DecoderBuffer> buffer; + + if (type() == DemuxerStream::TEXT) { +- size_t id_size = 0; ++ int id_size = 0; + uint8_t* id_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size); + +- size_t settings_size = 0; ++ int settings_size = 0; + uint8_t* settings_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size); + +@@ -443,7 +443,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + buffer = DecoderBuffer::CopyFrom(packet->data, packet->size, + side_data.data(), side_data.size()); + } else { +- size_t side_data_size = 0; ++ int side_data_size = 0; + uint8_t* side_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); + +@@ -504,7 +504,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + packet->size - data_offset); + } + +- size_t skip_samples_size = 0; ++ int skip_samples_size = 0; + const uint32_t* skip_samples_ptr = + reinterpret_cast<const uint32_t*>(av_packet_get_side_data( + packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); diff --git a/www-client/chromium/files/chromium-93-media-history-include.patch b/www-client/chromium/files/chromium-93-media-history-include.patch new file mode 100644 index 0000000..4253fd7 --- /dev/null +++ b/www-client/chromium/files/chromium-93-media-history-include.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/media/history/media_history_origin_table.h b/chrome/browser/media/history/media_history_origin_table.h +index c28d5e3a8..32e1757de 100644 +--- a/chrome/browser/media/history/media_history_origin_table.h ++++ b/chrome/browser/media/history/media_history_origin_table.h +@@ -6,6 +6,7 @@ + #define CHROME_BROWSER_MEDIA_HISTORY_MEDIA_HISTORY_ORIGIN_TABLE_H_ + + #include <string> ++#include <vector> + + #include "base/updateable_sequenced_task_runner.h" + #include "chrome/browser/media/history/media_history_table_base.h" diff --git a/www-client/chromium/files/chromium-93-net-http-include.patch b/www-client/chromium/files/chromium-93-net-http-include.patch new file mode 100644 index 0000000..fe64bb7 --- /dev/null +++ b/www-client/chromium/files/chromium-93-net-http-include.patch @@ -0,0 +1,12 @@ +diff --git a/net/http/http_basic_state.h b/net/http/http_basic_state.h +index 5fd1ee514..06c46df6b 100644 +--- a/net/http/http_basic_state.h ++++ b/net/http/http_basic_state.h +@@ -10,6 +10,7 @@ + + #include <memory> + #include <string> ++#include <vector> + + #include "base/macros.h" + #include "base/memory/ref_counted.h" diff --git a/www-client/chromium/files/chromium-93-payment-include.patch b/www-client/chromium/files/chromium-93-payment-include.patch new file mode 100644 index 0000000..588931f --- /dev/null +++ b/www-client/chromium/files/chromium-93-payment-include.patch @@ -0,0 +1,12 @@ +diff --git a/components/payments/core/journey_logger.h b/components/payments/core/journey_logger.h +index 026b38e7e..e63673de3 100644 +--- a/components/payments/core/journey_logger.h ++++ b/components/payments/core/journey_logger.h +@@ -6,6 +6,7 @@ + #define COMPONENTS_PAYMENTS_CORE_JOURNEY_LOGGER_H_ + + #include <string> ++#include <vector> + + #include "base/macros.h" + #include "base/time/time.h" diff --git a/www-client/chromium/files/chromium-93-pdfium-include.patch b/www-client/chromium/files/chromium-93-pdfium-include.patch new file mode 100644 index 0000000..2f601ed --- /dev/null +++ b/www-client/chromium/files/chromium-93-pdfium-include.patch @@ -0,0 +1,12 @@ +diff --git a/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp b/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp +index c66985a7f..83a9ba132 100644 +--- a/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp ++++ b/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp +@@ -6,6 +6,7 @@ + + #include "core/fxcodec/jpx/cjpx_decoder.h" + ++#include <cstring> + #include <algorithm> + #include <limits> + #include <utility> diff --git a/www-client/chromium/files/chromium-93-phishing-classifier-include.patch b/www-client/chromium/files/chromium-93-phishing-classifier-include.patch new file mode 100644 index 0000000..64a95fe --- /dev/null +++ b/www-client/chromium/files/chromium-93-phishing-classifier-include.patch @@ -0,0 +1,12 @@ +diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h +index e86d14e8d..b3e74406c 100644 +--- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h ++++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h +@@ -23,6 +23,7 @@ + #include <memory> + #include <set> + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "base/macros.h" diff --git a/www-client/chromium/files/chromium-93-pwdmgr-include-r1.patch b/www-client/chromium/files/chromium-93-pwdmgr-include-r1.patch new file mode 100644 index 0000000..6721b8b --- /dev/null +++ b/www-client/chromium/files/chromium-93-pwdmgr-include-r1.patch @@ -0,0 +1,12 @@ +diff --git a/components/password_manager/core/browser/hash_password_manager.h b/components/password_manager/core/browser/hash_password_manager.h +index c762c5a8c..85e656edc 100644 +--- a/components/password_manager/core/browser/hash_password_manager.h ++++ b/components/password_manager/core/browser/hash_password_manager.h +@@ -6,6 +6,7 @@ + #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_HASH_PASSWORD_MANAGER_H_ + + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "base/callback_list.h" diff --git a/www-client/chromium/files/chromium-93-pwdmgr-include.patch b/www-client/chromium/files/chromium-93-pwdmgr-include.patch new file mode 100644 index 0000000..041be9f --- /dev/null +++ b/www-client/chromium/files/chromium-93-pwdmgr-include.patch @@ -0,0 +1,25 @@ +diff --git a/components/password_manager/core/browser/field_info_table.h b/components/password_manager/core/browser/field_info_table.h +index fb6d84005..e4c88aab3 100644 +--- a/components/password_manager/core/browser/field_info_table.h ++++ b/components/password_manager/core/browser/field_info_table.h +@@ -5,6 +5,8 @@ + #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_FIELD_INFO_TABLE_H_ + #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_FIELD_INFO_TABLE_H_ + ++#include <vector> ++ + #include "base/macros.h" + #include "base/time/time.h" + #include "components/autofill/core/browser/field_types.h" +diff --git a/components/password_manager/core/browser/hash_password_manager.h b/components/password_manager/core/browser/hash_password_manager.h +index c762c5a8c..85e656edc 100644 +--- a/components/password_manager/core/browser/hash_password_manager.h ++++ b/components/password_manager/core/browser/hash_password_manager.h +@@ -6,6 +6,7 @@ + #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_HASH_PASSWORD_MANAGER_H_ + + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "base/callback_list.h" diff --git a/www-client/chromium/files/chromium-93-quiche-logging-include.patch b/www-client/chromium/files/chromium-93-quiche-logging-include.patch new file mode 100644 index 0000000..405a6ae --- /dev/null +++ b/www-client/chromium/files/chromium-93-quiche-logging-include.patch @@ -0,0 +1,13 @@ +diff --git a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h +index 8ff5e27f8..326ed9307 100644 +--- a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h ++++ b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h +@@ -5,6 +5,8 @@ + #ifndef NET_THIRD_PARTY_QUICHE_OVERRIDES_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_ + #define NET_THIRD_PARTY_QUICHE_OVERRIDES_QUICHE_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_ + ++#include <vector> ++ + #include "base/check_op.h" + #include "base/logging.h" + #include "base/notreached.h" diff --git a/www-client/chromium/files/chromium-93-site_settings_helper-initialzation.patch b/www-client/chromium/files/chromium-93-site_settings_helper-initialzation.patch new file mode 100644 index 0000000..6551b31 --- /dev/null +++ b/www-client/chromium/files/chromium-93-site_settings_helper-initialzation.patch @@ -0,0 +1,37 @@ +From 7ef6d4ad7ddc7f0c4124bc538c4bd3a8efdd37cd Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 4 Jun 2021 06:52:30 +0000 +Subject: [PATCH] GCC: fix brace-initialization with NoDestructor + +GCC requires brace-initialization for NoDestructor and +std::vector<T> for base_types. Therefore change to double +brace-initialzation. +--- + chrome/browser/ui/webui/settings/site_settings_helper.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc +index 7831684..4478800 100644 +--- a/chrome/browser/ui/webui/settings/site_settings_helper.cc ++++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc +@@ -410,7 +410,7 @@ const std::vector<ContentSettingsType>& GetVisiblePermissionCategories() { + // First build the list of permissions that will be shown regardless of + // `origin`. Some categories such as COOKIES store their data in a custom way, + // so are not included here. +- static base::NoDestructor<std::vector<ContentSettingsType>> base_types({ ++ static base::NoDestructor<std::vector<ContentSettingsType>> base_types{{ + ContentSettingsType::AR, ContentSettingsType::AUTOMATIC_DOWNLOADS, + ContentSettingsType::BACKGROUND_SYNC, + ContentSettingsType::CLIPBOARD_READ_WRITE, +@@ -429,7 +429,7 @@ const std::vector<ContentSettingsType>& GetVisiblePermissionCategories() { + ContentSettingsType::SENSORS, ContentSettingsType::SERIAL_GUARD, + ContentSettingsType::SOUND, ContentSettingsType::USB_GUARD, + ContentSettingsType::VR, +- }); ++ }}; + static bool initialized = false; + if (!initialized) { + // The permission categories in this block are only shown when running with +-- +2.31.1 + diff --git a/www-client/chromium/files/chromium-93-sms-fetcher-include.patch b/www-client/chromium/files/chromium-93-sms-fetcher-include.patch new file mode 100644 index 0000000..91d92de --- /dev/null +++ b/www-client/chromium/files/chromium-93-sms-fetcher-include.patch @@ -0,0 +1,24 @@ +diff --git a/chrome/browser/sharing/sms/sms_remote_fetcher.h b/chrome/browser/sharing/sms/sms_remote_fetcher.h +index 2cbe6acdd..678c1b2e5 100644 +--- a/chrome/browser/sharing/sms/sms_remote_fetcher.h ++++ b/chrome/browser/sharing/sms/sms_remote_fetcher.h +@@ -6,6 +6,7 @@ + #define CHROME_BROWSER_SHARING_SMS_SMS_REMOTE_FETCHER_H_ + + #include <string> ++#include <vector> + + #include "base/callback.h" + #include "third_party/abseil-cpp/absl/types/optional.h" +diff --git a/content/public/browser/sms_fetcher.h b/content/public/browser/sms_fetcher.h +index 13f683243..983d81891 100644 +--- a/content/public/browser/sms_fetcher.h ++++ b/content/public/browser/sms_fetcher.h +@@ -6,6 +6,7 @@ + #define CONTENT_PUBLIC_BROWSER_SMS_FETCHER_H_ + + #include <string> ++#include <vector> + + #include "base/observer_list_types.h" + #include "content/common/content_export.h" diff --git a/www-client/chromium/files/chromium-93-sql-virtual-cursor.patch b/www-client/chromium/files/chromium-93-sql-virtual-cursor.patch new file mode 100644 index 0000000..a4864ba --- /dev/null +++ b/www-client/chromium/files/chromium-93-sql-virtual-cursor.patch @@ -0,0 +1,231 @@ +From 80368f8ba7a8bab13440463a254888311efe3986 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Tue, 04 May 2021 15:00:19 +0000 +Subject: [PATCH] sql: make VirtualCursor standard layout type + +sql::recover::VirtualCursor needs to be a standard layout type, but +has members of type std::unique_ptr. However, std::unique_ptr is not +guaranteed to be standard layout. Compiling with clang combined with +gcc-11 libstdc++ fails because of this. Replace std::unique_ptr with +raw pointers. + +Bug: 1189788 +Change-Id: Ia6dc388cc5ef1c0f2afc75f8ca45b9f12687ca9c +--- + +diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc +index 9ecaafe..839318a 100644 +--- a/sql/recover_module/btree.cc ++++ b/sql/recover_module/btree.cc +@@ -135,16 +135,25 @@ + "Move the destructor to the .cc file if it's non-trival"); + #endif // !DCHECK_IS_ON() + +-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept +- : page_id_(db_reader->page_id()), +- db_reader_(db_reader), +- cell_count_(ComputeCellCount(db_reader)), +- next_read_index_(0), +- last_record_size_(0) { ++void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) { ++ DCHECK(db_reader); + DCHECK(IsOnValidPage(db_reader)); ++ page_id_ = db_reader->page_id(); ++ db_reader_ = db_reader; ++ cell_count_ = ComputeCellCount(db_reader); ++ next_read_index_ = 0; ++ last_record_size_ = 0; + DCHECK(DatabasePageReader::IsValidPageId(page_id_)); + } + ++void LeafPageDecoder::Reset() { ++ db_reader_ = nullptr; ++ page_id_ = 0; ++ cell_count_ = 0; ++ next_read_index_ = 0; ++ last_record_size_ = 0; ++} ++ + bool LeafPageDecoder::TryAdvance() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(CanAdvance()); +diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h +index d76d076..33114b0 100644 +--- a/sql/recover_module/btree.h ++++ b/sql/recover_module/btree.h +@@ -102,7 +102,7 @@ + // + // |db_reader| must have been used to read an inner page of a table B-tree. + // |db_reader| must outlive this instance. +- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept; ++ explicit LeafPageDecoder() noexcept = default; + ~LeafPageDecoder() noexcept = default; + + LeafPageDecoder(const LeafPageDecoder&) = delete; +@@ -150,6 +150,15 @@ + // read as long as CanAdvance() returns true. + bool TryAdvance(); + ++ // Initialize with DatabasePageReader ++ void Initialize(DatabasePageReader* db_reader); ++ ++ // Reset internal DatabasePageReader ++ void Reset(); ++ ++ // True if DatabasePageReader is valid ++ bool IsValid() { return (db_reader_ != nullptr); } ++ + // True if the given reader may point to an inner page in a table B-tree. + // + // The last ReadPage() call on |db_reader| must have succeeded. +@@ -163,14 +172,14 @@ + static int ComputeCellCount(DatabasePageReader* db_reader); + + // The number of the B-tree page this reader is reading. +- const int64_t page_id_; ++ int64_t page_id_; + // Used to read the tree page. + // + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the DatabasePageReader outlives this. +- DatabasePageReader* const db_reader_; ++ DatabasePageReader* db_reader_; + // Caches the ComputeCellCount() value for this reader's page. +- const int cell_count_ = ComputeCellCount(db_reader_); ++ int cell_count_; + + // The reader's cursor state. + // +diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc +index 0029ff9..42548bc 100644 +--- a/sql/recover_module/cursor.cc ++++ b/sql/recover_module/cursor.cc +@@ -26,7 +26,7 @@ + int VirtualCursor::First() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + inner_decoders_.clear(); +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + + AppendPageDecoder(table_->root_page_id()); + return Next(); +@@ -36,18 +36,18 @@ + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + record_reader_.Reset(); + +- while (!inner_decoders_.empty() || leaf_decoder_.get()) { +- if (leaf_decoder_.get()) { +- if (!leaf_decoder_->CanAdvance()) { ++ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) { ++ if (leaf_decoder_.IsValid()) { ++ if (!leaf_decoder_.CanAdvance()) { + // The leaf has been exhausted. Remove it from the DFS stack. +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + continue; + } +- if (!leaf_decoder_->TryAdvance()) ++ if (!leaf_decoder_.TryAdvance()) + continue; + +- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(), +- leaf_decoder_->last_record_offset())) { ++ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(), ++ leaf_decoder_.last_record_offset())) { + continue; + } + if (!record_reader_.Initialize()) +@@ -99,13 +99,13 @@ + int64_t VirtualCursor::RowId() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(record_reader_.IsInitialized()); +- DCHECK(leaf_decoder_.get()); +- return leaf_decoder_->last_record_rowid(); ++ DCHECK(leaf_decoder_.IsValid()); ++ return leaf_decoder_.last_record_rowid(); + } + + void VirtualCursor::AppendPageDecoder(int page_id) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- DCHECK(leaf_decoder_.get() == nullptr) ++ DCHECK(!leaf_decoder_.IsValid()) + << __func__ + << " must only be called when the current path has no leaf decoder"; + +@@ -113,7 +113,7 @@ + return; + + if (LeafPageDecoder::IsOnValidPage(&db_reader_)) { +- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_); ++ leaf_decoder_.Initialize(&db_reader_); + return; + } + +diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h +index afcd690..b15c31d 100644 +--- a/sql/recover_module/cursor.h ++++ b/sql/recover_module/cursor.h +@@ -129,7 +129,7 @@ + std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_; + + // Decodes the leaf page containing records. +- std::unique_ptr<LeafPageDecoder> leaf_decoder_; ++ LeafPageDecoder leaf_decoder_; + + SEQUENCE_CHECKER(sequence_checker_); + }; +diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc +index 58e75de..5fe9620 100644 +--- a/sql/recover_module/pager.cc ++++ b/sql/recover_module/pager.cc +@@ -23,8 +23,7 @@ + "ints are not appropriate for representing page IDs"); + + DatabasePageReader::DatabasePageReader(VirtualTable* table) +- : page_data_(std::make_unique<uint8_t[]>(table->page_size())), +- table_(table) { ++ : page_data_(), table_(table) { + DCHECK(table != nullptr); + DCHECK(IsValidPageSize(table->page_size())); + } +@@ -57,8 +56,8 @@ + std::numeric_limits<int64_t>::max(), + "The |read_offset| computation above may overflow"); + +- int sqlite_status = +- RawRead(sqlite_file, read_size, read_offset, page_data_.get()); ++ int sqlite_status = RawRead(sqlite_file, read_size, read_offset, ++ const_cast<uint8_t*>(page_data_.data())); + + // |page_id_| needs to be set to kInvalidPageId if the read failed. + // Otherwise, future ReadPage() calls with the previous |page_id_| value +diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h +index 0e388ddc..99314e3 100644 +--- a/sql/recover_module/pager.h ++++ b/sql/recover_module/pager.h +@@ -5,6 +5,7 @@ + #ifndef SQL_RECOVER_MODULE_PAGER_H_ + #define SQL_RECOVER_MODULE_PAGER_H_ + ++#include <array> + #include <cstdint> + #include <memory> + +@@ -70,7 +71,7 @@ + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_NE(page_id_, kInvalidPageId) + << "Successful ReadPage() required before accessing pager state"; +- return page_data_.get(); ++ return page_data_.data(); + } + + // The number of bytes in the page read by the last ReadPage() call. +@@ -137,7 +138,7 @@ + int page_id_ = kInvalidPageId; + // Stores the bytes of the last page successfully read by ReadPage(). + // The content is undefined if the last call to ReadPage() did not succeed. +- const std::unique_ptr<uint8_t[]> page_data_; ++ const std::array<uint8_t, kMaxPageSize> page_data_; + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the VirtualTable outlives this. + VirtualTable* const table_; diff --git a/www-client/chromium/files/chromium-93-tint-include.patch b/www-client/chromium/files/chromium-93-tint-include.patch new file mode 100644 index 0000000..4bfd448 --- /dev/null +++ b/www-client/chromium/files/chromium-93-tint-include.patch @@ -0,0 +1,24 @@ +From 014e1fb4c7d05f853a24bfa4b4188b99ba9f3907 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 4 Jun 2021 21:11:05 +0000 +Subject: [PATCH] IWYU: add cstddef for size_t + +--- + third_party/dawn/third_party/tint/src/sem/block_statement.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/dawn/third_party/tint/src/sem/block_statement.h b/third_party/dawn/third_party/tint/src/sem/block_statement.h +index f8c8113..9cbd64d 100644 +--- a/third_party/dawn/third_party/tint/src/sem/block_statement.h ++++ b/third_party/dawn/third_party/tint/src/sem/block_statement.h +@@ -15,6 +15,7 @@ + #ifndef SRC_SEM_BLOCK_STATEMENT_H_ + #define SRC_SEM_BLOCK_STATEMENT_H_ + ++#include <cstddef> + #include <vector> + + #include "src/sem/statement.h" +-- +2.31.1 + diff --git a/www-client/chromium/files/chromium-93-ui-event-include.patch b/www-client/chromium/files/chromium-93-ui-event-include.patch new file mode 100644 index 0000000..8431b6b --- /dev/null +++ b/www-client/chromium/files/chromium-93-ui-event-include.patch @@ -0,0 +1,13 @@ +diff --git a/ui/events/event_handler.h b/ui/events/event_handler.h +index 3870be355..81ebc0e7f 100644 +--- a/ui/events/event_handler.h ++++ b/ui/events/event_handler.h +@@ -5,6 +5,8 @@ + #ifndef UI_EVENTS_EVENT_HANDLER_H_ + #define UI_EVENTS_EVENT_HANDLER_H_ + ++#include <vector> ++ + #include "base/containers/stack.h" + #include "base/strings/string_piece.h" + #include "ui/events/events_export.h" diff --git a/www-client/chromium/files/chromium-93-url-loader-throttles-include.patch b/www-client/chromium/files/chromium-93-url-loader-throttles-include.patch new file mode 100644 index 0000000..d4be13f --- /dev/null +++ b/www-client/chromium/files/chromium-93-url-loader-throttles-include.patch @@ -0,0 +1,13 @@ +diff --git a/content/public/browser/url_loader_throttles.h b/content/public/browser/url_loader_throttles.h +index 0e67d38f7..aa0290118 100644 +--- a/content/public/browser/url_loader_throttles.h ++++ b/content/public/browser/url_loader_throttles.h +@@ -5,6 +5,8 @@ + #ifndef CONTENT_PUBLIC_BROWSER_URL_LOADER_THROTTLES_H_ + #define CONTENT_PUBLIC_BROWSER_URL_LOADER_THROTTLES_H_ + ++#include <vector> ++ + #include "base/callback.h" + #include "content/common/content_export.h" + diff --git a/www-client/chromium/files/chromium-93-webapp-include.patch b/www-client/chromium/files/chromium-93-webapp-include.patch new file mode 100644 index 0000000..39f6058 --- /dev/null +++ b/www-client/chromium/files/chromium-93-webapp-include.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/web_applications/components/web_app_shortcut_linux.h b/chrome/browser/web_applications/components/web_app_shortcut_linux.h +index 4f1e5b93e..3d28e8b52 100644 +--- a/chrome/browser/web_applications/components/web_app_shortcut_linux.h ++++ b/chrome/browser/web_applications/components/web_app_shortcut_linux.h +@@ -6,6 +6,7 @@ + #define CHROME_BROWSER_WEB_APPLICATIONS_COMPONENTS_WEB_APP_SHORTCUT_LINUX_H_ + + #include <string> ++#include <vector> + + #include "base/callback.h" + diff --git a/www-client/chromium/files/chromium-93-worksp-ext-include.patch b/www-client/chromium/files/chromium-93-worksp-ext-include.patch new file mode 100644 index 0000000..c91b9b2 --- /dev/null +++ b/www-client/chromium/files/chromium-93-worksp-ext-include.patch @@ -0,0 +1,37 @@ +diff --git a/device/bluetooth/bluetooth_low_energy_scan_filter.h b/device/bluetooth/bluetooth_low_energy_scan_filter.h +index 0af0b3108..cfec68cb1 100644 +--- a/device/bluetooth/bluetooth_low_energy_scan_filter.h ++++ b/device/bluetooth/bluetooth_low_energy_scan_filter.h +@@ -7,6 +7,7 @@ + + #include <stddef.h> + #include <stdint.h> ++#include <memory> + #include <vector> + + #include "base/time/time.h" +diff --git a/ui/base/class_property.h b/ui/base/class_property.h +index f7b2f5598..88b49386a 100644 +--- a/ui/base/class_property.h ++++ b/ui/base/class_property.h +@@ -8,6 +8,7 @@ + #include <stdint.h> + + #include <map> ++#include <memory> + #include <set> + #include <type_traits> + +diff --git a/ui/platform_window/extensions/workspace_extension.cc b/ui/platform_window/extensions/workspace_extension.cc +index b4e21e0f2..78b5d6562 100644 +--- a/ui/platform_window/extensions/workspace_extension.cc ++++ b/ui/platform_window/extensions/workspace_extension.cc +@@ -4,6 +4,8 @@ + + #include "ui/platform_window/extensions/workspace_extension.h" + ++#include <memory> ++ + #include "ui/base/class_property.h" + #include "ui/platform_window/platform_window.h" + diff --git a/www-client/chromium/files/chromium-94-ConversionStorageSql-lambda.patch b/www-client/chromium/files/chromium-94-ConversionStorageSql-lambda.patch new file mode 100644 index 0000000..6746fec --- /dev/null +++ b/www-client/chromium/files/chromium-94-ConversionStorageSql-lambda.patch @@ -0,0 +1,31 @@ +From 45bea088d3771c7ff9f77173e451422452c031b3 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Mon, 02 Aug 2021 16:57:05 +0000 +Subject: [PATCH] GCC: drop WARN_USED_RESULT in lambda in ConversionStorageSql + +GCC 9.3 only allows GNU attributes between [] and () in lambda +expressions. See https://gcc.gnu.org/PR90333 for details. However, +clang only allows attributes after () only. Seems not strictly +necessary to enforce the attribute here. + +Bug: 819294 +Change-Id: I342deb25239837dea0f6f5e7709b1467789e342b +--- + +diff --git a/content/browser/conversions/conversion_storage_sql.cc b/content/browser/conversions/conversion_storage_sql.cc +index 84bc897..b6fc4e9 100644 +--- a/content/browser/conversions/conversion_storage_sql.cc ++++ b/content/browser/conversions/conversion_storage_sql.cc +@@ -688,9 +688,11 @@ + bool ConversionStorageSql::DeleteExpiredImpressions() { + const int kMaxDeletesPerBatch = 100; + ++ // GCC accepts attribute between [] and () only ++ // clang accepts attribute after () only + auto delete_impressions_from_paged_select = + [this](sql::Statement& statement) +- VALID_CONTEXT_REQUIRED(sequence_checker_) WARN_UNUSED_RESULT -> bool { ++ VALID_CONTEXT_REQUIRED(sequence_checker_) -> bool { + while (true) { + std::vector<int64_t> impression_ids; + while (statement.Step()) { diff --git a/www-client/chromium/files/chromium-94-CustomSpaces-include.patch b/www-client/chromium/files/chromium-94-CustomSpaces-include.patch new file mode 100644 index 0000000..0175775 --- /dev/null +++ b/www-client/chromium/files/chromium-94-CustomSpaces-include.patch @@ -0,0 +1,24 @@ +From 4eeacdaa57b29a079fe09315eb22557c06aa522e Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 13 Aug 2021 12:57:42 +0000 +Subject: [PATCH] IWYU: add memory for std::unique_ptr in blink::CustomSpaces + +--- + .../blink/renderer/platform/heap/v8_wrapper/custom_spaces.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/custom_spaces.h b/third_party/blink/renderer/platform/heap/v8_wrapper/custom_spaces.h +index df0465a..640cb33 100644 +--- a/third_party/blink/renderer/platform/heap/v8_wrapper/custom_spaces.h ++++ b/third_party/blink/renderer/platform/heap/v8_wrapper/custom_spaces.h +@@ -5,6 +5,7 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_CUSTOM_SPACES_H_ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_CUSTOM_SPACES_H_ + ++#include <memory> + #include <vector> + + #include "third_party/blink/renderer/platform/platform_export.h" +-- +2.31.1 + diff --git a/www-client/chromium/files/chromium-94-compiler.patch b/www-client/chromium/files/chromium-94-compiler.patch new file mode 100644 index 0000000..2b63b3b --- /dev/null +++ b/www-client/chromium/files/chromium-94-compiler.patch @@ -0,0 +1,218 @@ +From f4d0b0eb899005b4b8b6388e1d8bb82cc0018fc8 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Sun, 8 Aug 2021 08:50:00 +0000 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 105 ++++++--------------------------- + 1 file changed, 17 insertions(+), 88 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 0bb155a..e95c023 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -291,8 +291,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -530,31 +528,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- +- # TODO(crbug.com/1235145): Investigate why/if this should be needed. +- if (is_win) { +- cflags += [ "/clang:-ffp-contract=off" ] +- } else { +- cflags += [ "-ffp-contract=off" ] +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1216,45 +1189,6 @@ config("compiler_deterministic") { + } + } + +- # Makes builds independent of absolute file path. +- if (is_clang && strip_absolute_paths_from_debug_symbols) { +- # If debug option is given, clang includes $cwd in debug info by default. +- # For such build, this flag generates reproducible obj files even we use +- # different build directory like "out/feature_a" and "out/feature_b" if +- # we build same files with same compile flag. +- # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { +- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. +- cflags += [ +- "-Xclang", +- "-fdebug-compilation-dir", +- "-Xclang", +- ".", +- ] +- } else { +- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir= +- # and -fcoverage-compilation-dir=. +- cflags += [ "-ffile-compilation-dir=." ] +- } +- if (!is_win) { +- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) +- asmflags = [ "-Wa,-fdebug-compilation-dir,." ] +- } +- +- if (is_win && use_lld) { +- if (symbol_level == 2 || (is_clang && using_sanitizer)) { +- # Absolutize source file paths for PDB. Pass the real build directory +- # if the pdb contains source-level debug information and if linker +- # reproducibility is not critical. +- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ] +- } else { +- # Use a fake fixed base directory for paths in the pdb to make the pdb +- # output fully deterministic and independent of the build directory. +- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ] +- } +- } +- } +- + # Tells the compiler not to use absolute paths when passing the default + # paths to the tools it invokes. We don't want this because we don't + # really need it and it can mess up the goma cache entries. +@@ -1658,7 +1592,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1667,10 +1601,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1679,15 +1609,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2077,7 +1998,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2112,7 +2034,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2152,7 +2075,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2184,7 +2108,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2209,7 +2134,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2328,7 +2254,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2431,7 +2358,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2496,7 +2424,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + +-- +2.31.1 diff --git a/www-client/chromium/files/chromium-94-sql-virtual-cursor.patch b/www-client/chromium/files/chromium-94-sql-virtual-cursor.patch new file mode 100644 index 0000000..47b276d --- /dev/null +++ b/www-client/chromium/files/chromium-94-sql-virtual-cursor.patch @@ -0,0 +1,216 @@ +diff --git a/sql/recover_module/btree.cc b/sql/recover_module/btree.cc +index cc9420e5c..62fcaaf79 100644 +--- a/sql/recover_module/btree.cc ++++ b/sql/recover_module/btree.cc +@@ -136,16 +136,25 @@ static_assert(std::is_trivially_destructible<LeafPageDecoder>::value, + "Move the destructor to the .cc file if it's non-trival"); + #endif // !DCHECK_IS_ON() + +-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept +- : page_id_(db_reader->page_id()), +- db_reader_(db_reader), +- cell_count_(ComputeCellCount(db_reader)), +- next_read_index_(0), +- last_record_size_(0) { ++void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) { ++ DCHECK(db_reader); + DCHECK(IsOnValidPage(db_reader)); ++ page_id_ = db_reader->page_id(); ++ db_reader_ = db_reader; ++ cell_count_ = ComputeCellCount(db_reader); ++ next_read_index_ = 0; ++ last_record_size_ = 0; + DCHECK(DatabasePageReader::IsValidPageId(page_id_)); + } + ++void LeafPageDecoder::Reset() { ++ db_reader_ = nullptr; ++ page_id_ = 0; ++ cell_count_ = 0; ++ next_read_index_ = 0; ++ last_record_size_ = 0; ++} ++ + bool LeafPageDecoder::TryAdvance() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(CanAdvance()); +diff --git a/sql/recover_module/btree.h b/sql/recover_module/btree.h +index eaa087a5c..78ce00e05 100644 +--- a/sql/recover_module/btree.h ++++ b/sql/recover_module/btree.h +@@ -103,7 +103,7 @@ class LeafPageDecoder { + // + // |db_reader| must have been used to read an inner page of a table B-tree. + // |db_reader| must outlive this instance. +- explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept; ++ explicit LeafPageDecoder() noexcept = default; + ~LeafPageDecoder() noexcept = default; + + LeafPageDecoder(const LeafPageDecoder&) = delete; +@@ -151,6 +151,15 @@ class LeafPageDecoder { + // read as long as CanAdvance() returns true. + bool TryAdvance(); + ++ // Initialize with DatabasePageReader ++ void Initialize(DatabasePageReader* db_reader); ++ ++ // Reset internal DatabasePageReader ++ void Reset(); ++ ++ // True if DatabasePageReader is valid ++ bool IsValid() { return (db_reader_ != nullptr); } ++ + // True if the given reader may point to an inner page in a table B-tree. + // + // The last ReadPage() call on |db_reader| must have succeeded. +@@ -164,14 +173,14 @@ class LeafPageDecoder { + static int ComputeCellCount(DatabasePageReader* db_reader); + + // The number of the B-tree page this reader is reading. +- const int64_t page_id_; ++ int64_t page_id_; + // Used to read the tree page. + // + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the DatabasePageReader outlives this. +- DatabasePageReader* const db_reader_; ++ DatabasePageReader* db_reader_; + // Caches the ComputeCellCount() value for this reader's page. +- const int cell_count_ = ComputeCellCount(db_reader_); ++ int cell_count_; + + // The reader's cursor state. + // +diff --git a/sql/recover_module/cursor.cc b/sql/recover_module/cursor.cc +index 4f827edf1..240de4999 100644 +--- a/sql/recover_module/cursor.cc ++++ b/sql/recover_module/cursor.cc +@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() { + int VirtualCursor::First() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + inner_decoders_.clear(); +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + + AppendPageDecoder(table_->root_page_id()); + return Next(); +@@ -38,18 +38,18 @@ int VirtualCursor::Next() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + record_reader_.Reset(); + +- while (!inner_decoders_.empty() || leaf_decoder_.get()) { +- if (leaf_decoder_.get()) { +- if (!leaf_decoder_->CanAdvance()) { ++ while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) { ++ if (leaf_decoder_.IsValid()) { ++ if (!leaf_decoder_.CanAdvance()) { + // The leaf has been exhausted. Remove it from the DFS stack. +- leaf_decoder_ = nullptr; ++ leaf_decoder_.Reset(); + continue; + } +- if (!leaf_decoder_->TryAdvance()) ++ if (!leaf_decoder_.TryAdvance()) + continue; + +- if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(), +- leaf_decoder_->last_record_offset())) { ++ if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(), ++ leaf_decoder_.last_record_offset())) { + continue; + } + if (!record_reader_.Initialize()) +@@ -101,13 +101,13 @@ int VirtualCursor::ReadColumn(int column_index, + int64_t VirtualCursor::RowId() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(record_reader_.IsInitialized()); +- DCHECK(leaf_decoder_.get()); +- return leaf_decoder_->last_record_rowid(); ++ DCHECK(leaf_decoder_.IsValid()); ++ return leaf_decoder_.last_record_rowid(); + } + + void VirtualCursor::AppendPageDecoder(int page_id) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +- DCHECK(leaf_decoder_.get() == nullptr) ++ DCHECK(!leaf_decoder_.IsValid()) + << __func__ + << " must only be called when the current path has no leaf decoder"; + +@@ -115,7 +115,7 @@ void VirtualCursor::AppendPageDecoder(int page_id) { + return; + + if (LeafPageDecoder::IsOnValidPage(&db_reader_)) { +- leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_); ++ leaf_decoder_.Initialize(&db_reader_); + return; + } + +diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h +index afcd6900e..b15c31d42 100644 +--- a/sql/recover_module/cursor.h ++++ b/sql/recover_module/cursor.h +@@ -129,7 +129,7 @@ class VirtualCursor { + std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_; + + // Decodes the leaf page containing records. +- std::unique_ptr<LeafPageDecoder> leaf_decoder_; ++ LeafPageDecoder leaf_decoder_; + + SEQUENCE_CHECKER(sequence_checker_); + }; +diff --git a/sql/recover_module/pager.cc b/sql/recover_module/pager.cc +index 58e75de27..5fe96204e 100644 +--- a/sql/recover_module/pager.cc ++++ b/sql/recover_module/pager.cc +@@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPageId <= std::numeric_limits<int>::max(), + "ints are not appropriate for representing page IDs"); + + DatabasePageReader::DatabasePageReader(VirtualTable* table) +- : page_data_(std::make_unique<uint8_t[]>(table->page_size())), +- table_(table) { ++ : page_data_(), table_(table) { + DCHECK(table != nullptr); + DCHECK(IsValidPageSize(table->page_size())); + } +@@ -57,8 +56,8 @@ int DatabasePageReader::ReadPage(int page_id) { + std::numeric_limits<int64_t>::max(), + "The |read_offset| computation above may overflow"); + +- int sqlite_status = +- RawRead(sqlite_file, read_size, read_offset, page_data_.get()); ++ int sqlite_status = RawRead(sqlite_file, read_size, read_offset, ++ const_cast<uint8_t*>(page_data_.data())); + + // |page_id_| needs to be set to kInvalidPageId if the read failed. + // Otherwise, future ReadPage() calls with the previous |page_id_| value +diff --git a/sql/recover_module/pager.h b/sql/recover_module/pager.h +index 5976d2167..8dcffa3f2 100644 +--- a/sql/recover_module/pager.h ++++ b/sql/recover_module/pager.h +@@ -5,6 +5,7 @@ + #ifndef SQL_RECOVER_MODULE_PAGER_H_ + #define SQL_RECOVER_MODULE_PAGER_H_ + ++#include <array> + #include <cstdint> + #include <memory> + #include <ostream> +@@ -71,7 +72,7 @@ class DatabasePageReader { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_NE(page_id_, kInvalidPageId) + << "Successful ReadPage() required before accessing pager state"; +- return page_data_.get(); ++ return page_data_.data(); + } + + // The number of bytes in the page read by the last ReadPage() call. +@@ -138,7 +139,7 @@ class DatabasePageReader { + int page_id_ = kInvalidPageId; + // Stores the bytes of the last page successfully read by ReadPage(). + // The content is undefined if the last call to ReadPage() did not succeed. +- const std::unique_ptr<uint8_t[]> page_data_; ++ const std::array<uint8_t, kMaxPageSize> page_data_; + // Raw pointer usage is acceptable because this instance's owner is expected + // to ensure that the VirtualTable outlives this. + VirtualTable* const table_; diff --git a/www-client/chromium/files/chromium-94-translate.patch b/www-client/chromium/files/chromium-94-translate.patch new file mode 100644 index 0000000..507e7c9 --- /dev/null +++ b/www-client/chromium/files/chromium-94-translate.patch @@ -0,0 +1,98 @@ +From 7cfc45880ce2b181c318fff2a336f655e294644f Mon Sep 17 00:00:00 2001 +From: mcrouse <mcrouse@google.com> +Date: Fri, 20 Aug 2021 17:58:16 -0700 +Subject: [PATCH] [Translate] Fix migration of deprecated pref. + +This migrates old prefs to use a default time rather than a value. + +Bug: 1241228 +Change-Id: I07efec68aa0c06b0bbb13b51657a1c60b2bfcf7e +--- + +diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc +index f599ec6..375f805 100644 +--- a/components/translate/core/browser/translate_prefs.cc ++++ b/components/translate/core/browser/translate_prefs.cc +@@ -944,8 +944,7 @@ + // Migration should only be necessary once but there could still be old + // Chrome instances that sync the old preference, so do it once per + // startup. +- static bool migrated = false; +- if (migrated) ++ if (migrated_) + return; + DictionaryPrefUpdate never_prompt_list_update(prefs_, + kPrefNeverPromptSitesWithTime); +@@ -954,11 +953,16 @@ + const base::Value* list = prefs_->GetList(kPrefNeverPromptSitesDeprecated); + for (auto& site : list->GetList()) { + if (!never_prompt_list->FindKey(site.GetString())) { +- never_prompt_list->SetKey(site.GetString(), base::Value(0)); ++ never_prompt_list->SetKey(site.GetString(), ++ base::TimeToValue(base::Time::Now())); + } + } + } +- migrated = true; ++ migrated_ = true; ++} ++ ++void TranslatePrefs::ResetMigrationForTesting() { ++ migrated_ = false; + } + + bool TranslatePrefs::IsValueOnNeverPromptList(const char* pref_id, +diff --git a/components/translate/core/browser/translate_prefs.h b/components/translate/core/browser/translate_prefs.h +index b822bed..6d58fd7 100644 +--- a/components/translate/core/browser/translate_prefs.h ++++ b/components/translate/core/browser/translate_prefs.h +@@ -339,6 +339,9 @@ + + static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); + ++ // Reset |migrated_| to enable testing of pref migrations. ++ void ResetMigrationForTesting(); ++ + private: + FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, + UpdateLanguageListFeatureEnabled); +@@ -356,6 +359,7 @@ + FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, MoveLanguageUp); + FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, MoveLanguageDown); + FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, ResetBlockedLanguagesToDefault); ++ FRIEND_TEST_ALL_PREFIXES(TranslatePrefsTest, MigrateNeverPromptSites); + friend class TranslatePrefsTest; + + void ClearNeverPromptSiteList(); +@@ -385,6 +389,9 @@ + + std::unique_ptr<language::LanguagePrefs> language_prefs_; + ++ // Whether any deprecated prefs have been successfully migrated. ++ bool migrated_ = false; ++ + DISALLOW_COPY_AND_ASSIGN(TranslatePrefs); + }; + +diff --git a/components/translate/core/browser/translate_prefs_unittest.cc b/components/translate/core/browser/translate_prefs_unittest.cc +index 601b834..3feb232c 100644 +--- a/components/translate/core/browser/translate_prefs_unittest.cc ++++ b/components/translate/core/browser/translate_prefs_unittest.cc +@@ -931,6 +931,17 @@ + accept_languages_tester_->ExpectAcceptLanguagePrefs("en,it,es,zh,fr"); + } + ++TEST_F(TranslatePrefsTest, MigrateNeverPromptSites) { ++ translate_prefs_->AddValueToNeverPromptList( ++ TranslatePrefs::kPrefNeverPromptSitesDeprecated, "unmigrated.com"); ++ translate_prefs_->ResetMigrationForTesting(); ++ translate_prefs_->MigrateNeverPromptSites(); ++ EXPECT_EQ( ++ std::vector<std::string>({"unmigrated.com"}), ++ translate_prefs_->GetNeverPromptSitesBetween( ++ base::Time::Now() - base::TimeDelta::FromDays(1), base::Time::Max())); ++} ++ + TEST_F(TranslatePrefsTest, SiteNeverPromptList) { + translate_prefs_->AddSiteToNeverPromptList("a.com"); + base::Time t = base::Time::Now(); diff --git a/www-client/chromium/files/chromium-95-hash_traits-include.patch b/www-client/chromium/files/chromium-95-hash_traits-include.patch new file mode 100644 index 0000000..62e559d --- /dev/null +++ b/www-client/chromium/files/chromium-95-hash_traits-include.patch @@ -0,0 +1,30 @@ +From 45441a733187d7462f30b433a663ef7403990d87 Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 3 Sep 2021 16:19:32 +0000 +Subject: [PATCH] IWYU: add string.h for memset in hash_traits + +--- + third_party/blink/renderer/platform/wtf/hash_traits.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/third_party/blink/renderer/platform/wtf/hash_traits.h b/third_party/blink/renderer/platform/wtf/hash_traits.h +index ca5ed2a..67d1724 100644 +--- a/third_party/blink/renderer/platform/wtf/hash_traits.h ++++ b/third_party/blink/renderer/platform/wtf/hash_traits.h +@@ -22,10 +22,13 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_HASH_TRAITS_H_ + #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_HASH_TRAITS_H_ + ++#include <string.h> ++ + #include <limits> + #include <memory> + #include <type_traits> + #include <utility> ++ + #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" + #include "third_party/blink/renderer/platform/wtf/forward.h" + #include "third_party/blink/renderer/platform/wtf/hash_functions.h" +-- +2.32.0 + diff --git a/www-client/chromium/files/chromium-95-libyuv-aarch64.patch b/www-client/chromium/files/chromium-95-libyuv-aarch64.patch new file mode 100644 index 0000000..8efbaff --- /dev/null +++ b/www-client/chromium/files/chromium-95-libyuv-aarch64.patch @@ -0,0 +1,31 @@ +diff --git a/third_party/libyuv/source/row_neon64.cc b/third_party/libyuv/source/row_neon64.cc +index 350c964..2aab413 100644 +--- a/third_party/libyuv/source/row_neon64.cc ++++ b/third_party/libyuv/source/row_neon64.cc +@@ -1835,7 +1835,7 @@ void ARGBToAB64Row_NEON(const uint8_t* src_argb, + : "+r"(src_argb), // %0 + "+r"(dst_ab64), // %1 + "+r"(width) // %2 +- : "m"(kShuffleARGBToABGR) // %3 ++ : "Q"(kShuffleARGBToABGR) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + +@@ -1859,7 +1859,7 @@ void AR64ToARGBRow_NEON(const uint16_t* src_ar64, + : "+r"(src_ar64), // %0 + "+r"(dst_argb), // %1 + "+r"(width) // %2 +- : "m"(kShuffleAR64ToARGB) // %3 ++ : "Q"(kShuffleAR64ToARGB) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + +@@ -1883,7 +1883,7 @@ void AB64ToARGBRow_NEON(const uint16_t* src_ab64, + : "+r"(src_ab64), // %0 + "+r"(dst_argb), // %1 + "+r"(width) // %2 +- : "m"(kShuffleAB64ToARGB) // %3 ++ : "Q"(kShuffleAB64ToARGB) // %3 + : "cc", "memory", "v0", "v1", "v2", "v3", "v4"); + } + diff --git a/www-client/chromium/files/chromium-95-text_fragments_utils-include.patch b/www-client/chromium/files/chromium-95-text_fragments_utils-include.patch new file mode 100644 index 0000000..e2d6160 --- /dev/null +++ b/www-client/chromium/files/chromium-95-text_fragments_utils-include.patch @@ -0,0 +1,37 @@ +From f48b39ee129132337b93e905c8f304c65766742a Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Tue, 31 Aug 2021 12:22:35 +0000 +Subject: [PATCH] IWYU: add string.h for strlen in text_fragments_utils + +Remove namespace std from strlen to avoid including cstring as well. +--- + .../shared_highlighting/core/common/text_fragments_utils.cc | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/components/shared_highlighting/core/common/text_fragments_utils.cc b/components/shared_highlighting/core/common/text_fragments_utils.cc +index 9f39ce6..389c09c 100644 +--- a/components/shared_highlighting/core/common/text_fragments_utils.cc ++++ b/components/shared_highlighting/core/common/text_fragments_utils.cc +@@ -4,6 +4,8 @@ + + #include "components/shared_highlighting/core/common/text_fragments_utils.h" + ++#include <string.h> ++ + #include <sstream> + + #include "base/json/json_writer.h" +@@ -54,8 +56,8 @@ bool SplitUrlTextFragmentDirective(const std::string& full_url, + + // We only want to keep what's after the delimiter. + *highlight_directive = +- full_url.substr(pos + std::strlen(kFragmentsUrlDelimiter) + +- std::strlen(kFragmentParameterName)); ++ full_url.substr(pos + strlen(kFragmentsUrlDelimiter) + ++ strlen(kFragmentParameterName)); + return true; + } + +-- +2.31.1 + diff --git a/www-client/chromium/files/chromium-96-AppliedTextDecoration-include.patch b/www-client/chromium/files/chromium-96-AppliedTextDecoration-include.patch new file mode 100644 index 0000000..26b7d0b --- /dev/null +++ b/www-client/chromium/files/chromium-96-AppliedTextDecoration-include.patch @@ -0,0 +1,25 @@ +From 7387c3ccedb190a8d971762b89e1a75c2289537d Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Sat, 25 Sep 2021 20:52:05 +0000 +Subject: [PATCH] IWYU: add memory for std::unique_ptr in AppliedTextDecoration + +--- + third_party/blink/renderer/core/style/applied_text_decoration.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/third_party/blink/renderer/core/style/applied_text_decoration.h b/third_party/blink/renderer/core/style/applied_text_decoration.h +index b79dc4d..cc050ff 100644 +--- a/third_party/blink/renderer/core/style/applied_text_decoration.h ++++ b/third_party/blink/renderer/core/style/applied_text_decoration.h +@@ -5,6 +5,8 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_APPLIED_TEXT_DECORATION_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_APPLIED_TEXT_DECORATION_H_ + ++#include <memory> ++ + #include "third_party/blink/renderer/core/style/computed_style_constants.h" + #include "third_party/blink/renderer/core/style/text_decoration_thickness.h" + #include "third_party/blink/renderer/platform/geometry/length.h" +-- +2.32.0 + diff --git a/www-client/chromium/files/chromium-96-EnumTable-crash.patch b/www-client/chromium/files/chromium-96-EnumTable-crash.patch new file mode 100644 index 0000000..9736739 --- /dev/null +++ b/www-client/chromium/files/chromium-96-EnumTable-crash.patch @@ -0,0 +1,76 @@ +diff --git a/components/cast_channel/enum_table.h b/components/cast_channel/enum_table.h +index aad9e08..2f3fcad 100644 +--- a/components/cast_channel/enum_table.h ++++ b/components/cast_channel/enum_table.h +@@ -8,6 +8,7 @@ + #include <cstdint> + #include <cstring> + #include <ostream> ++#include <vector> + + #include "base/check_op.h" + #include "base/macros.h" +@@ -188,7 +189,6 @@ class + inline constexpr GenericEnumTableEntry(int32_t value); + inline constexpr GenericEnumTableEntry(int32_t value, base::StringPiece str); + +- GenericEnumTableEntry(const GenericEnumTableEntry&) = delete; + GenericEnumTableEntry& operator=(const GenericEnumTableEntry&) = delete; + + private: +@@ -254,7 +254,6 @@ class EnumTable { + constexpr Entry(E value, base::StringPiece str) + : GenericEnumTableEntry(static_cast<int32_t>(value), str) {} + +- Entry(const Entry&) = delete; + Entry& operator=(const Entry&) = delete; + }; + +@@ -313,15 +312,14 @@ class EnumTable { + if (is_sorted_) { + const std::size_t index = static_cast<std::size_t>(value); + if (ANALYZER_ASSUME_TRUE(index < data_.size())) { +- const auto& entry = data_.begin()[index]; ++ const auto& entry = data_[index]; + if (ANALYZER_ASSUME_TRUE(entry.has_str())) + return entry.str(); + } + return absl::nullopt; + } + return GenericEnumTableEntry::FindByValue( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), static_cast<int32_t>(value)); ++ &data_[0], data_.size(), static_cast<int32_t>(value)); + } + + // This overload of GetString is designed for cases where the argument is a +@@ -349,8 +347,7 @@ class EnumTable { + // enum value directly. + absl::optional<E> GetEnum(base::StringPiece str) const { + auto* entry = GenericEnumTableEntry::FindByString( +- reinterpret_cast<const GenericEnumTableEntry*>(data_.begin()), +- data_.size(), str); ++ &data_[0], data_.size(), str); + return entry ? static_cast<E>(entry->value) : absl::optional<E>(); + } + +@@ -365,7 +362,7 @@ class EnumTable { + // Align the data on a cache line boundary. + alignas(64) + #endif +- std::initializer_list<Entry> data_; ++ const std::vector<Entry> data_; + bool is_sorted_; + + constexpr EnumTable(std::initializer_list<Entry> data, bool is_sorted) +@@ -377,8 +374,8 @@ class EnumTable { + + for (std::size_t i = 0; i < data.size(); i++) { + for (std::size_t j = i + 1; j < data.size(); j++) { +- const Entry& ei = data.begin()[i]; +- const Entry& ej = data.begin()[j]; ++ const Entry& ei = data[i]; ++ const Entry& ej = data[j]; + DCHECK(ei.value != ej.value) + << "Found duplicate enum values at indices " << i << " and " << j; + DCHECK(!(ei.has_str() && ej.has_str() && ei.str() == ej.str())) diff --git a/www-client/chromium/files/chromium-96-ax_platform-list-init.patch b/www-client/chromium/files/chromium-96-ax_platform-list-init.patch new file mode 100644 index 0000000..49adba4 --- /dev/null +++ b/www-client/chromium/files/chromium-96-ax_platform-list-init.patch @@ -0,0 +1,15 @@ +diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc +index aff693dea..834c328d1 100644 +--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc ++++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc +@@ -5136,8 +5136,8 @@ std::pair<int, int> AXPlatformNodeAuraLinux::GetSelectionOffsetsForAtk() { + std::vector<ax::mojom::Action> AXPlatformNodeAuraLinux::GetSupportedActions() + const { + static const base::NoDestructor<std::vector<ax::mojom::Action>> +- kActionsThatCanBeExposedViaAtkAction( +- {ax::mojom::Action::kDecrement, ax::mojom::Action::kIncrement}); ++ kActionsThatCanBeExposedViaAtkAction{ ++ {ax::mojom::Action::kDecrement, ax::mojom::Action::kIncrement}}; + + // The default action is always included and exposed at the first index. + std::vector<ax::mojom::Action> supported_actions = { diff --git a/www-client/chromium/files/chromium-96-compiler.patch b/www-client/chromium/files/chromium-96-compiler.patch new file mode 100644 index 0000000..9b4b408 --- /dev/null +++ b/www-client/chromium/files/chromium-96-compiler.patch @@ -0,0 +1,200 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 67b7097dd..f21f7435a 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -292,8 +292,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -532,24 +530,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- cflags += [ +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- if (!is_debug && use_thin_lto && is_a_target_toolchain) { +- if (is_win) { +- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ] +- } else { +- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ] +- } +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1240,45 +1220,6 @@ config("compiler_deterministic") { + } + } + +- # Makes builds independent of absolute file path. +- if (is_clang && strip_absolute_paths_from_debug_symbols) { +- # If debug option is given, clang includes $cwd in debug info by default. +- # For such build, this flag generates reproducible obj files even we use +- # different build directory like "out/feature_a" and "out/feature_b" if +- # we build same files with same compile flag. +- # Other paths are already given in relative, no need to normalize them. +- if (is_nacl) { +- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here. +- cflags += [ +- "-Xclang", +- "-fdebug-compilation-dir", +- "-Xclang", +- ".", +- ] +- } else { +- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir= +- # and -fcoverage-compilation-dir=. +- cflags += [ "-ffile-compilation-dir=." ] +- } +- if (!is_win) { +- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) +- asmflags = [ "-Wa,-fdebug-compilation-dir,." ] +- } +- +- if (is_win && use_lld) { +- if (symbol_level == 2 || (is_clang && using_sanitizer)) { +- # Absolutize source file paths for PDB. Pass the real build directory +- # if the pdb contains source-level debug information and if linker +- # reproducibility is not critical. +- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ] +- } else { +- # Use a fake fixed base directory for paths in the pdb to make the pdb +- # output fully deterministic and independent of the build directory. +- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ] +- } +- } +- } +- + # Tells the compiler not to use absolute paths when passing the default + # paths to the tools it invokes. We don't want this because we don't + # really need it and it can mess up the goma cache entries. +@@ -1558,7 +1499,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1567,10 +1508,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1579,15 +1516,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1955,7 +1883,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -1995,7 +1924,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2035,7 +1965,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2068,7 +1999,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2094,7 +2026,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + rustflags = [ "-Copt-level=1" ] + ldflags = common_optimize_on_ldflags +@@ -2214,7 +2147,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2328,7 +2262,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2400,7 +2335,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-96-coupondb-include.patch b/www-client/chromium/files/chromium-96-coupondb-include.patch new file mode 100644 index 0000000..d0938d2 --- /dev/null +++ b/www-client/chromium/files/chromium-96-coupondb-include.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h +index f0758f43d..93e2dd3b5 100644 +--- a/chrome/browser/commerce/coupons/coupon_db.h ++++ b/chrome/browser/commerce/coupons/coupon_db.h +@@ -5,6 +5,8 @@ + #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_ + #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_ + ++#include <vector> ++ + #include "base/callback_helpers.h" + #include "base/memory/weak_ptr.h" + #include "url/gurl.h" diff --git a/www-client/chromium/files/chromium-96-template-friend.patch b/www-client/chromium/files/chromium-96-template-friend.patch new file mode 100644 index 0000000..4b8a5e4 --- /dev/null +++ b/www-client/chromium/files/chromium-96-template-friend.patch @@ -0,0 +1,34 @@ +diff --git a/base/memory/safe_ref.h b/base/memory/safe_ref.h +index 7189f8786..162c6744f 100644 +--- a/base/memory/safe_ref.h ++++ b/base/memory/safe_ref.h +@@ -88,9 +88,10 @@ class SafeRef { + private: + template <typename U> + friend class SafeRef; +- friend SafeRef internal::MakeSafeRefFromWeakPtrInternals( ++ template <typename U> ++ friend SafeRef<U> internal::MakeSafeRefFromWeakPtrInternals( + const internal::WeakReference& ref, +- T* ptr); ++ U* ptr); + + // Construction from a from WeakPtr. Will CHECK() if the WeakPtr is already + // invalid. +diff --git a/base/memory/weak_ptr.h b/base/memory/weak_ptr.h +index 17f7b8f87..d042ecff2 100644 +--- a/base/memory/weak_ptr.h ++++ b/base/memory/weak_ptr.h +@@ -289,9 +289,10 @@ class WeakPtr : public internal::WeakPtrBase { + template <typename U> friend class WeakPtr; + friend class SupportsWeakPtr<T>; + friend class WeakPtrFactory<T>; +- friend SafeRef<T> internal::MakeSafeRefFromWeakPtrInternals( ++ template <typename U> ++ friend SafeRef<U> internal::MakeSafeRefFromWeakPtrInternals( + const internal::WeakReference& ref, +- T* ptr); ++ U* ptr); + + WeakPtr(const internal::WeakReference& ref, T* ptr) + : WeakPtrBase(ref, reinterpret_cast<uintptr_t>(ptr)) {} diff --git a/www-client/chromium/files/chromium-angle-inline.patch b/www-client/chromium/files/chromium-angle-inline.patch new file mode 100644 index 0000000..e8975d7 --- /dev/null +++ b/www-client/chromium/files/chromium-angle-inline.patch @@ -0,0 +1,118 @@ +From 4c0a23611b3906855db7b93da2f34aec57930cdf Mon Sep 17 00:00:00 2001 +From: Geoff Lang <geofflang@chromium.org> +Date: Tue, 25 Jun 2019 10:56:29 -0400 +Subject: [PATCH] Update ValidateSamplerParameterBase to use const parameters. + +ValidateSamplerParameterBase is called with both const and non-const +parameter pointers which caused our explicit template instantiations to +not cover all cases resulting in link errors. Force the parameters to +always be const so that our instantiations cover everything. + +BUG=angleproject:3555 + +Change-Id: Ibf92572ba80a689c75dcdc70e5153d9941da76f3 +Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676305 +Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> +Commit-Queue: Geoff Lang <geofflang@chromium.org> +--- + +diff --git a/third_party/angle/src/libANGLE/validationES.cpp b/third_party/angle/src/libANGLE/validationES.cpp +index 041803a..3f402f6 100644 +--- a/third_party/angle/src/libANGLE/validationES.cpp ++++ b/third_party/angle/src/libANGLE/validationES.cpp +@@ -189,7 +189,9 @@ + } + + template <typename ParamType> +-bool ValidateTextureWrapModeValue(Context *context, ParamType *params, bool restrictedWrapModes) ++bool ValidateTextureWrapModeValue(Context *context, ++ const ParamType *params, ++ bool restrictedWrapModes) + { + switch (ConvertToGLenum(params[0])) + { +@@ -223,7 +225,9 @@ + } + + template <typename ParamType> +-bool ValidateTextureMinFilterValue(Context *context, ParamType *params, bool restrictedMinFilter) ++bool ValidateTextureMinFilterValue(Context *context, ++ const ParamType *params, ++ bool restrictedMinFilter) + { + switch (ConvertToGLenum(params[0])) + { +@@ -252,7 +256,7 @@ + } + + template <typename ParamType> +-bool ValidateTextureMagFilterValue(Context *context, ParamType *params) ++bool ValidateTextureMagFilterValue(Context *context, const ParamType *params) + { + switch (ConvertToGLenum(params[0])) + { +@@ -269,7 +273,7 @@ + } + + template <typename ParamType> +-bool ValidateTextureCompareModeValue(Context *context, ParamType *params) ++bool ValidateTextureCompareModeValue(Context *context, const ParamType *params) + { + // Acceptable mode parameters from GLES 3.0.2 spec, table 3.17 + switch (ConvertToGLenum(params[0])) +@@ -287,7 +291,7 @@ + } + + template <typename ParamType> +-bool ValidateTextureCompareFuncValue(Context *context, ParamType *params) ++bool ValidateTextureCompareFuncValue(Context *context, const ParamType *params) + { + // Acceptable function parameters from GLES 3.0.2 spec, table 3.17 + switch (ConvertToGLenum(params[0])) +@@ -311,7 +315,7 @@ + } + + template <typename ParamType> +-bool ValidateTextureSRGBDecodeValue(Context *context, ParamType *params) ++bool ValidateTextureSRGBDecodeValue(Context *context, const ParamType *params) + { + if (!context->getExtensions().textureSRGBDecode) + { +@@ -5996,7 +6000,7 @@ + GLenum pname, + GLsizei bufSize, + bool vectorParams, +- ParamType *params) ++ const ParamType *params) + { + if (context->getClientMajorVersion() < 3) + { +@@ -6099,8 +6103,13 @@ + return true; + } + +-template bool ValidateSamplerParameterBase(Context *, GLuint, GLenum, GLsizei, bool, GLfloat *); +-template bool ValidateSamplerParameterBase(Context *, GLuint, GLenum, GLsizei, bool, GLint *); ++template bool ValidateSamplerParameterBase(Context *, ++ GLuint, ++ GLenum, ++ GLsizei, ++ bool, ++ const GLfloat *); ++template bool ValidateSamplerParameterBase(Context *, GLuint, GLenum, GLsizei, bool, const GLint *); + template bool ValidateSamplerParameterBase(Context *, + GLuint, + GLenum, +diff --git a/third_party/angle/src/libANGLE/validationES.h b/third_party/angle/src/libANGLE/validationES.h +index c61bda6..4b06d28 100644 +--- a/third_party/angle/src/libANGLE/validationES.h ++++ b/third_party/angle/src/libANGLE/validationES.h +@@ -584,7 +584,7 @@ + GLenum pname, + GLsizei bufSize, + bool vectorParams, +- ParamType *params); ++ const ParamType *params); + + bool ValidateGetInternalFormativBase(Context *context, + GLenum target, diff --git a/www-client/chromium/files/chromium-axobj-ancestoriter-cat-84.patch b/www-client/chromium/files/chromium-axobj-ancestoriter-cat-84.patch new file mode 100644 index 0000000..d554334 --- /dev/null +++ b/www-client/chromium/files/chromium-axobj-ancestoriter-cat-84.patch @@ -0,0 +1,33 @@ +Make blink::AXObject::AncestorsIterator STL compatible. + +Commit 31e5188ffc9a04295997d22bfdb68fc367bef047, "Used some methods from +AXRoleProperties in AXObject" started using std::any_of with this custom +iterator type. Unfortunately this iterator does not provide traits +mandated by the standard. This works fine for libcxx, but fails when +compiling the code against libstdc++. + +Bug: 819294 +Change-Id: I78fe25475593d73ce255f1de955aa41e936dff86 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2207112 +Reviewed-by: Kentaro Hara <haraken@chromium.org> +Commit-Queue: Piotr Tworek <ptworek@vewd.com> +Cr-Commit-Position: refs/heads/master@{#769713} + +diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h +index 841715b..fbb87bf 100644 +--- a/third_party/blink/renderer/modules/accessibility/ax_object.h ++++ b/third_party/blink/renderer/modules/accessibility/ax_object.h +@@ -274,6 +274,12 @@ + class MODULES_EXPORT AncestorsIterator final + : public GarbageCollected<AncestorsIterator> { + public: ++ using iterator_category = std::forward_iterator_tag; ++ using value_type = AXObject; ++ using difference_type = ptrdiff_t; ++ using pointer = value_type*; ++ using reference = value_type&; ++ + ~AncestorsIterator() = default; + + AncestorsIterator(const AncestorsIterator& other) + diff --git a/www-client/chromium/files/chromium-axtree-incomplete-type-83.patch b/www-client/chromium/files/chromium-axtree-incomplete-type-83.patch new file mode 100644 index 0000000..7a8061a --- /dev/null +++ b/www-client/chromium/files/chromium-axtree-incomplete-type-83.patch @@ -0,0 +1,41 @@ +diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc +index e90256109..76fa091e2 100644 +--- a/ui/accessibility/ax_tree.cc ++++ b/ui/accessibility/ax_tree.cc +@@ -567,15 +567,6 @@ struct AXTreeUpdateState { + const AXTree& tree; + }; + +-struct AXTree::NodeSetSizePosInSetInfo { +- NodeSetSizePosInSetInfo() = default; +- ~NodeSetSizePosInSetInfo() = default; +- +- int32_t pos_in_set = 0; +- int32_t set_size = 0; +- base::Optional<int> lowest_hierarchical_level; +-}; +- + struct AXTree::OrderedSetContent { + explicit OrderedSetContent(const AXNode* ordered_set = nullptr) + : ordered_set_(ordered_set) {} +diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h +index a51ca8de4..ef1633212 100644 +--- a/ui/accessibility/ax_tree.h ++++ b/ui/accessibility/ax_tree.h +@@ -328,7 +328,15 @@ class AX_EXPORT AXTree : public AXNode::OwnerTree { + bool enable_extra_mac_nodes_ = false; + + // Contains pos_in_set and set_size data for an AXNode. +- struct NodeSetSizePosInSetInfo; ++ struct NodeSetSizePosInSetInfo { ++ NodeSetSizePosInSetInfo() = default; ++ ~NodeSetSizePosInSetInfo() = default; ++ ++ int32_t pos_in_set = 0; ++ int32_t set_size = 0; ++ base::Optional<int> lowest_hierarchical_level; ++ }; ++ + + // Represents the content of an ordered set which includes the ordered set + // items and the ordered set container if it exists. diff --git a/www-client/chromium/files/chromium-base-include-84-r1.patch b/www-client/chromium/files/chromium-base-include-84-r1.patch new file mode 100644 index 0000000..1a17ed2 --- /dev/null +++ b/www-client/chromium/files/chromium-base-include-84-r1.patch @@ -0,0 +1,24 @@ +diff --git a/base/check_op.h b/base/check_op.h +index 0943d0cc2..c16df8705 100644 +--- a/base/check_op.h ++++ b/base/check_op.h +@@ -6,6 +6,7 @@ + #define BASE_CHECK_OP_H_ + + #include <cstddef> ++#include <cstring> + #include <type_traits> + + #include "base/check.h" +diff --git a/base/debug/elf_reader.cc b/base/debug/elf_reader.cc +index aea4f3b03..1cf7bf50d 100644 +--- a/base/debug/elf_reader.cc ++++ b/base/debug/elf_reader.cc +@@ -4,6 +4,7 @@ + + #include "base/debug/elf_reader.h" + ++#include <string.h> + #include <arpa/inet.h> + #include <elf.h> + diff --git a/www-client/chromium/files/chromium-base-include-84-r2.patch b/www-client/chromium/files/chromium-base-include-84-r2.patch new file mode 100644 index 0000000..9ac745a --- /dev/null +++ b/www-client/chromium/files/chromium-base-include-84-r2.patch @@ -0,0 +1,12 @@ +diff --git a/base/check_op.h b/base/check_op.h +index 4816df4e8..0087dfe40 100644 +--- a/base/check_op.h ++++ b/base/check_op.h +@@ -6,6 +6,7 @@ + #define BASE_CHECK_OP_H_ + + #include <cstddef> ++#include <cstring> + #include <type_traits> + + #include "base/check.h" diff --git a/www-client/chromium/files/chromium-base-include-84.patch b/www-client/chromium/files/chromium-base-include-84.patch new file mode 100644 index 0000000..9c5846b --- /dev/null +++ b/www-client/chromium/files/chromium-base-include-84.patch @@ -0,0 +1,281 @@ +diff --git a/base/big_endian.cc b/base/big_endian.cc +index 9e9e672e4..a706c4a4e 100644 +--- a/base/big_endian.cc ++++ b/base/big_endian.cc +@@ -4,6 +4,8 @@ + + #include "base/big_endian.h" + ++#include <string.h> ++ + #include "base/numerics/checked_math.h" + #include "base/strings/string_piece.h" + +diff --git a/base/check_op.cc b/base/check_op.cc +index 7e0806464..fcdb8df16 100644 +--- a/base/check_op.cc ++++ b/base/check_op.cc +@@ -12,6 +12,7 @@ + #endif + + #include <cstdio> ++#include <cstring> + #include <sstream> + + namespace logging { +diff --git a/base/debug/elf_reader.cc b/base/debug/elf_reader.cc +index aea4f3b03..1cf7bf50d 100644 +--- a/base/debug/elf_reader.cc ++++ b/base/debug/elf_reader.cc +@@ -4,6 +4,7 @@ + + #include "base/debug/elf_reader.h" + ++#include <string.h> + #include <arpa/inet.h> + #include <elf.h> + +diff --git a/base/files/dir_reader_linux.h b/base/files/dir_reader_linux.h +index f12deeb2f..194cd92b0 100644 +--- a/base/files/dir_reader_linux.h ++++ b/base/files/dir_reader_linux.h +@@ -7,6 +7,7 @@ + + #include <errno.h> + #include <fcntl.h> ++#include <string.h> + #include <stddef.h> + #include <stdint.h> + #include <sys/syscall.h> +diff --git a/base/logging.h b/base/logging.h +index 7644ec188..848718612 100644 +--- a/base/logging.h ++++ b/base/logging.h +@@ -6,6 +6,7 @@ + #define BASE_LOGGING_H_ + + #include <stddef.h> ++#include <string.h> + + #include <cassert> + #include <cstdint> +diff --git a/base/metrics/metrics_hashes.cc b/base/metrics/metrics_hashes.cc +index ef7072a4a..9cd2d5a93 100644 +--- a/base/metrics/metrics_hashes.cc ++++ b/base/metrics/metrics_hashes.cc +@@ -4,6 +4,8 @@ + + #include "base/metrics/metrics_hashes.h" + ++#include <string.h> ++ + #include "base/hash/md5.h" + #include "base/logging.h" + #include "base/sys_byteorder.h" +diff --git a/base/process/environment_internal.cc b/base/process/environment_internal.cc +index 357140fa6..44f5c6603 100644 +--- a/base/process/environment_internal.cc ++++ b/base/process/environment_internal.cc +@@ -5,6 +5,7 @@ + #include "base/process/environment_internal.h" + + #include <stddef.h> ++#include <string.h> + + #include <vector> + +diff --git a/base/strings/string16.cc b/base/strings/string16.cc +index 84962e671..b7df7e161 100644 +--- a/base/strings/string16.cc ++++ b/base/strings/string16.cc +@@ -4,6 +4,8 @@ + + #include "base/strings/string16.h" + ++#include <string.h> ++ + #if defined(WCHAR_T_IS_UTF16) && !defined(_AIX) + + #error This file should not be used on 2-byte wchar_t systems +diff --git a/base/strings/string_piece.cc b/base/strings/string_piece.cc +index c789bc2a0..bfaf99db5 100644 +--- a/base/strings/string_piece.cc ++++ b/base/strings/string_piece.cc +@@ -5,6 +5,7 @@ + + #include "base/strings/string_piece.h" + ++#include <string.h> + #include <limits.h> + + #include <algorithm> +diff --git a/base/strings/sys_string_conversions_posix.cc b/base/strings/sys_string_conversions_posix.cc +index ad794cae2..dad27eaa5 100644 +--- a/base/strings/sys_string_conversions_posix.cc ++++ b/base/strings/sys_string_conversions_posix.cc +@@ -4,6 +4,7 @@ + + #include "base/strings/sys_string_conversions.h" + ++#include <string.h> + #include <stddef.h> + #include <wchar.h> + +diff --git a/base/synchronization/lock_impl.h b/base/synchronization/lock_impl.h +index 830b878e8..cdb66fdca 100644 +--- a/base/synchronization/lock_impl.h ++++ b/base/synchronization/lock_impl.h +@@ -16,6 +16,7 @@ + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) + #include <errno.h> + #include <pthread.h> ++#include <string.h> + #endif + + namespace base { +diff --git a/base/trace_event/blame_context.cc b/base/trace_event/blame_context.cc +index e7599efa8..4b82c5526 100644 +--- a/base/trace_event/blame_context.cc ++++ b/base/trace_event/blame_context.cc +@@ -25,7 +25,7 @@ BlameContext::BlameContext(const char* category, + parent_scope_(parent_context ? parent_context->scope() : nullptr), + parent_id_(parent_context ? parent_context->id() : 0), + category_group_enabled_(nullptr) { +- DCHECK(!parent_context || !std::strcmp(name_, parent_context->name())) ++ DCHECK(!parent_context || !strcmp(name_, parent_context->name())) + << "Parent blame context must have the same name"; + } + +diff --git a/components/network_hints/renderer/dns_prefetch_queue.cc b/components/network_hints/renderer/dns_prefetch_queue.cc +index af34d8df0..7905ad49d 100644 +--- a/components/network_hints/renderer/dns_prefetch_queue.cc ++++ b/components/network_hints/renderer/dns_prefetch_queue.cc +@@ -6,8 +6,11 @@ + + #include "components/network_hints/renderer/dns_prefetch_queue.h" + ++#include <cstring> ++ + #include "base/logging.h" + ++ + namespace network_hints { + + DnsQueue::DnsQueue(BufferSize size) +diff --git a/components/omnibox/browser/on_device_head_model.cc b/components/omnibox/browser/on_device_head_model.cc +index 0fa2ff25e..ad5e9386f 100644 +--- a/components/omnibox/browser/on_device_head_model.cc ++++ b/components/omnibox/browser/on_device_head_model.cc +@@ -4,6 +4,7 @@ + + #include "components/omnibox/browser/on_device_head_model.h" + ++#include <cstring> + #include <algorithm> + + #include "base/logging.h" +diff --git a/google_apis/gcm/base/socket_stream.cc b/google_apis/gcm/base/socket_stream.cc +index d9759e767..bc33dca40 100644 +--- a/google_apis/gcm/base/socket_stream.cc ++++ b/google_apis/gcm/base/socket_stream.cc +@@ -177,7 +177,7 @@ void SocketInputStream::RebuildBuffer() { + DVLOG(1) << "Have " << unread_data_size + << " unread bytes remaining, shifting."; + // Move any remaining unread data to the start of the buffer; +- std::memmove(io_buffer_->data(), unread_data_ptr, unread_data_size); ++ memmove(io_buffer_->data(), unread_data_ptr, unread_data_size); + } else { + DVLOG(1) << "Have " << unread_data_size << " unread bytes remaining."; + } +diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.h b/gpu/command_buffer/service/gles2_cmd_decoder.h +index f4c3014d1..7491797e7 100644 +--- a/gpu/command_buffer/service/gles2_cmd_decoder.h ++++ b/gpu/command_buffer/service/gles2_cmd_decoder.h +@@ -9,6 +9,7 @@ + + #include <stdint.h> + ++#include <cstring> + #include <string> + #include <vector> + +diff --git a/gpu/vulkan/vulkan_device_queue.cc b/gpu/vulkan/vulkan_device_queue.cc +index 4d95330b5..a6a130593 100644 +--- a/gpu/vulkan/vulkan_device_queue.cc ++++ b/gpu/vulkan/vulkan_device_queue.cc +@@ -98,7 +98,7 @@ bool VulkanDeviceQueue::Initialize( + std::find_if(physical_device_info.extensions.begin(), + physical_device_info.extensions.end(), + [extension](const VkExtensionProperties& p) { +- return std::strcmp(extension, p.extensionName) == 0; ++ return strcmp(extension, p.extensionName) == 0; + }); + if (it == physical_device_info.extensions.end()) { + // On Fuchsia, some device extensions are provided by layers. +@@ -118,7 +118,7 @@ bool VulkanDeviceQueue::Initialize( + std::find_if(physical_device_info.extensions.begin(), + physical_device_info.extensions.end(), + [extension](const VkExtensionProperties& p) { +- return std::strcmp(extension, p.extensionName) == 0; ++ return strcmp(extension, p.extensionName) == 0; + }); + if (it == physical_device_info.extensions.end()) { + DLOG(ERROR) << "Optional Vulkan extension " << extension +@@ -255,4 +255,4 @@ std::unique_ptr<VulkanCommandPool> VulkanDeviceQueue::CreateCommandPool() { + return command_pool; + } + +-} // namespace gpu +\ No newline at end of file ++} // namespace gpu +diff --git a/jingle/glue/fake_ssl_client_socket.cc b/jingle/glue/fake_ssl_client_socket.cc +index 54691d935..c61c6c8a1 100644 +--- a/jingle/glue/fake_ssl_client_socket.cc ++++ b/jingle/glue/fake_ssl_client_socket.cc +@@ -7,6 +7,7 @@ + #include <stddef.h> + #include <stdint.h> + #include <cstdlib> ++#include <cstring> + #include <utility> + + #include "base/bind.h" +diff --git a/net/base/datagram_buffer.cc b/net/base/datagram_buffer.cc +index 922d8486e..b7f737405 100644 +--- a/net/base/datagram_buffer.cc ++++ b/net/base/datagram_buffer.cc +@@ -42,7 +42,7 @@ DatagramBuffer::~DatagramBuffer() {} + + void DatagramBuffer::Set(const char* buffer, size_t buf_len) { + length_ = buf_len; +- std::memcpy(data_.get(), buffer, buf_len); ++ memcpy(data_.get(), buffer, buf_len); + } + + char* DatagramBuffer::data() const { +diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_header_parser.cc +index 3701d15bf..fc144ed63 100644 +--- a/net/reporting/reporting_header_parser.cc ++++ b/net/reporting/reporting_header_parser.cc +@@ -81,7 +81,7 @@ HeaderEndpointOutcome ProcessEndpoint( + + GURL endpoint_url; + // Support path-absolute-URL string +- if (std::strspn(endpoint_url_string.c_str(), "/") == 1) { ++ if (strspn(endpoint_url_string.c_str(), "/") == 1) { + endpoint_url = group_key.origin.GetURL().Resolve(endpoint_url_string); + } else { + endpoint_url = GURL(endpoint_url_string); +diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +index fbfdfedff..3b9fd967e 100644 +--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc ++++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +@@ -891,7 +891,7 @@ void NGInlineNode::SegmentText(NGInlineNodeData* data) { + + // Segment NGInlineItem by script, Emoji, and orientation using RunSegmenter. + void NGInlineNode::SegmentScriptRuns(NGInlineNodeData* data) { +- DCHECK_EQ(data->segments, nullptr); ++ DCHECK_EQ(data->segments.get(), nullptr); + + String& text_content = data->text_content; + if (text_content.IsEmpty()) { diff --git a/www-client/chromium/files/chromium-blink-include-bitset-84.patch b/www-client/chromium/files/chromium-blink-include-bitset-84.patch new file mode 100644 index 0000000..95ed89c --- /dev/null +++ b/www-client/chromium/files/chromium-blink-include-bitset-84.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/common/input/web_touch_event.cc b/third_party/blink/common/input/web_touch_event.cc +index 7ef37fec6..b77be3bac 100644 +--- a/third_party/blink/common/input/web_touch_event.cc ++++ b/third_party/blink/common/input/web_touch_event.cc +@@ -4,6 +4,8 @@ + + #include "third_party/blink/public/common/input/web_touch_event.h" + ++#include <bitset> ++ + namespace blink { + + namespace { diff --git a/www-client/chromium/files/chromium-blink-include-limits-84.patch b/www-client/chromium/files/chromium-blink-include-limits-84.patch new file mode 100644 index 0000000..4c6b972 --- /dev/null +++ b/www-client/chromium/files/chromium-blink-include-limits-84.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc +index 86486ca89..a92d89cf2 100644 +--- a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc ++++ b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc +@@ -4,6 +4,8 @@ + + #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h" + ++#include <limits> ++ + namespace blink { + + UniqueObjectId NewUniqueObjectId() { diff --git a/www-client/chromium/files/chromium-blink-include-memory-83.patch b/www-client/chromium/files/chromium-blink-include-memory-83.patch new file mode 100644 index 0000000..b9a6929 --- /dev/null +++ b/www-client/chromium/files/chromium-blink-include-memory-83.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h +index f5a7ab038..ef19cfaf6 100644 +--- a/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h ++++ b/third_party/blink/renderer/core/html/trust_token_attribute_parsing.h +@@ -5,6 +5,8 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRUST_TOKEN_ATTRIBUTE_PARSING_H_ + ++#include <memory> ++ + #include "base/optional.h" + #include "services/network/public/mojom/trust_tokens.mojom-blink-forward.h" + #include "third_party/blink/renderer/core/core_export.h" diff --git a/www-client/chromium/files/chromium-blink-template.patch b/www-client/chromium/files/chromium-blink-template.patch new file mode 100644 index 0000000..edaf74b --- /dev/null +++ b/www-client/chromium/files/chromium-blink-template.patch @@ -0,0 +1,15 @@ +diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +index d9fa696c9..028f9f270 100644 +--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc ++++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +@@ -1773,8 +1773,9 @@ void BaseRenderingContext2D::putImageData(ImageData* data, + data_length *= context_color_params.BytesPerPixel(); + if (!data_length.IsValid()) + return; ++ size_t dl=data_length.ValueOrDie(); + std::unique_ptr<uint8_t[]> converted_pixels( +- new uint8_t[data_length.ValueOrDie()]); ++ new uint8_t[dl]); + if (data->ImageDataInCanvasColorSettings( + ColorParams().ColorSpace(), PixelFormat(), converted_pixels.get(), + kRGBAColorType)) { diff --git a/www-client/chromium/files/chromium-bluetooth-tuple-84.patch b/www-client/chromium/files/chromium-bluetooth-tuple-84.patch new file mode 100644 index 0000000..b01978c --- /dev/null +++ b/www-client/chromium/files/chromium-bluetooth-tuple-84.patch @@ -0,0 +1,51 @@ +From ded9cf966b7a9b1986bd420866f7cec74e3c2eff Mon Sep 17 00:00:00 2001 +From: David Lechner <david@pybricks.com> +Date: Tue, 09 Jun 2020 11:15:09 -0500 +Subject: [PATCH] [bluetooth] fix compile error in dbus fake bluetooth device client + +This fixes a compile error that was accidentally introduced in +https://crrev.com/2191232. For unknown reasons this does not cause a +compile error with libc++, which is normally used with chromium, but +does cause an error with stdlibc++. + +The API for preparing write requests was not changed in +https://crrev.com/2191232, so the change that introduced this error +was incorrect anyway. This reverts the change that introduced the +error and adds the kTypeRequest argument to the call to WriteValue() +since that was the API that was actually changed in the prior CL. + +Bug: 1092470 +Change-Id: I6f6fe90ab42aea3db8cac95b69aee5095ea33b31 +--- + +diff --git a/device/bluetooth/dbus/fake_bluetooth_device_client.cc b/device/bluetooth/dbus/fake_bluetooth_device_client.cc +index f7136af..23c5fe3 100644 +--- a/device/bluetooth/dbus/fake_bluetooth_device_client.cc ++++ b/device/bluetooth/dbus/fake_bluetooth_device_client.cc +@@ -649,10 +649,9 @@ + for (const auto& prepare_write_request : prepare_write_requests_) { + bluez::BluezDBusManager::Get() + ->GetBluetoothGattCharacteristicClient() +- ->WriteValue(std::get<0>(prepare_write_request), +- std::get<1>(prepare_write_request), +- std::get<2>(prepare_write_request), base::DoNothing(), +- base::DoNothing()); ++ ->WriteValue(prepare_write_request.first, prepare_write_request.second, ++ bluetooth_gatt_characteristic::kTypeRequest, ++ base::DoNothing(), base::DoNothing()); + } + prepare_write_requests_.clear(); + std::move(callback).Run(); +diff --git a/device/bluetooth/dbus/fake_bluetooth_device_client.h b/device/bluetooth/dbus/fake_bluetooth_device_client.h +index b46715b5..98a9676 100644 +--- a/device/bluetooth/dbus/fake_bluetooth_device_client.h ++++ b/device/bluetooth/dbus/fake_bluetooth_device_client.h +@@ -384,7 +384,7 @@ + bool delay_start_discovery_; + + // Pending prepare write requests. +- std::vector<std::tuple<dbus::ObjectPath, std::vector<uint8_t>, std::string>> ++ std::vector<std::pair<dbus::ObjectPath, std::vector<uint8_t>>> + prepare_write_requests_; + + bool should_leave_connections_pending_; diff --git a/www-client/chromium/files/chromium-browser.xml b/www-client/chromium/files/chromium-browser.xml new file mode 100644 index 0000000..2c95a55 --- /dev/null +++ b/www-client/chromium/files/chromium-browser.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE default-apps SYSTEM "gnome-da-list.dtd"> +<default-apps> + <web-browsers> + <web-browser> + <name>Chromium</name> + <executable>chromium-browser</executable> + <command>chromium-browser %s</command> + <icon-name>chromium-browser</icon-name> + <run-in-terminal>false</run-in-terminal> + </web-browser> + </web-browsers> +</default-apps> diff --git a/www-client/chromium/files/chromium-build-gn-83.patch b/www-client/chromium/files/chromium-build-gn-83.patch new file mode 100644 index 0000000..e70ced6 --- /dev/null +++ b/www-client/chromium/files/chromium-build-gn-83.patch @@ -0,0 +1,36 @@ +diff --git a/BUILD.gn b/BUILD.gn +index 4c1f89045..2bfac42ed 100644 +--- a/BUILD.gn ++++ b/BUILD.gn +@@ -1375,17 +1375,17 @@ if (closure_compile) { + # Because of the source assignment filter, many targets end up over-filtering + # their sources if the output directory contains a platform name. Assert that + # this doesn't happen. http://crbug.com/548283 +-assert( +- filter_exclude([ "$root_build_dir/foo" ], +- # List copied from //build/config/BUILDCONFIG.gn. +- [ +- "*\bandroid/*", +- "*\bchromeos/*", +- "*\bcocoa/*", +- "*\bios/*", +- "*\blinux/*", +- "*\bmac/*", +- "*\bposix/*", +- "*\bwin/*", +- ]) != [], +- "Do not use a platform name in your output directory (found \"$root_build_dir\"). http://crbug.com/548283") ++#assert( ++# filter_exclude([ "$root_build_dir/foo" ], ++# # List copied from //build/config/BUILDCONFIG.gn. ++# [ ++# "*\bandroid/*", ++# "*\bchromeos/*", ++# "*\bcocoa/*", ++# "*\bios/*", ++# "*\blinux/*", ++# "*\bmac/*", ++# "*\bposix/*", ++# "*\bwin/*", ++# ]) != [], ++# "Do not use a platform name in your output directory (found \"$root_build_dir\"). http://crbug.com/548283") diff --git a/www-client/chromium/files/chromium-cc-matrics-include-84.patch b/www-client/chromium/files/chromium-cc-matrics-include-84.patch new file mode 100644 index 0000000..b1fa0c7 --- /dev/null +++ b/www-client/chromium/files/chromium-cc-matrics-include-84.patch @@ -0,0 +1,12 @@ +diff --git a/cc/metrics/lcd_text_metrics_reporter.h b/cc/metrics/lcd_text_metrics_reporter.h +index 921131797..b2aede915 100644 +--- a/cc/metrics/lcd_text_metrics_reporter.h ++++ b/cc/metrics/lcd_text_metrics_reporter.h +@@ -6,6 +6,7 @@ + #define CC_METRICS_LCD_TEXT_METRICS_REPORTER_H_ + + #include <cstdint> ++#include <memory> + + #include "base/time/time.h" + #include "cc/cc_export.h" diff --git a/www-client/chromium/files/chromium-cert-share-encrypted-85.patch b/www-client/chromium/files/chromium-cert-share-encrypted-85.patch new file mode 100644 index 0000000..1a393c4 --- /dev/null +++ b/www-client/chromium/files/chromium-cert-share-encrypted-85.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h b/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h +index 2893bdeef..6732a12a8 100644 +--- a/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h ++++ b/chrome/browser/nearby_sharing/certificates/nearby_share_encrypted_metadata_key.h +@@ -5,6 +5,8 @@ + #ifndef CHROME_BROWSER_NEARBY_SHARING_CERTIFICATES_NEARBY_SHARE_ENCRYPTED_METADATA_KEY_H_ + #define CHROME_BROWSER_NEARBY_SHARING_CERTIFICATES_NEARBY_SHARE_ENCRYPTED_METADATA_KEY_H_ + ++#include <stdint.h> ++ + #include <vector> + + // Holds the encrypted symmetric key--the key used to encrypt user/device diff --git a/www-client/chromium/files/chromium-char-max-84.patch b/www-client/chromium/files/chromium-char-max-84.patch new file mode 100644 index 0000000..0f9c654 --- /dev/null +++ b/www-client/chromium/files/chromium-char-max-84.patch @@ -0,0 +1,12 @@ +diff --git a/components/prefs/pref_value_map.cc b/components/prefs/pref_value_map.cc +index 8a203ac7a..18f160b6e 100644 +--- a/components/prefs/pref_value_map.cc ++++ b/components/prefs/pref_value_map.cc +@@ -4,6 +4,7 @@ + + #include "components/prefs/pref_value_map.h" + ++#include <climits> + #include <map> + #include <memory> + #include <utility> diff --git a/www-client/chromium/files/chromium-clang-format-path-82.patch b/www-client/chromium/files/chromium-clang-format-path-82.patch new file mode 100644 index 0000000..b250479 --- /dev/null +++ b/www-client/chromium/files/chromium-clang-format-path-82.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py b/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py +index dc3493cc3..6eeb34a93 100644 +--- a/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py ++++ b/third_party/blink/renderer/bindings/scripts/bind_gen/style_format.py +@@ -36,7 +36,7 @@ def init(root_src_dir): + + # //buildtools/<platform>/clang-format + _clang_format_command_path = os.path.join( +- buildtools_platform_dir, "clang-format{}".format(exe_suffix)) ++ "/usr/lib/llvm/10/bin", "clang-format{}".format(exe_suffix)) + + # //buildtools/<platform>/gn + _gn_command_path = os.path.join(buildtools_platform_dir, diff --git a/www-client/chromium/files/chromium-compiler-76.patch b/www-client/chromium/files/chromium-compiler-76.patch new file mode 100644 index 0000000..66f80c0 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-76.patch @@ -0,0 +1,160 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index f8a862a6b..41b30dd17 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -230,8 +230,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -471,20 +469,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1523,7 +1507,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1532,10 +1516,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1544,15 +1524,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1941,7 +1912,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1975,7 +1947,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -1998,7 +1971,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2026,7 +2000,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2073,7 +2048,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2111,7 +2087,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2213,7 +2190,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2323,7 +2301,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2380,7 +2359,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-compiler-77.patch b/www-client/chromium/files/chromium-compiler-77.patch new file mode 100644 index 0000000..c311e47 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-77.patch @@ -0,0 +1,160 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 72cea8e47..1c59181f8 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -233,8 +233,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -474,20 +472,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1533,7 +1517,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1542,10 +1526,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1554,15 +1534,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1951,7 +1922,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1985,7 +1957,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -2008,7 +1981,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2036,7 +2010,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2083,7 +2058,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2121,7 +2097,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2223,7 +2200,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2333,7 +2311,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2388,7 +2367,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-compiler-78.patch b/www-client/chromium/files/chromium-compiler-78.patch new file mode 100644 index 0000000..77a8f60 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-78.patch @@ -0,0 +1,160 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index bd7245d9a..71d27bcf9 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -248,8 +248,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -489,20 +487,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1538,7 +1522,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1547,10 +1531,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1559,15 +1539,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1968,7 +1939,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1994,7 +1966,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -2017,7 +1990,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2045,7 +2019,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2084,7 +2059,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2114,7 +2090,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2216,7 +2193,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2326,7 +2304,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2381,7 +2360,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-compiler-82.patch b/www-client/chromium/files/chromium-compiler-82.patch new file mode 100644 index 0000000..62ca00c --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-82.patch @@ -0,0 +1,166 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index e40194e3f..b47385c34 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -260,8 +260,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -486,26 +484,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- +- if (target_os != "chromeos") { +- # TODO(https://crbug.com/1049161): Remove '-DCLANG_SPAWN_CC1=ON' from build.py instead +- # once this change has marinated a bit. +- cflags += [ "-fintegrated-cc1" ] +- } +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1577,7 +1555,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1586,10 +1564,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1598,15 +1572,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2010,7 +1975,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -2036,7 +2002,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -2059,7 +2026,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2093,7 +2061,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2132,7 +2101,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2162,7 +2132,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2278,7 +2249,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2388,7 +2360,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2443,7 +2416,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-compiler-83.patch b/www-client/chromium/files/chromium-compiler-83.patch new file mode 100644 index 0000000..cb3c343 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-83.patch @@ -0,0 +1,150 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 6f096b953..0e84f4450 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -261,8 +261,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -485,20 +483,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1545,7 +1529,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1554,10 +1538,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1566,15 +1546,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1973,7 +1944,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. + # /O1 implies /Os and /GF. +@@ -1994,7 +1966,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2028,7 +2001,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2060,7 +2034,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2085,7 +2060,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2201,7 +2177,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2307,7 +2284,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2364,7 +2342,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-compiler-84-r1.patch b/www-client/chromium/files/chromium-compiler-84-r1.patch new file mode 100644 index 0000000..2ad6be7 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-84-r1.patch @@ -0,0 +1,150 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 571d37f9d..fc7905808 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -265,8 +265,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -495,20 +493,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1543,7 +1527,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1552,10 +1536,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1564,15 +1544,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1970,7 +1941,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -1997,7 +1969,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2031,7 +2004,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2063,7 +2037,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2088,7 +2063,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2204,7 +2180,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2310,7 +2287,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2367,7 +2345,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-compiler-84.patch b/www-client/chromium/files/chromium-compiler-84.patch new file mode 100644 index 0000000..76057d1 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-84.patch @@ -0,0 +1,150 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 4c5e6779e..9280e746f 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -270,8 +270,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -500,20 +498,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1560,7 +1544,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1569,10 +1553,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1581,15 +1561,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1987,7 +1958,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. + # /O1 implies /Os and /GF. +@@ -2008,7 +1980,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2042,7 +2015,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2074,7 +2048,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2099,7 +2074,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2215,7 +2191,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2321,7 +2298,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2378,7 +2356,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-compiler-86.patch b/www-client/chromium/files/chromium-compiler-86.patch new file mode 100644 index 0000000..a740297 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-86.patch @@ -0,0 +1,162 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 3b3cdd898..ed4baae3f 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -253,8 +253,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -485,17 +483,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1061,14 +1048,6 @@ config("compiler_codegen") { + ldflags += [ "-Wl,-mllvm,-enable-machine-outliner=never" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang && !is_chromeos_device) { +- cflags += [ +- # TODO(thakis): Remove after next clang roll, see reviews.llvm.org/D82998 +- "-mllvm", +- "-basic-aa-recphi=0", +- ] +- } +- + # TODO(thakis): Remove `if (!is_win)` after next clang roll. + if (!is_win) { + asmflags = cflags +@@ -1561,7 +1540,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1570,10 +1549,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1582,15 +1557,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1988,7 +1954,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2023,7 +1990,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2063,7 +2031,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2095,7 +2064,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2120,7 +2090,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2237,7 +2208,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2344,7 +2316,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2401,7 +2374,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-compiler-87.patch b/www-client/chromium/files/chromium-compiler-87.patch new file mode 100644 index 0000000..5668bbb --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-87.patch @@ -0,0 +1,147 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 16ee9ba..4dd19bd 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -258,8 +258,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -492,17 +490,6 @@ config("compiler") { + ldflags += [ "-Wl,-z,keep-text-section-prefix" ] + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-mllvm", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || +@@ -1573,7 +1560,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [ ] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1582,10 +1569,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1594,15 +1577,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -2000,7 +1974,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + if (chrome_pgo_phase != 2) { + # Favor size over speed, /O1 must be before the common flags. +@@ -2035,7 +2010,8 @@ config("optimize") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2075,7 +2051,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2107,7 +2084,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2132,7 +2110,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2249,7 +2228,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (is_clang) { + cflags = [ "/Z7" ] # Debug information in the .obj files. +@@ -2360,7 +2340,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Functions, files, and line tables only. + cflags = [] +@@ -2413,7 +2394,8 @@ config("minimal_symbols") { + # This configuration contains function names only. That is, the compiler is + # told to not generate debug information and the linker then just puts function + # names in the final debug information. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (is_win) { + ldflags = [ "/DEBUG" ] + diff --git a/www-client/chromium/files/chromium-compiler-r10.patch b/www-client/chromium/files/chromium-compiler-r10.patch new file mode 100644 index 0000000..f2ecdc3 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r10.patch @@ -0,0 +1,185 @@ +From a1207cc75454e653030716948d27ec27412f6fe8 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Sat, 16 Jun 2019 15:43:27 +0100 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 64 +++++++++++++--------------------- + 1 file changed, 25 insertions(+), 39 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index a3f21b7..0a7bec6 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -230,8 +230,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -471,20 +469,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # C11/C++11 compiler flags setup. + # --------------------------- + if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") { +@@ -1431,6 +1415,12 @@ config("default_warnings") { + "-Wno-narrowing", + ] + ++ # -Wno-class-memaccess warns about hash table and vector in blink. ++ # But the violation is intentional. ++ if (!is_nacl) { ++ cflags_cc += [ "-Wno-class-memaccess" ] ++ } ++ + # -Wunused-local-typedefs is broken in gcc, + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63872 + cflags += [ "-Wno-unused-local-typedefs" ] +@@ -1525,7 +1515,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1534,10 +1524,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1546,15 +1532,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1943,7 +1920,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1977,7 +1955,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -2000,7 +1979,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2028,7 +2008,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2075,7 +2056,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2113,7 +2095,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2215,7 +2198,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2325,7 +2309,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2382,7 +2367,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags +-- +2.21.0 + diff --git a/www-client/chromium/files/chromium-compiler-r4.patch b/www-client/chromium/files/chromium-compiler-r4.patch new file mode 100644 index 0000000..3fe73ef --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r4.patch @@ -0,0 +1,168 @@ +From 777d166eec22c1894108dce985498f75ac5931e8 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Wed, 25 Apr 2018 13:22:49 -0400 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 61 ++++++++++------------------------ + 1 file changed, 18 insertions(+), 43 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 6e38ad782d38..87bbd423f67f 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -225,8 +225,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ] + +@@ -488,18 +486,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && current_toolchain == host_toolchain && +- target_os != "chromeos") { +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. +@@ -1473,10 +1459,6 @@ config("default_warnings") { + cflags += [ + # TODO(thakis): https://crbug.com/753973 + "-Wno-enum-compare-switch", +- +- # Ignore warnings about MSVC optimization pragmas. +- # TODO(thakis): Only for no_chromium_code? http://crbug.com/505314 +- "-Wno-ignored-pragma-optimize", + ] + } + } +@@ -1518,22 +1500,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build) && +- current_cpu != "s390x" && current_cpu != "s390" && +- current_cpu != "ppc64" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac || is_ios) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1863,7 +1829,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1897,7 +1864,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -1920,7 +1888,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -1944,7 +1913,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -1991,7 +1961,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2029,7 +2000,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2115,7 +2087,8 @@ config("afdo") { + # configs += [ "//build/config/compiler:symbols" ] + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2213,7 +2186,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2244,7 +2218,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags +-- +2.18.0 + diff --git a/www-client/chromium/files/chromium-compiler-r6.patch b/www-client/chromium/files/chromium-compiler-r6.patch new file mode 100644 index 0000000..db8d046 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r6.patch @@ -0,0 +1,170 @@ +From cec10e55fdb150b33342ad462907fb6202de364e Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Wed, 25 Apr 2018 13:22:49 -0400 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 63 ++++++++++------------------------ + 1 file changed, 18 insertions(+), 45 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 0f7a6b48f7b2..c91b702147d4 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -236,8 +236,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ] + +@@ -502,17 +500,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. +@@ -1498,13 +1485,6 @@ config("default_warnings") { + cflags += [ + # TODO(thakis): https://crbug.com/753973 + "-Wno-enum-compare-switch", +- +- # Ignore warnings about MSVC optimization pragmas. +- # TODO(thakis): Only for no_chromium_code? http://crbug.com/505314 +- "-Wno-ignored-pragma-optimize", +- +- # TODO(hans): https://crbug.com/890307 +- "-Wno-defaulted-function-deleted", + ] + } + } +@@ -1546,22 +1526,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build) && +- current_cpu != "s390x" && current_cpu != "s390" && +- current_cpu != "ppc64" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1931,7 +1895,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1965,7 +1930,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -1988,7 +1954,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2012,7 +1979,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2059,7 +2027,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2097,7 +2066,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2183,7 +2153,8 @@ config("afdo") { + # configs += [ "//build/config/compiler:symbols" ] + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2281,7 +2252,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2321,7 +2293,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags +-- +2.19.1 + diff --git a/www-client/chromium/files/chromium-compiler-r7.patch b/www-client/chromium/files/chromium-compiler-r7.patch new file mode 100644 index 0000000..dcf40a8 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r7.patch @@ -0,0 +1,176 @@ +From 6ba946c7116f4f1d0b35fc90716b6e940116b74b Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppym@gentoo.org> +Date: Wed, 25 Apr 2018 13:22:49 -0400 +Subject: [PATCH] Disable various compiler configs + +--- + build/config/compiler/BUILD.gn | 62 +++++++++++----------------------- + 1 file changed, 19 insertions(+), 43 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 677003ac646c..f38bc908622a 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -236,8 +236,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ] + +@@ -502,17 +500,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. +@@ -1512,7 +1499,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1521,10 +1508,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1533,22 +1516,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build) && +- current_cpu != "s390x" && current_cpu != "s390" && +- current_cpu != "ppc64" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1925,7 +1892,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1959,7 +1927,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -1982,7 +1951,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2006,7 +1976,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2053,7 +2024,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2091,7 +2063,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2193,7 +2166,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2294,7 +2268,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2337,7 +2312,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags +-- +2.19.1 + diff --git a/www-client/chromium/files/chromium-compiler-r8.patch b/www-client/chromium/files/chromium-compiler-r8.patch new file mode 100644 index 0000000..117d1e6 --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r8.patch @@ -0,0 +1,164 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 2f01fbbf4..8b487ad77 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -236,8 +236,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ] + +@@ -501,17 +499,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. +@@ -1516,7 +1503,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1525,10 +1512,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1537,22 +1520,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build) && +- current_cpu != "s390x" && current_cpu != "s390" && +- current_cpu != "ppc64" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1922,7 +1889,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1956,7 +1924,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -1979,7 +1948,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2007,7 +1977,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2054,7 +2025,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2092,7 +2064,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2194,7 +2167,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2304,7 +2278,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2356,7 +2331,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-compiler-r9.patch b/www-client/chromium/files/chromium-compiler-r9.patch new file mode 100644 index 0000000..43cd93e --- /dev/null +++ b/www-client/chromium/files/chromium-compiler-r9.patch @@ -0,0 +1,160 @@ +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 7db66418e..ce3ba300a 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -230,8 +230,6 @@ config("compiler") { + + configs += [ + # See the definitions below. +- ":clang_revision", +- ":compiler_cpu_abi", + ":compiler_codegen", + ":compiler_deterministic", + ] +@@ -479,20 +477,6 @@ config("compiler") { + } + } + +- if (is_clang && !is_nacl && !use_xcode_clang) { +- cflags += [ "-fcrash-diagnostics-dir=" + +- rebase_path("//tools/clang/crashreports", root_build_dir) ] +- +- cflags += [ +- # TODO(hans): Remove this once Clang generates better optimized debug info +- # by default. https://crbug.com/765793 +- "-Xclang", +- "-mllvm", +- "-Xclang", +- "-instcombine-lower-dbg-declare=0", +- ] +- } +- + # Print absolute paths in diagnostics. There is no precedent for doing this + # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and + # Windows developers rely on it (crbug.com/636109) so only do this on Windows. +@@ -1533,7 +1517,7 @@ config("chromium_code") { + defines = [ "_HAS_NODISCARD" ] + } + } else { +- cflags = [ "-Wall" ] ++ cflags = [] + if (treat_warnings_as_errors) { + cflags += [ "-Werror" ] + +@@ -1542,10 +1526,6 @@ config("chromium_code") { + # well. + ldflags = [ "-Werror" ] + } +- if (is_clang) { +- # Enable extra warnings for chromium_code when we control the compiler. +- cflags += [ "-Wextra" ] +- } + + # In Chromium code, we define __STDC_foo_MACROS in order to get the + # C99 macros on Mac and Linux. +@@ -1554,15 +1534,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && current_cpu != "s390x" && +- current_cpu != "s390" && current_cpu != "ppc64" && +- current_cpu != "mips" && current_cpu != "mips64") { +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] +@@ -1951,7 +1922,8 @@ config("default_stack_frames") { + } + + # Default "optimization on" config. +-config("optimize") { ++config("optimize") { } ++config("xoptimize") { + if (is_win) { + # TODO(thakis): Remove is_clang here, https://crbug.com/598772 + if (is_official_build && full_wpo_on_official && !is_clang) { +@@ -1985,7 +1957,8 @@ config("optimize") { + } + + # Same config as 'optimize' but without the WPO flag. +-config("optimize_no_wpo") { ++config("optimize_no_wpo") { } ++config("xoptimize_no_wpo") { + if (is_win) { + # Favor size over speed, /O1 must be before the common flags. The GYP + # build also specifies /Os and /GF but these are implied by /O1. +@@ -2008,7 +1981,8 @@ config("optimize_no_wpo") { + } + + # Turn off optimizations. +-config("no_optimize") { ++config("no_optimize") { } ++config("xno_optimize") { + if (is_win) { + cflags = [ + "/Od", # Disable optimization. +@@ -2036,7 +2010,8 @@ config("no_optimize") { + # Turns up the optimization level. On Windows, this implies whole program + # optimization and link-time code generation which is very expensive and should + # be used sparingly. +-config("optimize_max") { ++config("optimize_max") { } ++config("xoptimize_max") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2083,7 +2058,8 @@ config("optimize_max") { + # + # TODO(crbug.com/621335) - rework how all of these configs are related + # so that we don't need this disclaimer. +-config("optimize_speed") { ++config("optimize_speed") { } ++config("xoptimize_speed") { + if (is_nacl && is_nacl_irt) { + # The NaCl IRT is a special case and always wants its own config. + # Various components do: +@@ -2121,7 +2097,8 @@ config("optimize_speed") { + } + } + +-config("optimize_fuzzing") { ++config("optimize_fuzzing") { } ++config("xoptimize_fuzzing") { + cflags = [ "-O1" ] + common_optimize_on_cflags + ldflags = common_optimize_on_ldflags + visibility = [ ":default_optimization" ] +@@ -2223,7 +2200,8 @@ config("win_pdbaltpath") { + } + + # Full symbols. +-config("symbols") { ++config("symbols") { } ++config("xsymbols") { + if (is_win) { + if (use_goma || is_clang) { + # Note that with VC++ this requires is_win_fastlink, enforced elsewhere. +@@ -2328,7 +2306,8 @@ config("symbols") { + # Minimal symbols. + # This config guarantees to hold symbol for stack trace which are shown to user + # when crash happens in unittests running on buildbot. +-config("minimal_symbols") { ++config("minimal_symbols") { } ++config("xminimal_symbols") { + if (is_win) { + # Linker symbols for backtraces only. + cflags = [] +@@ -2380,7 +2359,8 @@ config("minimal_symbols") { + } + + # No symbols. +-config("no_symbols") { ++config("no_symbols") { } ++config("xno_symbols") { + if (!is_win) { + cflags = [ "-g0" ] + asmflags = cflags diff --git a/www-client/chromium/files/chromium-core-management-svc-84.patch b/www-client/chromium/files/chromium-core-management-svc-84.patch new file mode 100644 index 0000000..89a5f1b --- /dev/null +++ b/www-client/chromium/files/chromium-core-management-svc-84.patch @@ -0,0 +1,12 @@ +diff --git a/components/policy/core/common/management/management_service.h b/components/policy/core/common/management/management_service.h +index cf71a2379..f845bff5c 100644 +--- a/components/policy/core/common/management/management_service.h ++++ b/components/policy/core/common/management/management_service.h +@@ -7,6 +7,7 @@ + + #include "base/containers/flat_set.h" + #include "components/policy/policy_export.h" ++#include <memory> + + namespace policy { + diff --git a/www-client/chromium/files/chromium-crx-install-err-include-83.patch b/www-client/chromium/files/chromium-crx-install-err-include-83.patch new file mode 100644 index 0000000..fc42771 --- /dev/null +++ b/www-client/chromium/files/chromium-crx-install-err-include-83.patch @@ -0,0 +1,13 @@ +diff --git a/extensions/browser/install/crx_install_error.cc b/extensions/browser/install/crx_install_error.cc +index a9765bb0a..ab5870069 100644 +--- a/extensions/browser/install/crx_install_error.cc ++++ b/extensions/browser/install/crx_install_error.cc +@@ -7,6 +7,8 @@ + #include "base/logging.h" + #include "extensions/browser/install/sandboxed_unpacker_failure_reason.h" + ++#include <algorithm> ++ + namespace extensions { + + CrxInstallError::CrxInstallError(CrxInstallErrorType type, diff --git a/www-client/chromium/files/chromium-cursor-80.patch b/www-client/chromium/files/chromium-cursor-80.patch new file mode 100644 index 0000000..4907452 --- /dev/null +++ b/www-client/chromium/files/chromium-cursor-80.patch @@ -0,0 +1,99 @@ +diff --git a/chrome/browser/ui/libgtkui/gtk_ui.cc b/chrome/browser/ui/libgtkui/gtk_ui.cc +index 1aea19a..cf38ee7 100644 +--- a/chrome/browser/ui/libgtkui/gtk_ui.cc ++++ b/chrome/browser/ui/libgtkui/gtk_ui.cc +@@ -845,6 +845,8 @@ + void GtkUi::OnCursorThemeNameChanged(GtkSettings* settings, + GtkParamSpec* param) { + std::string cursor_theme_name = GetCursorThemeName(); ++ if (cursor_theme_name.empty()) ++ return; + for (auto& observer : cursor_theme_observers()) + observer.OnCursorThemeNameChanged(cursor_theme_name); + } +@@ -852,6 +854,8 @@ + void GtkUi::OnCursorThemeSizeChanged(GtkSettings* settings, + GtkParamSpec* param) { + int cursor_theme_size = GetCursorThemeSize(); ++ if (!cursor_theme_size) ++ return; + for (auto& observer : cursor_theme_observers()) + observer.OnCursorThemeSizeChanged(cursor_theme_size); + } +diff --git a/ui/base/cursor/cursor_loader_x11.cc b/ui/base/cursor/cursor_loader_x11.cc +index efc6351..52ab54a 100644 +--- a/ui/base/cursor/cursor_loader_x11.cc ++++ b/ui/base/cursor/cursor_loader_x11.cc +@@ -83,11 +83,8 @@ + : display_(gfx::GetXDisplay()), + invisible_cursor_(CreateInvisibleCursor(), gfx::GetXDisplay()) { + auto* cursor_theme_manager = CursorThemeManagerLinux::GetInstance(); +- if (cursor_theme_manager) { ++ if (cursor_theme_manager) + cursor_theme_observer_.Add(cursor_theme_manager); +- OnCursorThemeNameChanged(cursor_theme_manager->GetCursorThemeName()); +- OnCursorThemeSizeChanged(cursor_theme_manager->GetCursorThemeSize()); +- } + } + + CursorLoaderX11::~CursorLoaderX11() { +diff --git a/ui/base/cursor/cursor_theme_manager_linux.cc b/ui/base/cursor/cursor_theme_manager_linux.cc +index fe8a97f..f825b74 100644 +--- a/ui/base/cursor/cursor_theme_manager_linux.cc ++++ b/ui/base/cursor/cursor_theme_manager_linux.cc +@@ -26,6 +26,12 @@ + void CursorThemeManagerLinux::AddObserver( + CursorThemeManagerLinuxObserver* observer) { + cursor_theme_observers_.AddObserver(observer); ++ std::string name = GetCursorThemeName(); ++ if (!name.empty()) ++ observer->OnCursorThemeNameChanged(name); ++ int size = GetCursorThemeSize(); ++ if (size) ++ observer->OnCursorThemeSizeChanged(size); + } + + void CursorThemeManagerLinux::RemoveObserver( +diff --git a/ui/base/cursor/cursor_theme_manager_linux.h b/ui/base/cursor/cursor_theme_manager_linux.h +index 5304867..464d397 100644 +--- a/ui/base/cursor/cursor_theme_manager_linux.h ++++ b/ui/base/cursor/cursor_theme_manager_linux.h +@@ -22,9 +22,10 @@ + + static CursorThemeManagerLinux* GetInstance(); + +- virtual std::string GetCursorThemeName() = 0; +- virtual int GetCursorThemeSize() = 0; ++ // Adds |observer| and makes initial OnCursorThemNameChanged() and/or ++ // OnCursorThemeSizeChanged() calls if the respective settings were set. + void AddObserver(CursorThemeManagerLinuxObserver* observer); ++ + void RemoveObserver(CursorThemeManagerLinuxObserver* observer); + + protected: +@@ -35,6 +36,9 @@ + return cursor_theme_observers_; + } + ++ virtual std::string GetCursorThemeName() = 0; ++ virtual int GetCursorThemeSize() = 0; ++ + private: + static CursorThemeManagerLinux* instance_; + +diff --git a/ui/base/cursor/cursor_theme_manager_linux_observer.h b/ui/base/cursor/cursor_theme_manager_linux_observer.h +index 3d0c822..73a3b42 100644 +--- a/ui/base/cursor/cursor_theme_manager_linux_observer.h ++++ b/ui/base/cursor/cursor_theme_manager_linux_observer.h +@@ -15,8 +15,11 @@ + class UI_BASE_EXPORT CursorThemeManagerLinuxObserver + : public base::CheckedObserver { + public: ++ // |cursor_theme_name| will be nonempty. + virtual void OnCursorThemeNameChanged( + const std::string& cursor_theme_name) = 0; ++ ++ // |cursor_theme_size| will be nonzero. + virtual void OnCursorThemeSizeChanged(int cursor_theme_size) = 0; + + protected: diff --git a/www-client/chromium/files/chromium-deque-constructor-82.patch b/www-client/chromium/files/chromium-deque-constructor-82.patch new file mode 100644 index 0000000..5c9d237 --- /dev/null +++ b/www-client/chromium/files/chromium-deque-constructor-82.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/platform/wtf/deque.h b/third_party/blink/renderer/platform/wtf/deque.h +index 29cce7c57..07233c4 100644 +--- a/third_party/blink/renderer/platform/wtf/deque.h ++++ b/third_party/blink/renderer/platform/wtf/deque.h + +@@ -236,6 +236,7 @@ + typedef T& reference; + typedef std::bidirectional_iterator_tag iterator_category; + ++ DequeIterator() = default; + DequeIterator(Deque<T, inlineCapacity, Allocator>* deque, wtf_size_t index) + : Base(deque, index) {} + diff --git a/www-client/chromium/files/chromium-disable-mojovdec.patch b/www-client/chromium/files/chromium-disable-mojovdec.patch new file mode 100644 index 0000000..e694ad2 --- /dev/null +++ b/www-client/chromium/files/chromium-disable-mojovdec.patch @@ -0,0 +1,18 @@ +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 477caecdb..e152cbddd 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -245,7 +245,12 @@ const base::Feature kMemoryPressureBasedSourceBufferGC{ + + // Enable MojoVideoDecoder, replacing GpuVideoDecoder. + const base::Feature kMojoVideoDecoder{"MojoVideoDecoder", +- base::FEATURE_ENABLED_BY_DEFAULT}; ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) ++ base::FEATURE_DISABLED_BY_DEFAULT ++#else ++ base::FEATURE_ENABLED_BY_DEFAULT ++#endif ++}; + + // Enable The D3D11 Video decoder. Must also enable MojoVideoDecoder for + // this to have any effect. diff --git a/www-client/chromium/files/chromium-ext-no-vector-const-84.patch b/www-client/chromium/files/chromium-ext-no-vector-const-84.patch new file mode 100644 index 0000000..7a02aba --- /dev/null +++ b/www-client/chromium/files/chromium-ext-no-vector-const-84.patch @@ -0,0 +1,40 @@ +diff --git a/extensions/common/features/feature_flags.cc b/extensions/common/features/feature_flags.cc +index 5b63764e4..7efa308db 100644 +--- a/extensions/common/features/feature_flags.cc ++++ b/extensions/common/features/feature_flags.cc +@@ -19,7 +19,7 @@ namespace { + constexpr base::Feature kFeatureFlags[] = { + {"DeclarativeNetRequest", base::FEATURE_ENABLED_BY_DEFAULT}}; + +-const std::vector<const base::Feature>* g_feature_flags_test_override = nullptr; ++const std::vector<base::Feature>* g_feature_flags_test_override = nullptr; + + template <typename T> + const base::Feature* GetFeature(T begin, +@@ -52,8 +52,8 @@ bool IsFeatureFlagEnabled(const std::string& feature_flag) { + } + + ScopedFeatureFlagsOverride CreateScopedFeatureFlagsOverrideForTesting( +- const std::vector<const base::Feature>* features) { +- return base::AutoReset<const std::vector<const base::Feature>*>( ++ const std::vector<base::Feature>* features) { ++ return base::AutoReset<const std::vector<base::Feature>*>( + &g_feature_flags_test_override, features); + } + +diff --git a/extensions/common/features/feature_flags.h b/extensions/common/features/feature_flags.h +index d1a5dd372..b57740b25 100644 +--- a/extensions/common/features/feature_flags.h ++++ b/extensions/common/features/feature_flags.h +@@ -25,9 +25,9 @@ bool IsFeatureFlagEnabled(const std::string& feature_flag); + // in scope. Clients must ensure that |features| remains alive (non-dangling) + // while the returned value is in scope. + using ScopedFeatureFlagsOverride = +- base::AutoReset<const std::vector<const base::Feature>*>; ++ base::AutoReset<const std::vector<base::Feature>*>; + ScopedFeatureFlagsOverride CreateScopedFeatureFlagsOverrideForTesting( +- const std::vector<const base::Feature>* features); ++ const std::vector<base::Feature>* features); + + } // namespace extensions + diff --git a/www-client/chromium/files/chromium-fix-char_traits.patch b/www-client/chromium/files/chromium-fix-char_traits.patch new file mode 100644 index 0000000..4cb9503 --- /dev/null +++ b/www-client/chromium/files/chromium-fix-char_traits.patch @@ -0,0 +1,14 @@ +--- a/base/strings/char_traits.h ++++ b/base/strings/char_traits.h +@@ -67,9 +67,9 @@ + return __builtin_memcmp(s1, s2, n); + #else + for (; n; --n, ++s1, ++s2) { +- if (*s1 < *s2) ++ if ((unsigned char)*s1 < (unsigned char)*s2) + return -1; +- if (*s1 > *s2) ++ if ((unsigned char)*s1 > (unsigned char)*s2) + return 1; + } + return 0; diff --git a/www-client/chromium/files/chromium-gamepad-include-84.patch b/www-client/chromium/files/chromium-gamepad-include-84.patch new file mode 100644 index 0000000..36eb40c --- /dev/null +++ b/www-client/chromium/files/chromium-gamepad-include-84.patch @@ -0,0 +1,12 @@ +diff --git a/device/gamepad/public/cpp/gamepad.h b/device/gamepad/public/cpp/gamepad.h +index 67e793a23..c2ead1bd3 100644 +--- a/device/gamepad/public/cpp/gamepad.h ++++ b/device/gamepad/public/cpp/gamepad.h +@@ -7,6 +7,7 @@ + + #include <stddef.h> + #include <cstdint> ++#include <limits> + + #include "base/component_export.h" + #include "base/strings/string16.h" diff --git a/www-client/chromium/files/chromium-gcc-89311.patch b/www-client/chromium/files/chromium-gcc-89311.patch new file mode 100644 index 0000000..40a0e73 --- /dev/null +++ b/www-client/chromium/files/chromium-gcc-89311.patch @@ -0,0 +1,88 @@ +diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc +index 3f0985d..57d16ab 100644 +--- a/chrome/browser/ui/views/extensions/extension_popup.cc ++++ b/chrome/browser/ui/views/extensions/extension_popup.cc +@@ -8,7 +8,6 @@ + #include "chrome/browser/devtools/devtools_window.h" + #include "chrome/browser/extensions/extension_view_host.h" + #include "chrome/browser/ui/browser.h" +-#include "chrome/browser/ui/tabs/tab_strip_model.h" + #include "content/public/browser/devtools_agent_host.h" + #include "content/public/browser/notification_details.h" + #include "content/public/browser/notification_source.h" +diff --git a/chrome/browser/ui/views/extensions/extension_popup.h b/chrome/browser/ui/views/extensions/extension_popup.h +index 3661b5b..9018efa 100644 +--- a/chrome/browser/ui/views/extensions/extension_popup.h ++++ b/chrome/browser/ui/views/extensions/extension_popup.h +@@ -9,6 +9,7 @@ + #include "base/compiler_specific.h" + #include "base/macros.h" + #include "base/scoped_observer.h" ++#include "chrome/browser/ui/tabs/tab_strip_model.h" + #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" + #include "chrome/browser/ui/views/extensions/extension_view_views.h" + #include "content/public/browser/devtools_agent_host_observer.h" +diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc +index 7419243..441929a 100644 +--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc ++++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.cc +@@ -9,7 +9,6 @@ + #include "base/single_thread_task_runner.h" + #include "base/threading/thread_task_runner_handle.h" + #include "base/time/time.h" +-#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" + #include "chrome/browser/ui/views/frame/app_menu_button.h" + #include "chrome/browser/ui/views/frame/browser_view.h" + #include "chrome/browser/ui/views/toolbar/app_menu.h" +diff --git a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h +index 2a3ea8e..ac44a4f 100644 +--- a/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h ++++ b/chrome/browser/ui/views/toolbar/extension_toolbar_menu_view.h +@@ -8,6 +8,7 @@ + #include "base/macros.h" + #include "base/memory/weak_ptr.h" + #include "base/scoped_observer.h" ++#include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" + #include "chrome/browser/ui/toolbar/toolbar_actions_bar_observer.h" + #include "chrome/browser/ui/views/frame/app_menu_button_observer.h" + #include "ui/views/controls/scroll_view.h" +@@ -16,7 +17,6 @@ + class AppMenuButton; + class Browser; + class BrowserActionsContainer; +-class ToolbarActionsBar; + + namespace views { + class MenuItemView; +diff --git a/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.cc b/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.cc +index 342723e..acdc4b7 100644 +--- a/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.cc ++++ b/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.cc +@@ -10,7 +10,6 @@ + #include "chrome/common/chrome_features.h" + #include "chrome/common/extensions/api/url_handlers/url_handlers_parser.h" + #include "content/public/browser/web_contents.h" +-#include "extensions/browser/extension_registry.h" + #include "extensions/common/extension.h" + #include "url/gurl.h" + +diff --git a/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.h b/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.h +index 895e204..11dfdef 100644 +--- a/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.h ++++ b/chrome/browser/web_applications/extensions/bookmark_app_tab_helper.h +@@ -8,6 +8,7 @@ + #include "base/macros.h" + #include "base/scoped_observer.h" + #include "chrome/browser/web_applications/components/web_app_tab_helper_base.h" ++#include "extensions/browser/extension_registry.h" + #include "extensions/browser/extension_registry_observer.h" + + namespace content { +@@ -17,7 +18,6 @@ + namespace extensions { + + class Extension; +-class ExtensionRegistry; + + // Allows to associate a tab with bookmark app. + class BookmarkAppTabHelper : public web_app::WebAppTabHelperBase, diff --git a/www-client/chromium/files/chromium-gcc-initlist.patch b/www-client/chromium/files/chromium-gcc-initlist.patch new file mode 100644 index 0000000..8658264 --- /dev/null +++ b/www-client/chromium/files/chromium-gcc-initlist.patch @@ -0,0 +1,16 @@ +diff --git a/net/third_party/quic/platform/impl/quic_flags_impl.cc b/net/third_party/quic/platform/impl/quic_flags_impl.cc +index 5e6962d1e..2456c80dd 100644 +--- a/net/third_party/quic/platform/impl/quic_flags_impl.cc ++++ b/net/third_party/quic/platform/impl/quic_flags_impl.cc +@@ -153,9 +153,9 @@ std::string QuicFlagRegistry::GetHelp() const { + template <> + bool TypedQuicFlagHelper<bool>::SetFlag(const std::string& s) const { + static const base::NoDestructor<std::set<std::string>> kTrueValues( +- {"", "1", "t", "true", "y", "yes"}); ++ std::initializer_list<std::string>({"", "1", "t", "true", "y", "yes"})); + static const base::NoDestructor<std::set<std::string>> kFalseValues( +- {"0", "f", "false", "n", "no"}); ++ std::initializer_list<std::string>({"0", "f", "false", "n", "no"})); + if (kTrueValues->find(base::ToLowerASCII(s)) != kTrueValues->end()) { + *flag_ = true; + return true; diff --git a/www-client/chromium/files/chromium-gpu-vp9-include-84.patch b/www-client/chromium/files/chromium-gpu-vp9-include-84.patch new file mode 100644 index 0000000..ca95b4a --- /dev/null +++ b/www-client/chromium/files/chromium-gpu-vp9-include-84.patch @@ -0,0 +1,13 @@ +diff --git a/media/gpu/vp9_reference_frame_vector.cc b/media/gpu/vp9_reference_frame_vector.cc +index dc279980e..d560c7295 100644 +--- a/media/gpu/vp9_reference_frame_vector.cc ++++ b/media/gpu/vp9_reference_frame_vector.cc +@@ -6,6 +6,8 @@ + + #include "media/gpu/vp9_picture.h" + ++#include <bitset> ++ + namespace media { + + Vp9ReferenceFrameVector::Vp9ReferenceFrameVector() { diff --git a/www-client/chromium/files/chromium-harfbuzz-r0.patch b/www-client/chromium/files/chromium-harfbuzz-r0.patch new file mode 100644 index 0000000..2d5602d --- /dev/null +++ b/www-client/chromium/files/chromium-harfbuzz-r0.patch @@ -0,0 +1,80 @@ +From 7ae38170a117e909bb28e1470842b68de3501197 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppymaster@gmail.com> +Date: Sun, 21 Oct 2018 10:06:53 -0400 +Subject: [PATCH] blink: add 'const' modifier for harfbuzz hb_codepoint_t + pointers + +This resolves a build failure against harfbuzz 2.0. + +Based on a patch by Alexandre Fierreira. + +Bug: https://bugs.gentoo.org/669034 +--- + .../renderer/platform/fonts/shaping/harfbuzz_face.cc | 2 +- + .../renderer/platform/fonts/skia/skia_text_metrics.cc | 9 +++++++-- + .../renderer/platform/fonts/skia/skia_text_metrics.h | 2 +- + 3 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc +index 8e7d91ca371f..e279a5876cb3 100644 +--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc ++++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc +@@ -139,7 +139,7 @@ static hb_position_t HarfBuzzGetGlyphHorizontalAdvance(hb_font_t* hb_font, + static void HarfBuzzGetGlyphHorizontalAdvances(hb_font_t* font, + void* font_data, + unsigned count, +- hb_codepoint_t* first_glyph, ++ const hb_codepoint_t* first_glyph, + unsigned int glyph_stride, + hb_position_t* first_advance, + unsigned int advance_stride, +diff --git a/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.cc b/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.cc +index 77ec6209fab9..9f9070921448 100644 +--- a/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.cc ++++ b/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.cc +@@ -18,6 +18,11 @@ T* advance_by_byte_size(T* p, unsigned byte_size) { + return reinterpret_cast<T*>(reinterpret_cast<uint8_t*>(p) + byte_size); + } + ++template <class T> ++T* advance_by_byte_size_const(T* p, unsigned byte_size) { ++ return reinterpret_cast<T*>(reinterpret_cast<const uint8_t*>(p) + byte_size); ++} ++ + } // namespace + + SkiaTextMetrics::SkiaTextMetrics(const SkPaint* paint) : paint_(paint) { +@@ -39,7 +44,7 @@ void SkiaTextMetrics::GetGlyphWidthForHarfBuzz(hb_codepoint_t codepoint, + } + + void SkiaTextMetrics::GetGlyphWidthForHarfBuzz(unsigned count, +- hb_codepoint_t* glyphs, ++ const hb_codepoint_t* glyphs, + unsigned glyph_stride, + hb_position_t* advances, + unsigned advance_stride) { +@@ -48,7 +53,7 @@ void SkiaTextMetrics::GetGlyphWidthForHarfBuzz(unsigned count, + // array that copy them to a regular array. + Vector<Glyph, 256> glyph_array(count); + for (unsigned i = 0; i < count; +- i++, glyphs = advance_by_byte_size(glyphs, glyph_stride)) { ++ i++, glyphs = advance_by_byte_size_const(glyphs, glyph_stride)) { + glyph_array[i] = *glyphs; + } + Vector<SkScalar, 256> sk_width_array(count); +diff --git a/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.h b/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.h +index 787d8af0375a..3bc4407c641b 100644 +--- a/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.h ++++ b/third_party/blink/renderer/platform/fonts/skia/skia_text_metrics.h +@@ -19,7 +19,7 @@ class SkiaTextMetrics final { + + void GetGlyphWidthForHarfBuzz(hb_codepoint_t, hb_position_t* width); + void GetGlyphWidthForHarfBuzz(unsigned count, +- hb_codepoint_t* first_glyph, ++ const hb_codepoint_t* first_glyph, + unsigned glyph_stride, + hb_position_t* first_advance, + unsigned advance_stride); +-- +2.19.1 + diff --git a/www-client/chromium/files/chromium-hashtable-iterator-cat-83.patch b/www-client/chromium/files/chromium-hashtable-iterator-cat-83.patch new file mode 100644 index 0000000..777934c --- /dev/null +++ b/www-client/chromium/files/chromium-hashtable-iterator-cat-83.patch @@ -0,0 +1,65 @@ +diff --git a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h +index bbf10ef31..e5b627780 100644 +--- a/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h ++++ b/third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h +@@ -268,12 +268,14 @@ class CORE_EXPORT SerializedScriptValue + MessagePortChannelArray& GetStreamChannels() { return stream_channels_; } + + bool IsLockedToAgentCluster() const { +- return !wasm_modules_.IsEmpty() || +- !shared_array_buffers_contents_.IsEmpty() || +- std::any_of(attachments_.begin(), attachments_.end(), +- [](const auto& entry) { +- return entry.value->IsLockedToAgentCluster(); +- }); ++ bool ret = !wasm_modules_.IsEmpty() || ++ !shared_array_buffers_contents_.IsEmpty(); ++ if (ret) return true; ++ for (const auto& entry : attachments_) { ++ if (entry.value->IsLockedToAgentCluster()) ++ return true; ++ }; ++ return false; + } + + // Returns true after serializing script values that remote origins cannot +diff --git a/third_party/blink/renderer/platform/wtf/hash_table.h b/third_party/blink/renderer/platform/wtf/hash_table.h +index 1d195f121..1e65c08d8 100644 +--- a/third_party/blink/renderer/platform/wtf/hash_table.h ++++ b/third_party/blink/renderer/platform/wtf/hash_table.h +@@ -272,7 +272,11 @@ class HashTableConstIterator final { + Allocator> + const_iterator; + typedef Value ValueType; ++ using iterator_category = std::bidirectional_iterator_tag; + using value_type = ValueType; ++ using reference = value_type&; ++ using pointer = value_type*; ++ using difference_type = ptrdiff_t; + typedef typename Traits::IteratorConstGetType GetType; + typedef const ValueType* PointerType; + +@@ -540,6 +544,11 @@ class HashTableIterator final { + std::ostream& PrintTo(std::ostream& stream) const { + return iterator_.PrintTo(stream); + } ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = ValueType; ++ using reference = value_type&; ++ using pointer = value_type*; ++ using difference_type = ptrdiff_t; + + private: + const_iterator iterator_; +@@ -2230,6 +2239,11 @@ struct HashTableConstIteratorAdapter { + } + // postfix -- intentionally omitted + typename HashTableType::const_iterator impl_; ++ using iterator_category = std::bidirectional_iterator_tag; ++ using value_type = GetType*; ++ using reference = value_type&; ++ using pointer = value_type*; ++ using difference_type = ptrdiff_t; + }; + + template <typename HashTable, typename Traits> diff --git a/www-client/chromium/files/chromium-include-limits-83.patch b/www-client/chromium/files/chromium-include-limits-83.patch new file mode 100644 index 0000000..840a212 --- /dev/null +++ b/www-client/chromium/files/chromium-include-limits-83.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +index 6ab117bc4..43aa602f2 100644 +--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc ++++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include <limits> ++ + #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h" + #include "base/logging.h" + diff --git a/www-client/chromium/files/chromium-include-limits-84.patch b/www-client/chromium/files/chromium-include-limits-84.patch new file mode 100644 index 0000000..d73b36d --- /dev/null +++ b/www-client/chromium/files/chromium-include-limits-84.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +index 4881c010b..4d5d7a4fb 100644 +--- a/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc ++++ b/chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.cc +@@ -4,6 +4,7 @@ + + #include "chrome/browser/performance_manager/graph/policies/background_tab_loading_policy_helpers.h" + ++#include <limits> + #include <math.h> + + #include "base/logging.h" diff --git a/www-client/chromium/files/chromium-inline-node-ptr-84.patch b/www-client/chromium/files/chromium-inline-node-ptr-84.patch new file mode 100644 index 0000000..58ded53 --- /dev/null +++ b/www-client/chromium/files/chromium-inline-node-ptr-84.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +index 55ca9e3f7..ee691dfaf 100644 +--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc ++++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +@@ -891,7 +891,7 @@ void NGInlineNode::SegmentText(NGInlineNodeData* data) { + + // Segment NGInlineItem by script, Emoji, and orientation using RunSegmenter. + void NGInlineNode::SegmentScriptRuns(NGInlineNodeData* data) { +- DCHECK_EQ(data->segments, nullptr); ++ DCHECK_EQ(data->segments.get(), nullptr); + + String& text_content = data->text_content; + if (text_content.IsEmpty()) { diff --git a/www-client/chromium/files/chromium-launcher-r3.sh b/www-client/chromium/files/chromium-launcher-r3.sh new file mode 100644 index 0000000..a4fc1a9 --- /dev/null +++ b/www-client/chromium/files/chromium-launcher-r3.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Allow the user to override command-line flags, bug #357629. +# This is based on Debian's chromium-browser package, and is intended +# to be consistent with Debian. +for f in /etc/chromium/*; do + [[ -f ${f} ]] && source "${f}" +done + +# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system +# default CHROMIUM_FLAGS (from /etc/chromium/default). +CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"} + +# Let the wrapped binary know that it has been run through the wrapper +export CHROME_WRAPPER=$(readlink -f "$0") + +PROGDIR=${CHROME_WRAPPER%/*} + +case ":$PATH:" in + *:$PROGDIR:*) + # $PATH already contains $PROGDIR + ;; + *) + # Append $PROGDIR to $PATH + export PATH="$PATH:$PROGDIR" + ;; +esac + +if [[ ${EUID} == 0 && -O ${XDG_CONFIG_HOME:-${HOME}} ]]; then + # Running as root with HOME owned by root. + # Pass --user-data-dir to work around upstream failsafe. + CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium + ${CHROMIUM_FLAGS}" +fi + +# Set the .desktop file name +export CHROME_DESKTOP="chromium-browser-chromium.desktop" + +exec -a "chromium-browser" "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@" diff --git a/www-client/chromium/files/chromium-launcher-r6.sh b/www-client/chromium/files/chromium-launcher-r6.sh new file mode 100644 index 0000000..637cfd6 --- /dev/null +++ b/www-client/chromium/files/chromium-launcher-r6.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Allow the user to override command-line flags, bug #357629. +# This is based on Debian's chromium-browser package, and is intended +# to be consistent with Debian. +for f in /etc/chromium/*; do + [[ -f ${f} ]] && source "${f}" +done + +# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system +# default CHROMIUM_FLAGS (from /etc/chromium/default). +CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"} + +# Let the wrapped binary know that it has been run through the wrapper +export CHROME_WRAPPER=$(readlink -f "$0") + +PROGDIR=${CHROME_WRAPPER%/*} + +case ":$PATH:" in + *:$PROGDIR:*) + # $PATH already contains $PROGDIR + ;; + *) + # Append $PROGDIR to $PATH + export PATH="$PATH:$PROGDIR" + ;; +esac + +if [[ ${EUID} == 0 && -O ${XDG_CONFIG_HOME:-${HOME}} ]]; then + # Running as root with HOME owned by root. + # Pass --user-data-dir to work around upstream failsafe. + CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium + ${CHROMIUM_FLAGS}" +fi + +# Select session type and platform +if @@FORCE_OZONE_PLATFORM@@; then + CHROMIUM_FLAGS="--enable-features=UseOzonePlatform ${CHROMIUM_FLAGS}" +elif @@OZONE_AUTO_SESSION@@ && ! ${DISABLE_OZONE_PLATFORM:-false}; then + if [[ ${XDG_SESSION_TYPE} == wayland || -n ${WAYLAND_DISPLAY} && ${XDG_SESSION_TYPE} != x11 ]]; then + CHROMIUM_FLAGS="--enable-features=UseOzonePlatform ${CHROMIUM_FLAGS}" + fi +fi + +# Set the .desktop file name +export CHROME_DESKTOP="chromium-browser-chromium.desktop" + +exec -a "chromium-browser" "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@" diff --git a/www-client/chromium/files/chromium-launcher-r7.sh b/www-client/chromium/files/chromium-launcher-r7.sh new file mode 100644 index 0000000..1163ff3 --- /dev/null +++ b/www-client/chromium/files/chromium-launcher-r7.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Allow the user to override command-line flags, bug #357629. +# This is based on Debian's chromium-browser package, and is intended +# to be consistent with Debian. +for f in /etc/chromium/*; do + [[ -f ${f} ]] && source "${f}" +done + +# Prefer user defined CHROMIUM_USER_FLAGS (from env) over system +# default CHROMIUM_FLAGS (from /etc/chromium/default). +CHROMIUM_FLAGS=${CHROMIUM_USER_FLAGS:-"$CHROMIUM_FLAGS"} + +# Let the wrapped binary know that it has been run through the wrapper +export CHROME_WRAPPER=$(readlink -f "$0") + +PROGDIR=${CHROME_WRAPPER%/*} + +case ":$PATH:" in + *:$PROGDIR:*) + # $PATH already contains $PROGDIR + ;; + *) + # Append $PROGDIR to $PATH + export PATH="$PATH:$PROGDIR" + ;; +esac + +if [[ ${EUID} == 0 && -O ${XDG_CONFIG_HOME:-${HOME}} ]]; then + # Running as root with HOME owned by root. + # Pass --user-data-dir to work around upstream failsafe. + CHROMIUM_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium + ${CHROMIUM_FLAGS}" +fi + +# Select session type and platform +if @@OZONE_AUTO_SESSION@@; then + platform= + if [[ ${XDG_SESSION_TYPE} == x11 ]]; then + platform=x11 + elif [[ ${XDG_SESSION_TYPE} == wayland ]]; then + platform=wayland + else + if [[ -n ${WAYLAND_DISPLAY} ]]; then + platform=wayland + else + platform=x11 + fi + fi + if ${DISABLE_OZONE_PLATFORM:-false}; then + platform=x11 + fi + CHROMIUM_FLAGS="--ozone-platform=${platform} ${CHROMIUM_FLAGS}" +fi + +# Set the .desktop file name +export CHROME_DESKTOP="chromium-browser-chromium.desktop" + +exec -a "chromium-browser" "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_FLAGS} "$@" diff --git a/www-client/chromium/files/chromium-layer_tree_impl-stlcompat.patch b/www-client/chromium/files/chromium-layer_tree_impl-stlcompat.patch new file mode 100644 index 0000000..8fd9ff1 --- /dev/null +++ b/www-client/chromium/files/chromium-layer_tree_impl-stlcompat.patch @@ -0,0 +1,13 @@ +diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h +index f74d18f65..7cdc29e44 100644 +--- a/cc/trees/layer_tree_impl.h ++++ b/cc/trees/layer_tree_impl.h +@@ -194,7 +194,7 @@ class CC_EXPORT LayerTreeImpl { + // Adapts an iterator of std::unique_ptr<LayerImpl> to an iterator of + // LayerImpl*. + template <typename Iterator> +- class IteratorAdapter { ++ class IteratorAdapter : public std::iterator<std::forward_iterator_tag, LayerImpl*> { + public: + explicit IteratorAdapter(Iterator it) : it_(it) {} + bool operator==(IteratorAdapter o) const { return it_ == o.it_; } diff --git a/www-client/chromium/files/chromium-link.patch b/www-client/chromium/files/chromium-link.patch new file mode 100644 index 0000000..d39bba0 --- /dev/null +++ b/www-client/chromium/files/chromium-link.patch @@ -0,0 +1,17 @@ +diff --git a/device/bluetooth/bluetooth_device.cc b/device/bluetooth/bluetooth_device.cc +index dc280146a..cdc2944f4 100644 +--- a/device/bluetooth/bluetooth_device.cc ++++ b/device/bluetooth/bluetooth_device.cc +@@ -513,9 +513,9 @@ void BluetoothDevice::RemoveGattConnection( + } + + void BluetoothDevice::SetAsExpiredForTesting() { +- last_update_time_ = +- base::Time::NowFromSystemTime() - +- (BluetoothAdapter::timeoutSec + base::TimeDelta::FromSeconds(1)); ++ //last_update_time_ = ++ // base::Time::NowFromSystemTime() - ++ // (BluetoothAdapter::timeoutSec + base::TimeDelta::FromSeconds(1)); + } + + void BluetoothDevice::Pair(PairingDelegate* pairing_delegate, diff --git a/www-client/chromium/files/chromium-math.h-r0.patch b/www-client/chromium/files/chromium-math.h-r0.patch new file mode 100644 index 0000000..6c7c747 --- /dev/null +++ b/www-client/chromium/files/chromium-math.h-r0.patch @@ -0,0 +1,29 @@ +From 9f63f94a11abc34d40ede8b8712fa15b5844a8c0 Mon Sep 17 00:00:00 2001 +From: Tom Anderson <thomasanderson@chromium.org> +Date: Sat, 27 Jan 2018 20:03:37 +0000 +Subject: [PATCH] Fix build with glibc 2.27 + +BUG=806340 +TBR=hamelphi@chromium.org + +Change-Id: Ib4e5091212d874d9ad88f3e9a1fdfee3ed7e0d5e +Reviewed-on: https://chromium-review.googlesource.com/890059 +Reviewed-by: Thomas Anderson <thomasanderson@chromium.org> +Reviewed-by: Philippe Hamel <hamelphi@chromium.org> +Commit-Queue: Thomas Anderson <thomasanderson@chromium.org> +Cr-Commit-Position: refs/heads/master@{#532249} +--- + +diff --git a/components/assist_ranker/ranker_example_util.cc b/components/assist_ranker/ranker_example_util.cc +index 54d4dbd..ceedd8f 100644 +--- a/components/assist_ranker/ranker_example_util.cc ++++ b/components/assist_ranker/ranker_example_util.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include <math.h> ++ + #include "components/assist_ranker/ranker_example_util.h" + #include "base/bit_cast.h" + #include "base/format_macros.h" diff --git a/www-client/chromium/files/chromium-media-alloc-84.patch b/www-client/chromium/files/chromium-media-alloc-84.patch new file mode 100644 index 0000000..cc9ca5d --- /dev/null +++ b/www-client/chromium/files/chromium-media-alloc-84.patch @@ -0,0 +1,22 @@ +diff --git a/media/base/media.cc b/media/base/media.cc +index c282ee49a..3feece8a2 100644 +--- a/media/base/media.cc ++++ b/media/base/media.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include <limits> ++ + #include "media/base/media.h" + + #include "base/allocator/buildflags.h" +@@ -41,7 +43,7 @@ class MediaInitializer { + + #if BUILDFLAG(USE_ALLOCATOR_SHIM) + // Remove allocation limit from ffmpeg, so calls go down to shim layer. +- av_max_alloc(0); ++ av_max_alloc(std::numeric_limits<size_t>::max()); + #endif // BUILDFLAG(USE_ALLOCATOR_SHIM) + + #endif // BUILDFLAG(ENABLE_FFMPEG) diff --git a/www-client/chromium/files/chromium-memcpy-r0.patch b/www-client/chromium/files/chromium-memcpy-r0.patch new file mode 100644 index 0000000..dd2fd57 --- /dev/null +++ b/www-client/chromium/files/chromium-memcpy-r0.patch @@ -0,0 +1,35 @@ +From 4942f56ceb6d60d6f54ebca8e6eba8ba01c278e8 Mon Sep 17 00:00:00 2001 +From: Tomas Popela <tomas.popela@gmail.com> +Date: Thu, 7 Dec 2017 22:33:34 +0000 +Subject: [PATCH] memcpy used without including string.h + +Compiling Chromium with Clang 4.0.1 and using libstdc++ will fail on using +memcpy without including string.h. + +Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel +Change-Id: Idced1d5de3baf6b520d4a2d61774120642ead1a8 +Reviewed-on: https://chromium-review.googlesource.com/813737 +Reviewed-by: Thomas Anderson <thomasanderson@chromium.org> +Reviewed-by: vmpstr <vmpstr@chromium.org> +Commit-Queue: Thomas Anderson <thomasanderson@chromium.org> +Cr-Commit-Position: refs/heads/master@{#522579} +--- + cc/paint/raw_memory_transfer_cache_entry.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/cc/paint/raw_memory_transfer_cache_entry.cc b/cc/paint/raw_memory_transfer_cache_entry.cc +index 9e4660c685ee..95ad50b1a338 100644 +--- a/cc/paint/raw_memory_transfer_cache_entry.cc ++++ b/cc/paint/raw_memory_transfer_cache_entry.cc +@@ -4,6 +4,8 @@ + + #include "cc/paint/raw_memory_transfer_cache_entry.h" + ++#include <string.h> ++ + namespace cc { + + ClientRawMemoryTransferCacheEntry::ClientRawMemoryTransferCacheEntry( +-- +2.15.1 + diff --git a/www-client/chromium/files/chromium-mojo-ltm-83.patch b/www-client/chromium/files/chromium-mojo-ltm-83.patch new file mode 100644 index 0000000..f7ab5ee --- /dev/null +++ b/www-client/chromium/files/chromium-mojo-ltm-83.patch @@ -0,0 +1,84 @@ +From f47546873b1517d358815a26cebc6c4d51addbdb Mon Sep 17 00:00:00 2001 +From: Asa Karlsson <asaka@vewd.com> +Date: Wed, 11 Mar 2020 10:51:08 +0100 +Subject: [PATCH] Fix lifetime management of URLLoaderClient::OnUpdateProgress callback. + +The mojo setup for network URLLoader is a 3-way connection: + URLLoader <-> CorsURLLoader <-> URLLoaderClientImpl. + +The network::mojom::URLLoaderClient interface has one function with a +callback defined: URLLoaderClient::OnUpdateProgress. Depending on +timing, this callback may be in progress while the mojo connection is +torn down. If the callback (originating in URLLoader) is in transfer +from CorsURLLoader to URLLoaderClientImpl at that time, the callback +would be dropped (destroyed) due to Receiver (URLLoaderClientImpl) +being destroyed. Since the callback was successfully handed over to +CorsURLLoader first, this will lead to a mojo DCHECK for "<callback> +was destroyed without first either being run or its corresponding +binding being closed". + +By storing the callback in CorsURLLoader and calling it on mojo +disconnect, running the callback is ensured also at untimely +disconnects. + +Bug: 1060502 +Change-Id: Iaedeac975508b3c0e5b4819d4f0b1a061f9c5460 +--- + +diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc +index c25dded..e51d916 100644 +--- a/services/network/cors/cors_url_loader.cc ++++ b/services/network/cors/cors_url_loader.cc +@@ -383,8 +383,20 @@ + OnUploadProgressCallback ack_callback) { + DCHECK(network_loader_); + DCHECK(forwarding_client_); +- forwarding_client_->OnUploadProgress(current_position, total_size, +- std::move(ack_callback)); ++ ++ // We need to store the original callback here to allow us to call ++ // it during mojo disconnect in the case the OnUploadProgress has ++ // not reached the forwarding_client_ yet. Otherwise, the ++ // un-triggered callback will generate a DCHECK when destroyed. ++ pending_upoad_callback_ = std::move(ack_callback); ++ forwarding_client_->OnUploadProgress( ++ current_position, total_size, ++ base::BindOnce(&CorsURLLoader::OnUploadProgressACK, ++ weak_factory_.GetWeakPtr())); ++} ++ ++void CorsURLLoader::OnUploadProgressACK() { ++ std::move(pending_upoad_callback_).Run(); + } + + void CorsURLLoader::OnReceiveCachedMetadata(mojo_base::BigBuffer data) { +@@ -538,6 +550,8 @@ + } + + void CorsURLLoader::OnMojoDisconnect() { ++ if (pending_upoad_callback_) ++ std::move(pending_upoad_callback_).Run(); + HandleComplete(URLLoaderCompletionStatus(net::ERR_ABORTED)); + } + +diff --git a/services/network/cors/cors_url_loader.h b/services/network/cors/cors_url_loader.h +index 3f47a81..6611c6e 100644 +--- a/services/network/cors/cors_url_loader.h ++++ b/services/network/cors/cors_url_loader.h +@@ -108,6 +108,8 @@ + // Handles OnComplete() callback. + void HandleComplete(const URLLoaderCompletionStatus& status); + ++ void OnUploadProgressACK(); ++ + void OnMojoDisconnect(); + + void SetCorsFlagIfNeeded(); +@@ -124,6 +126,7 @@ + const std::string& header_name); + + mojo::Receiver<mojom::URLLoader> receiver_; ++ OnUploadProgressCallback pending_upoad_callback_; + + // We need to save these for redirect, and DevTools. + const int32_t process_id_; diff --git a/www-client/chromium/files/chromium-nearby-inc-86.patch b/www-client/chromium/files/chromium-nearby-inc-86.patch new file mode 100644 index 0000000..2fd2187 --- /dev/null +++ b/www-client/chromium/files/chromium-nearby-inc-86.patch @@ -0,0 +1,10 @@ +--- a/third_party/nearby/src/cpp/platform_v2/base/byte_array.h 2020-07-31 09:49:49.073719408 +0800 ++++ b/third_party/nearby/src/cpp/platform_v2/base/byte_array.h 2020-07-31 09:50:00.025843476 +0800 +@@ -17,6 +17,7 @@ + + #include <array> + #include <cstdint> ++#include <cstring> + #include <string> + #include <type_traits> + #include <utility> diff --git a/www-client/chromium/files/chromium-ngphyscontainer-iterator-cat-83.patch b/www-client/chromium/files/chromium-ngphyscontainer-iterator-cat-83.patch new file mode 100644 index 0000000..1ab52d5 --- /dev/null +++ b/www-client/chromium/files/chromium-ngphyscontainer-iterator-cat-83.patch @@ -0,0 +1,17 @@ +diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h +index b3c7624f4..6efe44a66 100644 +--- a/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h ++++ b/third_party/blink/renderer/core/layout/ng/ng_physical_container_fragment.h +@@ -51,6 +51,12 @@ class CORE_EXPORT NGPhysicalContainerFragment : public NGPhysicalFragment { + return current_ != other.current_; + } + ++ using iterator_category = std::forward_iterator_tag; ++ using value_type = NGLink*; ++ using reference = value_type&; ++ using pointer = value_type*; ++ using difference_type = ptrdiff_t; ++ + private: + const NGLink* PostLayoutOrCurrent() const { + post_layout_.fragment = current_->fragment->PostLayout(); diff --git a/www-client/chromium/files/chromium-noexcept-2.patch b/www-client/chromium/files/chromium-noexcept-2.patch new file mode 100644 index 0000000..16aa76b --- /dev/null +++ b/www-client/chromium/files/chromium-noexcept-2.patch @@ -0,0 +1,26 @@ +diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +index 5c72abe4f..5e30c24d2 100644 +--- a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc ++++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +@@ -803,7 +803,7 @@ CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( + callback(std::move(callback)) {} + + CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( +- DoLaunchSessionParams&& other) noexcept = default; ++ DoLaunchSessionParams&& other) = default; + + CastActivityManager::DoLaunchSessionParams::~DoLaunchSessionParams() = default; + +diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.h b/chrome/browser/media/router/providers/cast/cast_activity_manager.h +index 325bffc72..08fe0ccca 100644 +--- a/chrome/browser/media/router/providers/cast/cast_activity_manager.h ++++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.h +@@ -295,7 +295,7 @@ class CastActivityManager : public cast_channel::CastMessageHandler::Observer, + const url::Origin& origin, + int tab_id, + mojom::MediaRouteProvider::CreateRouteCallback callback); +- DoLaunchSessionParams(DoLaunchSessionParams&& other) noexcept; ++ DoLaunchSessionParams(DoLaunchSessionParams&& other); + ~DoLaunchSessionParams(); + DoLaunchSessionParams& operator=(DoLaunchSessionParams&&) = delete; + diff --git a/www-client/chromium/files/chromium-noexcept-3.patch b/www-client/chromium/files/chromium-noexcept-3.patch new file mode 100644 index 0000000..b5ca5a3 --- /dev/null +++ b/www-client/chromium/files/chromium-noexcept-3.patch @@ -0,0 +1,26 @@ +diff --git a/storage/browser/fileapi/file_system_url.cc b/storage/browser/fileapi/file_system_url.cc +index b90cf2904..e28b1f85d 100644 +--- a/storage/browser/fileapi/file_system_url.cc ++++ b/storage/browser/fileapi/file_system_url.cc +@@ -26,7 +26,7 @@ FileSystemURL::FileSystemURL() + + FileSystemURL::FileSystemURL(const FileSystemURL& other) = default; + +-FileSystemURL::FileSystemURL(FileSystemURL&& other) noexcept = default; ++FileSystemURL::FileSystemURL(FileSystemURL&& other) = default; + + FileSystemURL& FileSystemURL::operator=(FileSystemURL&& rhs) = default; + +diff --git a/storage/browser/fileapi/file_system_url.h b/storage/browser/fileapi/file_system_url.h +index 8220812d0..f6b8813e2 100644 +--- a/storage/browser/fileapi/file_system_url.h ++++ b/storage/browser/fileapi/file_system_url.h +@@ -82,7 +82,7 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) FileSystemURL { + FileSystemURL(const FileSystemURL& other); + // Constructs FileSystemURL with the contents of |other|, which is left in + // valid but unspecified state. +- FileSystemURL(FileSystemURL&& other) noexcept; ++ FileSystemURL(FileSystemURL&& other); + ~FileSystemURL(); + + // Replaces the contents with those of |rhs|, which is left in valid but diff --git a/www-client/chromium/files/chromium-noexcept.patch b/www-client/chromium/files/chromium-noexcept.patch new file mode 100644 index 0000000..70948a8 --- /dev/null +++ b/www-client/chromium/files/chromium-noexcept.patch @@ -0,0 +1,26 @@ +diff --git a/media/learning/common/labelled_example.cc b/media/learning/common/labelled_example.cc +index 6c8cb7d34..370b6bb05 100644 +--- a/media/learning/common/labelled_example.cc ++++ b/media/learning/common/labelled_example.cc +@@ -17,7 +17,7 @@ LabelledExample::LabelledExample(std::initializer_list<FeatureValue> init_list, + + LabelledExample::LabelledExample(const LabelledExample& rhs) = default; + +-LabelledExample::LabelledExample(LabelledExample&& rhs) noexcept = default; ++LabelledExample::LabelledExample(LabelledExample&& rhs) = default; + + LabelledExample::~LabelledExample() = default; + +diff --git a/media/learning/common/labelled_example.h b/media/learning/common/labelled_example.h +index ee89586f5..b203a567c 100644 +--- a/media/learning/common/labelled_example.h ++++ b/media/learning/common/labelled_example.h +@@ -31,7 +31,7 @@ struct COMPONENT_EXPORT(LEARNING_COMMON) LabelledExample { + LabelledExample(std::initializer_list<FeatureValue> init_list, + TargetValue target); + LabelledExample(const LabelledExample& rhs); +- LabelledExample(LabelledExample&& rhs) noexcept; ++ LabelledExample(LabelledExample&& rhs); + ~LabelledExample(); + + // Comparisons ignore weight, because it's convenient. diff --git a/www-client/chromium/files/chromium-ntp_backgrounds-include-84.patch b/www-client/chromium/files/chromium-ntp_backgrounds-include-84.patch new file mode 100644 index 0000000..bd98ef0 --- /dev/null +++ b/www-client/chromium/files/chromium-ntp_backgrounds-include-84.patch @@ -0,0 +1,12 @@ +diff --git a/chrome/browser/search/background/ntp_backgrounds.h b/chrome/browser/search/background/ntp_backgrounds.h +index 7afc0a230..6a6ad3b48 100644 +--- a/chrome/browser/search/background/ntp_backgrounds.h ++++ b/chrome/browser/search/background/ntp_backgrounds.h +@@ -5,6 +5,7 @@ + #ifndef CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_ + #define CHROME_BROWSER_SEARCH_BACKGROUND_NTP_BACKGROUNDS_H_ + ++#include <cstddef> + #include <array> + + class GURL; diff --git a/www-client/chromium/files/chromium-opencv-include-84.patch b/www-client/chromium/files/chromium-opencv-include-84.patch new file mode 100644 index 0000000..4c7b328 --- /dev/null +++ b/www-client/chromium/files/chromium-opencv-include-84.patch @@ -0,0 +1,12 @@ +diff --git a/third_party/opencv/src/emd.cpp b/third_party/opencv/src/emd.cpp +index 30b19f676..834ebe9f4 100644 +--- a/third_party/opencv/src/emd.cpp ++++ b/third_party/opencv/src/emd.cpp +@@ -59,6 +59,7 @@ + #ifdef CHROMIUM_OPENCV + #include "emd_wrapper.h" + ++#include <algorithm> + #include <vector> + #include <cassert> + diff --git a/www-client/chromium/files/chromium-pa13.patch b/www-client/chromium/files/chromium-pa13.patch new file mode 100644 index 0000000..892a318 --- /dev/null +++ b/www-client/chromium/files/chromium-pa13.patch @@ -0,0 +1,82 @@ +From 7ac85fb4cc6f44a21761a591ac497ae3d6bf966d Mon Sep 17 00:00:00 2001 +From: Allan Sandfeld Jensen <allan.jensen@qt.io> +Date: Mon, 23 Sep 2019 13:49:53 +0200 +Subject: [PATCH] Fix building with pulseaudio 13 + +The function signature changed though the ABI stayed the same. + +(Modified to apply on chromium sources too) + +Change-Id: I86ca361b5e4f0c523e1031910df438c23beee876 +Fixes: QTBUG-77037 +Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io> +--- + +diff --git a/media/audio/pulse/pulse.sigs b/media/audio/pulse/pulse.sigs +index 8b58887..daaeb14 100644 +--- a/media/audio/pulse/pulse.sigs ++++ b/media/audio/pulse/pulse.sigs +@@ -24,11 +24,11 @@ + pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata); + pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata); + pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata); +-pa_context_state_t pa_context_get_state(pa_context* c); ++pa_context_state_t pa_context_get_state(const_pa_context_ptr c); + pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name); + pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata); + void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata); +-pa_operation_state_t pa_operation_get_state(pa_operation* o); ++pa_operation_state_t pa_operation_get_state(const_pa_operation_ptr o); + void pa_context_unref(pa_context* c); + void pa_operation_unref(pa_operation* o); + int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes); +@@ -38,23 +38,23 @@ + int pa_stream_disconnect(pa_stream* s); + int pa_stream_drop(pa_stream *p); + pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata); +-uint32_t pa_stream_get_device_index(pa_stream* s); ++uint32_t pa_stream_get_device_index(const_pa_stream_ptr s); + int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative); +-pa_stream_state_t pa_stream_get_state(pa_stream* p); ++pa_stream_state_t pa_stream_get_state(const_pa_stream_ptr p); + pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map); + pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p); + pa_proplist* pa_proplist_new(void); +-int pa_proplist_contains(pa_proplist* p, const char* key); ++int pa_proplist_contains(const_pa_proplist_ptr p, const char* key); + void pa_proplist_free(pa_proplist* p); +-const char* pa_proplist_gets(pa_proplist* p, const char* key); ++const char* pa_proplist_gets(const_pa_proplist_ptr p, const char* key); + int pa_proplist_sets(pa_proplist* p, const char* key, const char* value); +-size_t pa_stream_readable_size(pa_stream *p); ++size_t pa_stream_readable_size(const_pa_stream_ptr p); + int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes); + void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata); + void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata); + int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek); + void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata); + void pa_stream_unref(pa_stream* s); +-int pa_context_errno(pa_context *c); ++int pa_context_errno(const_pa_context_ptr c); + const char* pa_strerror(int error); + pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v); +diff --git a/chromium/media/audio/pulse/pulse_stub_header.fragment b/chromium/media/audio/pulse/pulse_stub_header.fragment +index 2a2d3e7..cdaa841 100644 +--- a/media/audio/pulse/pulse_stub_header.fragment ++++ b/media/audio/pulse/pulse_stub_header.fragment +@@ -5,4 +5,15 @@ + + #include <pulse/pulseaudio.h> + ++#if PA_MAJOR > 12 ++typedef const pa_context* const_pa_context_ptr; ++typedef const pa_operation* const_pa_operation_ptr; ++typedef const pa_proplist* const_pa_proplist_ptr; ++typedef const pa_stream* const_pa_stream_ptr; ++#else ++typedef pa_context* const_pa_context_ptr; ++typedef pa_operation* const_pa_operation_ptr; ++typedef pa_proplist* const_pa_proplist_ptr; ++typedef pa_stream* const_pa_stream_ptr; ++#endif + } diff --git a/www-client/chromium/files/chromium-pdfium-stdlib-r0.patch b/www-client/chromium/files/chromium-pdfium-stdlib-r0.patch new file mode 100644 index 0000000..1cfa4c5 --- /dev/null +++ b/www-client/chromium/files/chromium-pdfium-stdlib-r0.patch @@ -0,0 +1,30 @@ +From e3ad3deb6a6e79284f3748fa7410311d87df91c5 Mon Sep 17 00:00:00 2001 +From: Henrique Nakashima <hnakashima@chromium.org> +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 <thestig@chromium.org> +Commit-Queue: Henrique Nakashima <hnakashima@chromium.org> +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 03c54bb63800..82e82d23684d 100644 +--- a/pdf/pdfium/pdfium_mem_buffer_file_write.h ++++ b/pdf/pdfium/pdfium_mem_buffer_file_write.h +@@ -6,6 +6,7 @@ + #define PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_H_ + + #include <stddef.h> ++#include <stdint.h> + + #include <vector> + +-- +2.19.0 + diff --git a/www-client/chromium/files/chromium-remove-no_check_targets-86.patch b/www-client/chromium/files/chromium-remove-no_check_targets-86.patch new file mode 100644 index 0000000..7661b32 --- /dev/null +++ b/www-client/chromium/files/chromium-remove-no_check_targets-86.patch @@ -0,0 +1,621 @@ +diff --git a/.gn b/.gn +index 3afb64ba2..b239e02c3 100644 +--- a/.gn ++++ b/.gn +@@ -55,311 +55,311 @@ default_args = { + # matching these patterns (see "gn help label_pattern" for format) will not have + # their includes checked for proper dependencies when you run either + # "gn check" or "gn gen --check". +-no_check_targets = [ +- # //chrome/*, https://crbug.com/949535 +- "//chrome/browser/devtools:*", # 114 errors +- "//chrome/browser/media/router/discovery:*", # 26 errors +- "//chrome/browser/media/router:*", # 225 errors +- "//chrome/browser/paint_preview:*", # 4 errors +- "//chrome/browser/profiling_host:*", # 13 errors +- "//chrome/browser/resources/chromeos/zip_archiver/cpp:*", # 2 errors +- "//chrome/browser/safe_browsing/android:*", # 3 errors +- "//chrome/browser/safe_browsing:*", # 85 errors +- "//chrome/browser/safety_check/android:*", # 3 errors +- "//chrome/browser/storage_access_api:*", # 2 errors +- "//chrome/browser/touch_to_fill/android:*", # 8 errors +- "//chrome/browser/touch_to_fill:*", # 5 errors +- "//chrome/browser/updates/announcement_notification:*", # 15 errors +- "//chrome/browser/updates/internal:*", # 8 errors +- "//chrome/browser/updates:*", # 21 errors +- "//chrome/browser:*", # 780 errors +- "//chrome/child:*", # 3 errors +- "//chrome/credential_provider/gaiacp:*", # 1 error +- "//chrome/gpu:*", # 2 errors +- "//chrome/install_static:*", # 4 errors +- "//chrome/notification_helper:*", # 4 errors +- "//chrome/renderer:*", # 42 errors +- "//chrome/services/cups_proxy/public/cpp:*", # 2 errors +- "//chrome/services/cups_proxy:*", # 6 errors +- "//chrome/services/file_util/public/cpp:*", # 13 errors +- "//chrome/services/file_util:*", # 3 errors +- "//chrome/services/ipp_parser:*", # 1 error +- "//chrome/services/media_gallery_util/public/cpp:*", # 6 errors +- "//chrome/services/media_gallery_util:*", # 3 errors +- "//chrome/services/printing:*", # 3 errors +- "//chrome/services/qrcode_generator:*", # 1 error +- "//chrome/services/removable_storage_writer:*", # 1 error +- "//chrome/services/sharing/public/cpp:*", # 2 errors +- "//chrome/services/speech:*", # 5 errors +- "//chrome/services/util_win:*", # 1 error +- "//chrome/test/chromedriver:*", # 115 errors +- "//chrome/test/data/nacl:*", # 350 errors +- "//chrome/test/media_router:*", # 5 errors +- "//chrome/test:*", # 2682 errors +- "//chrome:*", # 7 errors +- +- "//clank/third_party/gvr_shim:*", # 1 error +- "//extensions/browser/api/alarms:*", # 2 errors +- "//extensions/browser/api/app_current_window_internal:*", # 3 errors +- "//extensions/browser/api/app_runtime:*", # 3 errors +- "//extensions/browser/api/app_window:*", # 5 errors +- "//extensions/browser/api/audio:*", # 3 errors +- "//extensions/browser/api/automation_internal:*", # 37 errors +- "//extensions/browser/api/bluetooth_low_energy:*", # 22 errors +- "//extensions/browser/api/bluetooth_socket:*", # 12 errors +- "//extensions/browser/api/cast_channel:*", # 3 errors +- "//extensions/browser/api/cec_private:*", # 4 errors +- "//extensions/browser/api/clipboard:*", # 3 errors +- "//extensions/browser/api/crash_report_private:*", # 1 error +- "//extensions/browser/api/declarative:*", # 20 errors +- "//extensions/browser/api/declarative_content:*", # 2 errors +- "//extensions/browser/api/declarative_net_request/filter_list_converter:*", # 1 +- # error +- "//extensions/browser/api/declarative_net_request:*", # 18 errors +- "//extensions/browser/api/declarative_webrequest:*", # 29 errors +- "//extensions/browser/api/diagnostics:*", # 2 errors +- "//extensions/browser/api/display_source:*", # 7 errors +- "//extensions/browser/api/dns:*", # 3 errors +- "//extensions/browser/api/document_scan:*", # 2 errors +- "//extensions/browser/api/feedback_private:*", # 2 errors +- "//extensions/browser/api/file_handlers:*", # 3 errors +- "//extensions/browser/api/file_system:*", # 1 error +- "//extensions/browser/api/hid:*", # 12 errors +- "//extensions/browser/api/idle:*", # 4 errors +- "//extensions/browser/api/management:*", # 19 errors +- "//extensions/browser/api/messaging:*", # 1 error +- "//extensions/browser/api/metrics_private:*", # 3 errors +- "//extensions/browser/api/mime_handler_private:*", # 1 error +- "//extensions/browser/api/networking_config:*", # 7 errors +- "//extensions/browser/api/networking_private:*", # 14 errors +- "//extensions/browser/api/power:*", # 3 errors +- "//extensions/browser/api/printer_provider:*", # 7 errors +- "//extensions/browser/api/printer_provider_internal:*", # 3 errors +- "//extensions/browser/api/runtime:*", # 6 errors +- "//extensions/browser/api/serial:*", # 10 errors +- "//extensions/browser/api/socket:*", # 11 errors +- "//extensions/browser/api/sockets_tcp:*", # 6 errors +- "//extensions/browser/api/sockets_tcp_server:*", # 8 errors +- "//extensions/browser/api/sockets_udp:*", # 9 errors +- "//extensions/browser/api/storage:*", # 9 errors +- "//extensions/browser/api/system_cpu:*", # 1 error +- "//extensions/browser/api/system_display:*", # 3 errors +- "//extensions/browser/api/system_info:*", # 8 errors +- "//extensions/browser/api/system_memory:*", # 1 error +- "//extensions/browser/api/system_network:*", # 2 errors +- "//extensions/browser/api/system_power_source:*", # 2 errors +- "//extensions/browser/api/system_storage:*", # 6 errors +- "//extensions/browser/api/test:*", # 1 error +- "//extensions/browser/api/usb:*", # 12 errors +- "//extensions/browser/api/virtual_keyboard:*", # 1 error +- "//extensions/browser/api/virtual_keyboard_private:*", # 2 errors +- "//extensions/browser/api/vpn_provider:*", # 13 errors +- "//extensions/browser/api/web_request:*", # 37 errors +- "//extensions/browser/api/webcam_private:*", # 8 errors +- "//extensions/browser/api:*", # 7 errors +- "//extensions/browser/updater:*", # 31 errors +- "//extensions/browser/value_store:*", # 5 errors +- "//extensions/browser:*", # 20 errors +- "//extensions:*", # 75 errors +- "//headless:*", # 167 errors +- "//jingle:*", # 4 errors +- "//native_client/src/trusted/service_runtime:*", # 2 errors +- "//ppapi/cpp/private:*", # 1 error +- "//ppapi/host:*", # 1 error +- "//ppapi/native_client/src/untrusted/pnacl_irt_shim:*", # 197 errors +- "//ppapi/proxy:*", # 31 errors +- "//ppapi/shared_impl:*", # 3 errors +- "//ppapi/thunk:*", # 1071 errors +- "//ppapi:*", # 3 errors +- "//remoting/base/grpc_support:*", # 14 errors +- "//remoting/base/grpc_test_support:*", # 1 error +- "//remoting/base:*", # 6 errors +- "//remoting/client/audio:*", # 7 errors +- "//remoting/client/display:*", # 55 errors +- "//remoting/client/input:*", # 17 errors +- "//remoting/client/jni:*", # 8 errors +- "//remoting/client/notification:*", # 12 errors +- "//remoting/client/ui:*", # 13 errors +- "//remoting/client:*", # 20 errors +- "//remoting/codec:*", # 32 errors +- "//remoting/host/chromeos:*", # 10 errors +- "//remoting/host/file_transfer:*", # 43 errors +- "//remoting/host/input_monitor:*", # 3 errors +- "//remoting/host/installer/mac:*", # 1 error +- "//remoting/host/it2me:*", # 18 errors +- "//remoting/host/linux:*", # 64 errors +- "//remoting/host/mac:*", # 49 errors +- "//remoting/host/native_messaging:*", # 3 errors +- "//remoting/host/security_key:*", # 68 errors +- "//remoting/host/setup:*", # 9 errors +- "//remoting/host/win:*", # 43 errors +- "//remoting/host:*", # 164 errors +- "//remoting/ios/app/settings:*", # 6 errors +- "//remoting/ios/app:*", # 9 errors +- "//remoting/ios/audio:*", # 5 errors +- "//remoting/ios/domain:*", # 2 errors +- "//remoting/ios/facade:*", # 8 errors +- "//remoting/ios/persistence:*", # 10 errors +- "//remoting/ios/session:*", # 7 errors +- "//remoting/ios:*", # 2 errors +- "//remoting/protocol:*", # 142 errors +- "//remoting/signaling:*", # 30 errors +- "//remoting/test:*", # 20 errors +- "//remoting:*", # 27 errors +- "//sandbox/linux:*", # 13 errors +- "//sandbox/mac:*", # 14 errors +- "//sandbox/win:*", # 7 errors +- +- # //third_party/blink/*, https://crbug.com/800764 +- "//third_party/blink/common:*", # 9 errors +- "//third_party/blink/renderer/bindings/core/v8:*", # 1 error +- "//third_party/blink/renderer/controller:*", # 191 errors +- "//third_party/blink/renderer/core/accessibility:*", # 27 errors +- "//third_party/blink/renderer/core/animation:*", # 506 errors +- "//third_party/blink/renderer/core/animation_frame:*", # 4 errors +- "//third_party/blink/renderer/core/aom:*", # 23 errors +- "//third_party/blink/renderer/core/clipboard:*", # 43 errors +- "//third_party/blink/renderer/core/content_capture:*", # 12 errors +- "//third_party/blink/renderer/core/context_features:*", # 3 errors +- "//third_party/blink/renderer/core/css:*", # 835 errors +- "//third_party/blink/renderer/core/display_lock:*", # 36 errors +- "//third_party/blink/renderer/core/dom:*", # 706 errors +- "//third_party/blink/renderer/core/editing:*", # 847 errors +- "//third_party/blink/renderer/core/events:*", # 173 errors +- "//third_party/blink/renderer/core/execution_context:*", # 48 errors +- "//third_party/blink/renderer/core/exported:*", # 470 errors +- "//third_party/blink/renderer/core/feature_policy:*", # 15 errors +- "//third_party/blink/renderer/core/fetch:*", # 134 errors +- "//third_party/blink/renderer/core/fileapi:*", # 55 errors +- "//third_party/blink/renderer/core/frame:*", # 864 errors +- "//third_party/blink/renderer/core/fullscreen:*", # 32 errors +- "//third_party/blink/renderer/core/geometry:*", # 39 errors +- "//third_party/blink/renderer/core/html/parser:*", # 133 errors +- "//third_party/blink/renderer/core/html:*", # 1662 errors +- "//third_party/blink/renderer/core/imagebitmap:*", # 34 errors +- "//third_party/blink/renderer/core/input:*", # 240 errors +- "//third_party/blink/renderer/core/inspector:*", # 594 errors +- "//third_party/blink/renderer/core/intersection_observer:*", # 50 errors +- "//third_party/blink/renderer/core/layout/svg:*", # 193 errors +- "//third_party/blink/renderer/core/layout:*", # 920 errors +- "//third_party/blink/renderer/core/loader:*", # 421 errors +- "//third_party/blink/renderer/core/mathml:*", # 11 errors +- "//third_party/blink/renderer/core/messaging:*", # 30 errors +- "//third_party/blink/renderer/core/mojo:*", # 44 errors +- "//third_party/blink/renderer/core/offscreencanvas:*", # 22 errors +- "//third_party/blink/renderer/core/origin_trials:*", # 12 errors +- "//third_party/blink/renderer/core/page:*", # 500 errors +- "//third_party/blink/renderer/core/paint:*", # 788 errors +- "//third_party/blink/renderer/core/probe:*", # 9 errors +- "//third_party/blink/renderer/core/resize_observer:*", # 29 errors +- "//third_party/blink/renderer/core/script:*", # 155 errors +- "//third_party/blink/renderer/core/scroll:*", # 29 errors +- "//third_party/blink/renderer/core/streams:*", # 75 errors +- "//third_party/blink/renderer/core/style:*", # 86 errors +- "//third_party/blink/renderer/core/svg:*", # 297 errors +- "//third_party/blink/renderer/core/timezone:*", # 8 errors +- "//third_party/blink/renderer/core/timing:*", # 170 errors +- "//third_party/blink/renderer/core/trustedtypes:*", # 27 errors +- "//third_party/blink/renderer/core/typed_arrays:*", # 24 errors +- "//third_party/blink/renderer/core/url:*", # 7 errors +- "//third_party/blink/renderer/core/workers:*", # 289 errors +- "//third_party/blink/renderer/core/xml:*", # 119 errors +- "//third_party/blink/renderer/core/xmlhttprequest:*", # 49 errors +- "//third_party/blink/renderer/core:*", # 823 errors +- "//third_party/blink/renderer/modules/accessibility:*", # 7 errors +- "//third_party/blink/renderer/modules/animationworklet:*", # 1 error +- "//third_party/blink/renderer/modules/background_fetch:*", # 4 errors +- "//third_party/blink/renderer/modules/background_sync:*", # 6 errors +- "//third_party/blink/renderer/modules/cache_storage:*", # 3 errors +- "//third_party/blink/renderer/modules/canvas:*", # 1 error +- "//third_party/blink/renderer/modules/clipboard:*", # 1 error +- "//third_party/blink/renderer/modules/contacts_picker:*", # 1 error +- "//third_party/blink/renderer/modules/content_index:*", # 3 errors +- "//third_party/blink/renderer/modules/cookie_store:*", # 8 errors +- "//third_party/blink/renderer/modules/credentialmanager:*", # 1 error +- "//third_party/blink/renderer/modules/csspaint:*", # 2 errors +- "//third_party/blink/renderer/modules/device_orientation:*", # 5 errors +- "//third_party/blink/renderer/modules/encryptedmedia:*", # 3 errors +- "//third_party/blink/renderer/modules/exported:*", # 16 errors +- "//third_party/blink/renderer/modules/font_access:*", # 3 errors +- "//third_party/blink/renderer/modules/gamepad:*", # 1 error +- "//third_party/blink/renderer/modules/imagecapture:*", # 2 errors +- "//third_party/blink/renderer/modules/installedapp:*", # 1 error +- "//third_party/blink/renderer/modules/launch:*", # 3 errors +- "//third_party/blink/renderer/modules/manifest:*", # 2 errors +- "//third_party/blink/renderer/modules/media_capabilities:*", # 5 errors +- "//third_party/blink/renderer/modules/media_controls:*", # 31 errors +- "//third_party/blink/renderer/modules/mediacapturefromelement:*", # 14 errors +- "//third_party/blink/renderer/modules/mediarecorder:*", # 1 error +- "//third_party/blink/renderer/modules/mediastream:*", # 29 errors +- "//third_party/blink/renderer/modules/native_file_system:*", # 2 errors +- "//third_party/blink/renderer/modules/nfc:*", # 2 errors +- "//third_party/blink/renderer/modules/notifications:*", # 5 errors +- "//third_party/blink/renderer/modules/payments/goods:*", # 1 error +- "//third_party/blink/renderer/modules/payments:*", # 22 errors +- "//third_party/blink/renderer/modules/peerconnection:*", # 43 errors +- "//third_party/blink/renderer/modules/push_messaging:*", # 12 errors +- "//third_party/blink/renderer/modules/quota:*", # 1 error +- "//third_party/blink/renderer/modules/remoteplayback:*", # 3 errors +- "//third_party/blink/renderer/modules/serial:*", # 1 error +- "//third_party/blink/renderer/modules/service_worker:*", # 23 errors +- "//third_party/blink/renderer/modules/shapedetection:*", # 4 errors +- "//third_party/blink/renderer/modules/srcobject:*", # 1 error +- "//third_party/blink/renderer/modules/storage:*", # 3 errors +- "//third_party/blink/renderer/modules/wake_lock:*", # 1 error +- "//third_party/blink/renderer/modules/webaudio:*", # 5 errors +- "//third_party/blink/renderer/modules/webcodecs:*", # 13 errors +- "//third_party/blink/renderer/modules/webgl:*", # 3 errors +- "//third_party/blink/renderer/modules/webgpu:*", # 6 errors +- "//third_party/blink/renderer/modules/webmidi:*", # 1 error +- "//third_party/blink/renderer/modules/webtransport:*", # 16 errors +- "//third_party/blink/renderer/modules/worklet:*", # 2 errors +- "//third_party/blink/renderer/modules/xr:*", # 13 errors +- "//third_party/blink/renderer/modules:*", # 321 errors +- "//third_party/blink/renderer/platform/blob:*", # 16 errors +- "//third_party/blink/renderer/platform/heap:*", # 65 errors +- "//third_party/blink/renderer/platform/instrumentation:*", # 13 errors +- "//third_party/blink/renderer/platform/loader:*", # 180 errors +- "//third_party/blink/renderer/platform/network:*", # 15 errors +- "//third_party/blink/renderer/platform/scheduler:*", # 45 errors +- "//third_party/blink/renderer/platform/wtf:*", # 2 errors +- "//third_party/blink/renderer/platform:*", # 72 errors +- +- "//third_party/breakpad:*", # 34 errors +- "//third_party/ced/*", +- "//third_party/crashpad/crashpad/client:*", # 1 error +- "//third_party/crashpad/crashpad/compat:*", # 2 errors +- "//third_party/crashpad/crashpad/snapshot:*", # 1 error +- "//third_party/crashpad/crashpad/test:*", # 2 errors +- "//third_party/crashpad/crashpad/util:*", # 2 errors +- "//third_party/dav1d:*", # 95 errors +- "//third_party/ffmpeg:*", # 1 error +- "//third_party/icu/*", +- "//third_party/libvpx:*", # 164 errors +- "//third_party/libwebp:*", # 80 errors, https://crbug.com/800762 +- "//third_party/openscreen/src/cast/common:*", # 4 errors +- "//third_party/openscreen/src/cast/receiver:*", # 1 error +- "//third_party/openscreen/src/cast/streaming:*", # 66 errors +- "//third_party/openscreen/src/discovery:*", # 36 errors +- "//third_party/openscreen/src/osp/impl/quic:*", # 16 errors +- "//third_party/openscreen/src/osp/msgs:*", # 5 errors +- "//third_party/openscreen/src/osp/public:*", # 1 error +- "//third_party/openscreen/src/osp:*", # 13 errors +- "//third_party/openscreen/src/util:*", # 29 errors +- "//third_party/pdfium/samples:*", # 1 error +- "//third_party/pdfium/third_party:*", # 2 errors +- "//third_party/pdfium:*", # 1 error +- +- # //v8/*, https://crbug.com/v8/7330 +- "//v8/src/inspector:*", # 20 errors +- "//v8/test/cctest:*", # 26 errors +- "//v8/test/unittests:*", # 11 errors +- "//v8/test/wasm-api-tests:*", # 13 errors +- "//v8/third_party/inspector_protocol:*", # 2 errors +- "//v8/tools/debug_helper:*", # 9 errors +- "//v8/tools/v8windbg:*", # 2 errors +- "//v8:*", # 1871 errors +-] ++#no_check_targets = [ ++# # //chrome/*, https://crbug.com/949535 ++# "//chrome/browser/devtools:*", # 114 errors ++# "//chrome/browser/media/router/discovery:*", # 26 errors ++# "//chrome/browser/media/router:*", # 225 errors ++# "//chrome/browser/paint_preview:*", # 4 errors ++# "//chrome/browser/profiling_host:*", # 13 errors ++# "//chrome/browser/resources/chromeos/zip_archiver/cpp:*", # 2 errors ++# "//chrome/browser/safe_browsing/android:*", # 3 errors ++# "//chrome/browser/safe_browsing:*", # 85 errors ++# "//chrome/browser/safety_check/android:*", # 3 errors ++# "//chrome/browser/storage_access_api:*", # 2 errors ++# "//chrome/browser/touch_to_fill/android:*", # 8 errors ++# "//chrome/browser/touch_to_fill:*", # 5 errors ++# "//chrome/browser/updates/announcement_notification:*", # 15 errors ++# "//chrome/browser/updates/internal:*", # 8 errors ++# "//chrome/browser/updates:*", # 21 errors ++# "//chrome/browser:*", # 780 errors ++# "//chrome/child:*", # 3 errors ++# "//chrome/credential_provider/gaiacp:*", # 1 error ++# "//chrome/gpu:*", # 2 errors ++# "//chrome/install_static:*", # 4 errors ++# "//chrome/notification_helper:*", # 4 errors ++# "//chrome/renderer:*", # 42 errors ++# "//chrome/services/cups_proxy/public/cpp:*", # 2 errors ++# "//chrome/services/cups_proxy:*", # 6 errors ++# "//chrome/services/file_util/public/cpp:*", # 13 errors ++# "//chrome/services/file_util:*", # 3 errors ++# "//chrome/services/ipp_parser:*", # 1 error ++# "//chrome/services/media_gallery_util/public/cpp:*", # 6 errors ++# "//chrome/services/media_gallery_util:*", # 3 errors ++# "//chrome/services/printing:*", # 3 errors ++# "//chrome/services/qrcode_generator:*", # 1 error ++# "//chrome/services/removable_storage_writer:*", # 1 error ++# "//chrome/services/sharing/public/cpp:*", # 2 errors ++# "//chrome/services/speech:*", # 5 errors ++# "//chrome/services/util_win:*", # 1 error ++# "//chrome/test/chromedriver:*", # 115 errors ++# "//chrome/test/data/nacl:*", # 350 errors ++# "//chrome/test/media_router:*", # 5 errors ++# "//chrome/test:*", # 2682 errors ++# "//chrome:*", # 7 errors ++# ++# "//clank/third_party/gvr_shim:*", # 1 error ++# "//extensions/browser/api/alarms:*", # 2 errors ++# "//extensions/browser/api/app_current_window_internal:*", # 3 errors ++# "//extensions/browser/api/app_runtime:*", # 3 errors ++# "//extensions/browser/api/app_window:*", # 5 errors ++# "//extensions/browser/api/audio:*", # 3 errors ++# "//extensions/browser/api/automation_internal:*", # 37 errors ++# "//extensions/browser/api/bluetooth_low_energy:*", # 22 errors ++# "//extensions/browser/api/bluetooth_socket:*", # 12 errors ++# "//extensions/browser/api/cast_channel:*", # 3 errors ++# "//extensions/browser/api/cec_private:*", # 4 errors ++# "//extensions/browser/api/clipboard:*", # 3 errors ++# "//extensions/browser/api/crash_report_private:*", # 1 error ++# "//extensions/browser/api/declarative:*", # 20 errors ++# "//extensions/browser/api/declarative_content:*", # 2 errors ++# "//extensions/browser/api/declarative_net_request/filter_list_converter:*", # 1 ++# # error ++# "//extensions/browser/api/declarative_net_request:*", # 18 errors ++# "//extensions/browser/api/declarative_webrequest:*", # 29 errors ++# "//extensions/browser/api/diagnostics:*", # 2 errors ++# "//extensions/browser/api/display_source:*", # 7 errors ++# "//extensions/browser/api/dns:*", # 3 errors ++# "//extensions/browser/api/document_scan:*", # 2 errors ++# "//extensions/browser/api/feedback_private:*", # 2 errors ++# "//extensions/browser/api/file_handlers:*", # 3 errors ++# "//extensions/browser/api/file_system:*", # 1 error ++# "//extensions/browser/api/hid:*", # 12 errors ++# "//extensions/browser/api/idle:*", # 4 errors ++# "//extensions/browser/api/management:*", # 19 errors ++# "//extensions/browser/api/messaging:*", # 1 error ++# "//extensions/browser/api/metrics_private:*", # 3 errors ++# "//extensions/browser/api/mime_handler_private:*", # 1 error ++# "//extensions/browser/api/networking_config:*", # 7 errors ++# "//extensions/browser/api/networking_private:*", # 14 errors ++# "//extensions/browser/api/power:*", # 3 errors ++# "//extensions/browser/api/printer_provider:*", # 7 errors ++# "//extensions/browser/api/printer_provider_internal:*", # 3 errors ++# "//extensions/browser/api/runtime:*", # 6 errors ++# "//extensions/browser/api/serial:*", # 10 errors ++# "//extensions/browser/api/socket:*", # 11 errors ++# "//extensions/browser/api/sockets_tcp:*", # 6 errors ++# "//extensions/browser/api/sockets_tcp_server:*", # 8 errors ++# "//extensions/browser/api/sockets_udp:*", # 9 errors ++# "//extensions/browser/api/storage:*", # 9 errors ++# "//extensions/browser/api/system_cpu:*", # 1 error ++# "//extensions/browser/api/system_display:*", # 3 errors ++# "//extensions/browser/api/system_info:*", # 8 errors ++# "//extensions/browser/api/system_memory:*", # 1 error ++# "//extensions/browser/api/system_network:*", # 2 errors ++# "//extensions/browser/api/system_power_source:*", # 2 errors ++# "//extensions/browser/api/system_storage:*", # 6 errors ++# "//extensions/browser/api/test:*", # 1 error ++# "//extensions/browser/api/usb:*", # 12 errors ++# "//extensions/browser/api/virtual_keyboard:*", # 1 error ++# "//extensions/browser/api/virtual_keyboard_private:*", # 2 errors ++# "//extensions/browser/api/vpn_provider:*", # 13 errors ++# "//extensions/browser/api/web_request:*", # 37 errors ++# "//extensions/browser/api/webcam_private:*", # 8 errors ++# "//extensions/browser/api:*", # 7 errors ++# "//extensions/browser/updater:*", # 31 errors ++# "//extensions/browser/value_store:*", # 5 errors ++# "//extensions/browser:*", # 20 errors ++# "//extensions:*", # 75 errors ++# "//headless:*", # 167 errors ++# "//jingle:*", # 4 errors ++# "//native_client/src/trusted/service_runtime:*", # 2 errors ++# "//ppapi/cpp/private:*", # 1 error ++# "//ppapi/host:*", # 1 error ++# "//ppapi/native_client/src/untrusted/pnacl_irt_shim:*", # 197 errors ++# "//ppapi/proxy:*", # 31 errors ++# "//ppapi/shared_impl:*", # 3 errors ++# "//ppapi/thunk:*", # 1071 errors ++# "//ppapi:*", # 3 errors ++# "//remoting/base/grpc_support:*", # 14 errors ++# "//remoting/base/grpc_test_support:*", # 1 error ++# "//remoting/base:*", # 6 errors ++# "//remoting/client/audio:*", # 7 errors ++# "//remoting/client/display:*", # 55 errors ++# "//remoting/client/input:*", # 17 errors ++# "//remoting/client/jni:*", # 8 errors ++# "//remoting/client/notification:*", # 12 errors ++# "//remoting/client/ui:*", # 13 errors ++# "//remoting/client:*", # 20 errors ++# "//remoting/codec:*", # 32 errors ++# "//remoting/host/chromeos:*", # 10 errors ++# "//remoting/host/file_transfer:*", # 43 errors ++# "//remoting/host/input_monitor:*", # 3 errors ++# "//remoting/host/installer/mac:*", # 1 error ++# "//remoting/host/it2me:*", # 18 errors ++# "//remoting/host/linux:*", # 64 errors ++# "//remoting/host/mac:*", # 49 errors ++# "//remoting/host/native_messaging:*", # 3 errors ++# "//remoting/host/security_key:*", # 68 errors ++# "//remoting/host/setup:*", # 9 errors ++# "//remoting/host/win:*", # 43 errors ++# "//remoting/host:*", # 164 errors ++# "//remoting/ios/app/settings:*", # 6 errors ++# "//remoting/ios/app:*", # 9 errors ++# "//remoting/ios/audio:*", # 5 errors ++# "//remoting/ios/domain:*", # 2 errors ++# "//remoting/ios/facade:*", # 8 errors ++# "//remoting/ios/persistence:*", # 10 errors ++# "//remoting/ios/session:*", # 7 errors ++# "//remoting/ios:*", # 2 errors ++# "//remoting/protocol:*", # 142 errors ++# "//remoting/signaling:*", # 30 errors ++# "//remoting/test:*", # 20 errors ++# "//remoting:*", # 27 errors ++# "//sandbox/linux:*", # 13 errors ++# "//sandbox/mac:*", # 14 errors ++# "//sandbox/win:*", # 7 errors ++# ++# # //third_party/blink/*, https://crbug.com/800764 ++# "//third_party/blink/common:*", # 9 errors ++# "//third_party/blink/renderer/bindings/core/v8:*", # 1 error ++# "//third_party/blink/renderer/controller:*", # 191 errors ++# "//third_party/blink/renderer/core/accessibility:*", # 27 errors ++# "//third_party/blink/renderer/core/animation:*", # 506 errors ++# "//third_party/blink/renderer/core/animation_frame:*", # 4 errors ++# "//third_party/blink/renderer/core/aom:*", # 23 errors ++# "//third_party/blink/renderer/core/clipboard:*", # 43 errors ++# "//third_party/blink/renderer/core/content_capture:*", # 12 errors ++# "//third_party/blink/renderer/core/context_features:*", # 3 errors ++# "//third_party/blink/renderer/core/css:*", # 835 errors ++# "//third_party/blink/renderer/core/display_lock:*", # 36 errors ++# "//third_party/blink/renderer/core/dom:*", # 706 errors ++# "//third_party/blink/renderer/core/editing:*", # 847 errors ++# "//third_party/blink/renderer/core/events:*", # 173 errors ++# "//third_party/blink/renderer/core/execution_context:*", # 48 errors ++# "//third_party/blink/renderer/core/exported:*", # 470 errors ++# "//third_party/blink/renderer/core/feature_policy:*", # 15 errors ++# "//third_party/blink/renderer/core/fetch:*", # 134 errors ++# "//third_party/blink/renderer/core/fileapi:*", # 55 errors ++# "//third_party/blink/renderer/core/frame:*", # 864 errors ++# "//third_party/blink/renderer/core/fullscreen:*", # 32 errors ++# "//third_party/blink/renderer/core/geometry:*", # 39 errors ++# "//third_party/blink/renderer/core/html/parser:*", # 133 errors ++# "//third_party/blink/renderer/core/html:*", # 1662 errors ++# "//third_party/blink/renderer/core/imagebitmap:*", # 34 errors ++# "//third_party/blink/renderer/core/input:*", # 240 errors ++# "//third_party/blink/renderer/core/inspector:*", # 594 errors ++# "//third_party/blink/renderer/core/intersection_observer:*", # 50 errors ++# "//third_party/blink/renderer/core/layout/svg:*", # 193 errors ++# "//third_party/blink/renderer/core/layout:*", # 920 errors ++# "//third_party/blink/renderer/core/loader:*", # 421 errors ++# "//third_party/blink/renderer/core/mathml:*", # 11 errors ++# "//third_party/blink/renderer/core/messaging:*", # 30 errors ++# "//third_party/blink/renderer/core/mojo:*", # 44 errors ++# "//third_party/blink/renderer/core/offscreencanvas:*", # 22 errors ++# "//third_party/blink/renderer/core/origin_trials:*", # 12 errors ++# "//third_party/blink/renderer/core/page:*", # 500 errors ++# "//third_party/blink/renderer/core/paint:*", # 788 errors ++# "//third_party/blink/renderer/core/probe:*", # 9 errors ++# "//third_party/blink/renderer/core/resize_observer:*", # 29 errors ++# "//third_party/blink/renderer/core/script:*", # 155 errors ++# "//third_party/blink/renderer/core/scroll:*", # 29 errors ++# "//third_party/blink/renderer/core/streams:*", # 75 errors ++# "//third_party/blink/renderer/core/style:*", # 86 errors ++# "//third_party/blink/renderer/core/svg:*", # 297 errors ++# "//third_party/blink/renderer/core/timezone:*", # 8 errors ++# "//third_party/blink/renderer/core/timing:*", # 170 errors ++# "//third_party/blink/renderer/core/trustedtypes:*", # 27 errors ++# "//third_party/blink/renderer/core/typed_arrays:*", # 24 errors ++# "//third_party/blink/renderer/core/url:*", # 7 errors ++# "//third_party/blink/renderer/core/workers:*", # 289 errors ++# "//third_party/blink/renderer/core/xml:*", # 119 errors ++# "//third_party/blink/renderer/core/xmlhttprequest:*", # 49 errors ++# "//third_party/blink/renderer/core:*", # 823 errors ++# "//third_party/blink/renderer/modules/accessibility:*", # 7 errors ++# "//third_party/blink/renderer/modules/animationworklet:*", # 1 error ++# "//third_party/blink/renderer/modules/background_fetch:*", # 4 errors ++# "//third_party/blink/renderer/modules/background_sync:*", # 6 errors ++# "//third_party/blink/renderer/modules/cache_storage:*", # 3 errors ++# "//third_party/blink/renderer/modules/canvas:*", # 1 error ++# "//third_party/blink/renderer/modules/clipboard:*", # 1 error ++# "//third_party/blink/renderer/modules/contacts_picker:*", # 1 error ++# "//third_party/blink/renderer/modules/content_index:*", # 3 errors ++# "//third_party/blink/renderer/modules/cookie_store:*", # 8 errors ++# "//third_party/blink/renderer/modules/credentialmanager:*", # 1 error ++# "//third_party/blink/renderer/modules/csspaint:*", # 2 errors ++# "//third_party/blink/renderer/modules/device_orientation:*", # 5 errors ++# "//third_party/blink/renderer/modules/encryptedmedia:*", # 3 errors ++# "//third_party/blink/renderer/modules/exported:*", # 16 errors ++# "//third_party/blink/renderer/modules/font_access:*", # 3 errors ++# "//third_party/blink/renderer/modules/gamepad:*", # 1 error ++# "//third_party/blink/renderer/modules/imagecapture:*", # 2 errors ++# "//third_party/blink/renderer/modules/installedapp:*", # 1 error ++# "//third_party/blink/renderer/modules/launch:*", # 3 errors ++# "//third_party/blink/renderer/modules/manifest:*", # 2 errors ++# "//third_party/blink/renderer/modules/media_capabilities:*", # 5 errors ++# "//third_party/blink/renderer/modules/media_controls:*", # 31 errors ++# "//third_party/blink/renderer/modules/mediacapturefromelement:*", # 14 errors ++# "//third_party/blink/renderer/modules/mediarecorder:*", # 1 error ++# "//third_party/blink/renderer/modules/mediastream:*", # 29 errors ++# "//third_party/blink/renderer/modules/native_file_system:*", # 2 errors ++# "//third_party/blink/renderer/modules/nfc:*", # 2 errors ++# "//third_party/blink/renderer/modules/notifications:*", # 5 errors ++# "//third_party/blink/renderer/modules/payments/goods:*", # 1 error ++# "//third_party/blink/renderer/modules/payments:*", # 22 errors ++# "//third_party/blink/renderer/modules/peerconnection:*", # 43 errors ++# "//third_party/blink/renderer/modules/push_messaging:*", # 12 errors ++# "//third_party/blink/renderer/modules/quota:*", # 1 error ++# "//third_party/blink/renderer/modules/remoteplayback:*", # 3 errors ++# "//third_party/blink/renderer/modules/serial:*", # 1 error ++# "//third_party/blink/renderer/modules/service_worker:*", # 23 errors ++# "//third_party/blink/renderer/modules/shapedetection:*", # 4 errors ++# "//third_party/blink/renderer/modules/srcobject:*", # 1 error ++# "//third_party/blink/renderer/modules/storage:*", # 3 errors ++# "//third_party/blink/renderer/modules/wake_lock:*", # 1 error ++# "//third_party/blink/renderer/modules/webaudio:*", # 5 errors ++# "//third_party/blink/renderer/modules/webcodecs:*", # 13 errors ++# "//third_party/blink/renderer/modules/webgl:*", # 3 errors ++# "//third_party/blink/renderer/modules/webgpu:*", # 6 errors ++# "//third_party/blink/renderer/modules/webmidi:*", # 1 error ++# "//third_party/blink/renderer/modules/webtransport:*", # 16 errors ++# "//third_party/blink/renderer/modules/worklet:*", # 2 errors ++# "//third_party/blink/renderer/modules/xr:*", # 13 errors ++# "//third_party/blink/renderer/modules:*", # 321 errors ++# "//third_party/blink/renderer/platform/blob:*", # 16 errors ++# "//third_party/blink/renderer/platform/heap:*", # 65 errors ++# "//third_party/blink/renderer/platform/instrumentation:*", # 13 errors ++# "//third_party/blink/renderer/platform/loader:*", # 180 errors ++# "//third_party/blink/renderer/platform/network:*", # 15 errors ++# "//third_party/blink/renderer/platform/scheduler:*", # 45 errors ++# "//third_party/blink/renderer/platform/wtf:*", # 2 errors ++# "//third_party/blink/renderer/platform:*", # 72 errors ++# ++# "//third_party/breakpad:*", # 34 errors ++# "//third_party/ced/*", ++# "//third_party/crashpad/crashpad/client:*", # 1 error ++# "//third_party/crashpad/crashpad/compat:*", # 2 errors ++# "//third_party/crashpad/crashpad/snapshot:*", # 1 error ++# "//third_party/crashpad/crashpad/test:*", # 2 errors ++# "//third_party/crashpad/crashpad/util:*", # 2 errors ++# "//third_party/dav1d:*", # 95 errors ++# "//third_party/ffmpeg:*", # 1 error ++# "//third_party/icu/*", ++# "//third_party/libvpx:*", # 164 errors ++# "//third_party/libwebp:*", # 80 errors, https://crbug.com/800762 ++# "//third_party/openscreen/src/cast/common:*", # 4 errors ++# "//third_party/openscreen/src/cast/receiver:*", # 1 error ++# "//third_party/openscreen/src/cast/streaming:*", # 66 errors ++# "//third_party/openscreen/src/discovery:*", # 36 errors ++# "//third_party/openscreen/src/osp/impl/quic:*", # 16 errors ++# "//third_party/openscreen/src/osp/msgs:*", # 5 errors ++# "//third_party/openscreen/src/osp/public:*", # 1 error ++# "//third_party/openscreen/src/osp:*", # 13 errors ++# "//third_party/openscreen/src/util:*", # 29 errors ++# "//third_party/pdfium/samples:*", # 1 error ++# "//third_party/pdfium/third_party:*", # 2 errors ++# "//third_party/pdfium:*", # 1 error ++# ++# # //v8/*, https://crbug.com/v8/7330 ++# "//v8/src/inspector:*", # 20 errors ++# "//v8/test/cctest:*", # 26 errors ++# "//v8/test/unittests:*", # 11 errors ++# "//v8/test/wasm-api-tests:*", # 13 errors ++# "//v8/third_party/inspector_protocol:*", # 2 errors ++# "//v8/tools/debug_helper:*", # 9 errors ++# "//v8/tools/v8windbg:*", # 2 errors ++# "//v8:*", # 1871 errors ++#] + + # These are the list of GN files that run exec_script. This whitelist exists + # to force additional review for new uses of exec_script, which is strongly diff --git a/www-client/chromium/files/chromium-renderer-std-nullptr-83.patch b/www-client/chromium/files/chromium-renderer-std-nullptr-83.patch new file mode 100644 index 0000000..f95916e --- /dev/null +++ b/www-client/chromium/files/chromium-renderer-std-nullptr-83.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/platform/bindings/v8_set_return_value.h b/third_party/blink/renderer/platform/bindings/v8_set_return_value.h +index 07cae22f1..7871f557d 100644 +--- a/third_party/blink/renderer/platform/bindings/v8_set_return_value.h ++++ b/third_party/blink/renderer/platform/bindings/v8_set_return_value.h +@@ -51,7 +51,7 @@ void V8SetReturnValue(const CallbackInfo& info, const v8::Local<S> value) { + + // nullptr + template <typename CallbackInfo> +-void V8SetReturnValue(const CallbackInfo& info, nullptr_t) { ++void V8SetReturnValue(const CallbackInfo& info, std::nullptr_t) { + info.GetReturnValue().SetNull(); + } + diff --git a/www-client/chromium/files/chromium-revert-crrev-2147485-84.patch b/www-client/chromium/files/chromium-revert-crrev-2147485-84.patch new file mode 100644 index 0000000..3c6e2b1 --- /dev/null +++ b/www-client/chromium/files/chromium-revert-crrev-2147485-84.patch @@ -0,0 +1,369 @@ +diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc +index b1821434b..929b63ab8 100644 +--- a/content/browser/devtools/protocol/page_handler.cc ++++ b/content/browser/devtools/protocol/page_handler.cc +@@ -961,14 +961,14 @@ Response PageHandler::SetDownloadBehavior(const std::string& behavior, + + void PageHandler::GetAppManifest( + std::unique_ptr<GetAppManifestCallback> callback) { +- if (!host_) { ++ WebContentsImpl* web_contents = GetWebContents(); ++ if (!web_contents || !web_contents->GetManifestManagerHost()) { + callback->sendFailure(Response::ServerError("Cannot retrieve manifest")); + return; + } +- ManifestManagerHost::GetOrCreateForCurrentDocument(host_->GetMainFrame()) +- ->RequestManifestDebugInfo(base::BindOnce(&PageHandler::GotManifest, +- weak_factory_.GetWeakPtr(), +- std::move(callback))); ++ web_contents->GetManifestManagerHost()->RequestManifestDebugInfo( ++ base::BindOnce(&PageHandler::GotManifest, weak_factory_.GetWeakPtr(), ++ std::move(callback))); + } + + WebContentsImpl* PageHandler::GetWebContents() { +diff --git a/content/browser/frame_host/render_document_host_user_data_browsertest.cc b/content/browser/frame_host/render_document_host_user_data_browsertest.cc +index 09dff7842..290e5509b 100644 +--- a/content/browser/frame_host/render_document_host_user_data_browsertest.cc ++++ b/content/browser/frame_host/render_document_host_user_data_browsertest.cc +@@ -88,7 +88,7 @@ class RenderDocumentHostUserDataTest : public ContentBrowserTest { + + // Test basic functionality of RenderDocumentHostUserData. + IN_PROC_BROWSER_TEST_F(RenderDocumentHostUserDataTest, +- GetCreateAndDeleteForCurrentDocument) { ++ GetAndCreateForCurrentDocument) { + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html")); + +@@ -104,14 +104,8 @@ IN_PROC_BROWSER_TEST_F(RenderDocumentHostUserDataTest, + // 3) Create Data and check that GetForCurrentDocument shouldn't return null + // now. + Data::CreateForCurrentDocument(rfh_a); +- base::WeakPtr<Data> created_data = +- Data::GetForCurrentDocument(rfh_a)->GetWeakPtr(); +- EXPECT_TRUE(created_data); +- +- // 4) Delete Data and check that GetForCurrentDocument should return null. +- Data::DeleteForCurrentDocument(rfh_a); +- EXPECT_FALSE(created_data); +- EXPECT_FALSE(Data::GetForCurrentDocument(rfh_a)); ++ data = Data::GetForCurrentDocument(rfh_a); ++ EXPECT_TRUE(data); + } + + // Tests that RenderDocumentHostUserData objects are different for each +diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc +index 23bc92faa..e95952a01 100644 +--- a/content/browser/frame_host/render_frame_host_impl.cc ++++ b/content/browser/frame_host/render_frame_host_impl.cc +@@ -75,7 +75,6 @@ + #include "content/browser/loader/navigation_url_loader_impl.h" + #include "content/browser/loader/prefetch_url_loader_service.h" + #include "content/browser/log_console_message.h" +-#include "content/browser/manifest/manifest_manager_host.h" + #include "content/browser/media/capture/audio_mirroring_manager.h" + #include "content/browser/media/media_interface_proxy.h" + #include "content/browser/media/webaudio/audio_context_manager_impl.h" +@@ -6146,15 +6145,6 @@ void RenderFrameHostImpl::SetUpMojoIfNeeded() { + std::make_unique<ActiveURLMessageFilter>(impl)); + }, + base::Unretained(this))); +- +- associated_registry_->AddInterface(base::BindRepeating( +- [](RenderFrameHostImpl* impl, +- mojo::PendingAssociatedReceiver< +- blink::mojom::ManifestUrlChangeObserver> receiver) { +- ManifestManagerHost::GetOrCreateForCurrentDocument(impl) +- ->BindObserver(std::move(receiver)); +- }, +- base::Unretained(this))); + } + + associated_registry_->AddInterface(base::BindRepeating( +diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h +index bfd421386..2bba134e0 100644 +--- a/content/browser/frame_host/render_frame_host_impl.h ++++ b/content/browser/frame_host/render_frame_host_impl.h +@@ -1595,10 +1595,6 @@ class CONTENT_EXPORT RenderFrameHostImpl + document_associated_data_.SetUserData(key, std::move(data)); + } + +- void RemoveRenderDocumentHostUserData(const void* key) { +- document_associated_data_.RemoveUserData(key); +- } +- + // Returns the child RenderFrameHostImpl if |child_frame_routing_id| is an + // immediate child of this FrameTreeNode. |child_frame_routing_id| is + // considered untrusted, so the renderer process is killed if it refers to a +diff --git a/content/browser/manifest/manifest_manager_host.cc b/content/browser/manifest/manifest_manager_host.cc +index 68ea016c6..b063e0d1e 100644 +--- a/content/browser/manifest/manifest_manager_host.cc ++++ b/content/browser/manifest/manifest_manager_host.cc +@@ -9,34 +9,25 @@ + #include "base/bind.h" + #include "content/browser/web_contents/web_contents_impl.h" + #include "content/public/browser/render_frame_host.h" ++#include "content/public/browser/web_contents.h" + #include "services/service_manager/public/cpp/interface_provider.h" + #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" + #include "third_party/blink/public/common/manifest/manifest.h" + + namespace content { + +-ManifestManagerHost::ManifestManagerHost(RenderFrameHost* render_frame_host) +- : manifest_manager_frame_(render_frame_host) { +- // Check that |manifest_manager_frame_| is a main frame. +- DCHECK(!manifest_manager_frame_->GetParent()); +-} ++ManifestManagerHost::ManifestManagerHost(WebContents* web_contents) ++ : WebContentsObserver(web_contents), ++ manifest_url_change_observer_receivers_(web_contents, this) {} + + ManifestManagerHost::~ManifestManagerHost() { + OnConnectionError(); + } + +-void ManifestManagerHost::BindObserver( +- mojo::PendingAssociatedReceiver<blink::mojom::ManifestUrlChangeObserver> +- receiver) { +- manifest_url_change_observer_receiver_.Bind(std::move(receiver)); +-} +- +-ManifestManagerHost* ManifestManagerHost::GetOrCreateForCurrentDocument( +- RenderFrameHostImpl* rfh) { +- DCHECK(rfh->is_main_frame()); +- if (!GetForCurrentDocument(rfh)) +- CreateForCurrentDocument(rfh); +- return GetForCurrentDocument(rfh); ++void ManifestManagerHost::RenderFrameDeleted( ++ RenderFrameHost* render_frame_host) { ++ if (render_frame_host == manifest_manager_frame_) ++ OnConnectionError(); + } + + void ManifestManagerHost::GetManifest(GetManifestCallback callback) { +@@ -54,7 +45,11 @@ void ManifestManagerHost::RequestManifestDebugInfo( + } + + blink::mojom::ManifestManager& ManifestManagerHost::GetManifestManager() { ++ if (manifest_manager_frame_ != web_contents()->GetMainFrame()) ++ OnConnectionError(); ++ + if (!manifest_manager_) { ++ manifest_manager_frame_ = web_contents()->GetMainFrame(); + manifest_manager_frame_->GetRemoteInterfaces()->GetInterface( + manifest_manager_.BindNewPipeAndPassReceiver()); + manifest_manager_.set_disconnect_handler(base::BindOnce( +@@ -64,6 +59,8 @@ blink::mojom::ManifestManager& ManifestManagerHost::GetManifestManager() { + } + + void ManifestManagerHost::OnConnectionError() { ++ manifest_manager_frame_ = nullptr; ++ manifest_manager_.reset(); + std::vector<GetManifestCallback> callbacks; + for (CallbackMap::iterator it(&callbacks_); !it.IsAtEnd(); it.Advance()) { + callbacks.push_back(std::move(*it.GetCurrentValue())); +@@ -71,10 +68,6 @@ void ManifestManagerHost::OnConnectionError() { + callbacks_.Clear(); + for (auto& callback : callbacks) + std::move(callback).Run(GURL(), blink::Manifest()); +- +- if (GetForCurrentDocument(manifest_manager_frame_)) { +- DeleteForCurrentDocument(manifest_manager_frame_); +- } + } + + void ManifestManagerHost::OnRequestManifestResponse( +@@ -88,16 +81,12 @@ void ManifestManagerHost::OnRequestManifestResponse( + + void ManifestManagerHost::ManifestUrlChanged( + const base::Optional<GURL>& manifest_url) { +- if (!manifest_manager_frame_->IsCurrent()) ++ if (manifest_url_change_observer_receivers_.GetCurrentTargetFrame() != ++ web_contents()->GetMainFrame()) { + return; +- +- // TODO(yuzus): |NotifyManifestUrlChanged| should start taking a +- // |RenderFrameHost| parameter. +- WebContents* web_contents = +- WebContents::FromRenderFrameHost(manifest_manager_frame_); +- static_cast<WebContentsImpl*>(web_contents) ++ } ++ static_cast<WebContentsImpl*>(web_contents()) + ->NotifyManifestUrlChanged(manifest_url); + } + +-RENDER_DOCUMENT_HOST_USER_DATA_KEY_IMPL(ManifestManagerHost) + } // namespace content +diff --git a/content/browser/manifest/manifest_manager_host.h b/content/browser/manifest/manifest_manager_host.h +index 57f51dc9f..3dc0bbf6e 100644 +--- a/content/browser/manifest/manifest_manager_host.h ++++ b/content/browser/manifest/manifest_manager_host.h +@@ -8,8 +8,8 @@ + #include "base/callback_forward.h" + #include "base/containers/id_map.h" + #include "base/macros.h" +-#include "content/public/browser/render_document_host_user_data.h" +-#include "mojo/public/cpp/bindings/associated_receiver.h" ++#include "content/public/browser/web_contents_observer.h" ++#include "content/public/browser/web_contents_receiver_set.h" + #include "mojo/public/cpp/bindings/remote.h" + #include "third_party/blink/public/mojom/manifest/manifest_manager.mojom.h" + #include "third_party/blink/public/mojom/manifest/manifest_observer.mojom.h" +@@ -21,16 +21,16 @@ struct Manifest; + namespace content { + + class RenderFrameHost; +-class RenderFrameHostImpl; ++class WebContents; + + // ManifestManagerHost is a helper class that allows callers to get the Manifest + // associated with the main frame of the observed WebContents. It handles the + // IPC messaging with the child process. + // TODO(mlamouri): keep a cached version and a dirty bit here. +-class ManifestManagerHost +- : public RenderDocumentHostUserData<ManifestManagerHost>, +- public blink::mojom::ManifestUrlChangeObserver { ++class ManifestManagerHost : public WebContentsObserver, ++ public blink::mojom::ManifestUrlChangeObserver { + public: ++ explicit ManifestManagerHost(WebContents* web_contents); + ~ManifestManagerHost() override; + + using GetManifestCallback = +@@ -44,18 +44,10 @@ class ManifestManagerHost + void RequestManifestDebugInfo( + blink::mojom::ManifestManager::RequestManifestDebugInfoCallback callback); + +- void BindObserver( +- mojo::PendingAssociatedReceiver<blink::mojom::ManifestUrlChangeObserver> +- receiver); +- +- static ManifestManagerHost* GetOrCreateForCurrentDocument( +- RenderFrameHostImpl* rfh); ++ // WebContentsObserver ++ void RenderFrameDeleted(RenderFrameHost* render_frame_host) override; + + private: +- explicit ManifestManagerHost(RenderFrameHost* render_frame_host); +- +- friend class RenderDocumentHostUserData<ManifestManagerHost>; +- + using CallbackMap = base::IDMap<std::unique_ptr<GetManifestCallback>>; + + blink::mojom::ManifestManager& GetManifestManager(); +@@ -68,14 +60,13 @@ class ManifestManagerHost + // blink::mojom::ManifestUrlChangeObserver: + void ManifestUrlChanged(const base::Optional<GURL>& manifest_url) override; + +- RenderFrameHost* manifest_manager_frame_; ++ RenderFrameHost* manifest_manager_frame_ = nullptr; + mojo::Remote<blink::mojom::ManifestManager> manifest_manager_; + CallbackMap callbacks_; + +- mojo::AssociatedReceiver<blink::mojom::ManifestUrlChangeObserver> +- manifest_url_change_observer_receiver_{this}; ++ WebContentsFrameReceiverSet<blink::mojom::ManifestUrlChangeObserver> ++ manifest_url_change_observer_receivers_; + +- RENDER_DOCUMENT_HOST_USER_DATA_KEY_DECL(); + DISALLOW_COPY_AND_ASSIGN(ManifestManagerHost); + }; + +diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc +index 024415bb0..115f480ce 100644 +--- a/content/browser/web_contents/web_contents_impl.cc ++++ b/content/browser/web_contents/web_contents_impl.cc +@@ -2122,6 +2122,8 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { + + screen_orientation_provider_.reset(new ScreenOrientationProvider(this)); + ++ manifest_manager_host_.reset(new ManifestManagerHost(this)); ++ + #if defined(OS_ANDROID) + DateTimeChooserAndroid::CreateForWebContents(this); + #endif +@@ -4202,10 +4204,7 @@ bool WebContentsImpl::WasEverAudible() { + } + + void WebContentsImpl::GetManifest(GetManifestCallback callback) { +- // TODO(yuzus, 1061899): Move this function to RenderFrameHostImpl. +- ManifestManagerHost* manifest_manager_host = +- ManifestManagerHost::GetOrCreateForCurrentDocument(GetMainFrame()); +- manifest_manager_host->GetManifest(std::move(callback)); ++ manifest_manager_host_->GetManifest(std::move(callback)); + } + + void WebContentsImpl::ExitFullscreen(bool will_cause_resize) { +diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h +index 59510b1f8..e86be96fc 100644 +--- a/content/browser/web_contents/web_contents_impl.h ++++ b/content/browser/web_contents/web_contents_impl.h +@@ -102,6 +102,7 @@ class DisplayCutoutHostImpl; + class FindRequestManager; + class JavaScriptDialogManager; + class JavaScriptDialogNavigationDeferrer; ++class ManifestManagerHost; + class MediaWebContentsObserver; + class NFCHost; + class PluginContentOriginAllowlist; +@@ -311,6 +312,10 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, + + void NotifyManifestUrlChanged(const base::Optional<GURL>& manifest_url); + ++ ManifestManagerHost* GetManifestManagerHost() const { ++ return manifest_manager_host_.get(); ++ } ++ + #if defined(OS_ANDROID) + void SetMainFrameImportance(ChildProcessImportance importance); + #endif +@@ -1897,6 +1902,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, + + std::unique_ptr<ScreenOrientationProvider> screen_orientation_provider_; + ++ std::unique_ptr<ManifestManagerHost> manifest_manager_host_; ++ + // The accessibility mode for all frames. This is queried when each frame + // is created, and broadcast to all frames when it changes. + ui::AXMode accessibility_mode_; +diff --git a/content/public/browser/render_document_host_user_data.cc b/content/public/browser/render_document_host_user_data.cc +index 3b58bf8a3..b1b385455 100644 +--- a/content/public/browser/render_document_host_user_data.cc ++++ b/content/public/browser/render_document_host_user_data.cc +@@ -23,8 +23,4 @@ void SetRenderDocumentHostUserData( + key, std::move(data)); + } + +-void RemoveRenderDocumentHostUserData(RenderFrameHost* rfh, const void* key) { +- static_cast<RenderFrameHostImpl*>(rfh)->RemoveRenderDocumentHostUserData(key); +-} +- + } // namespace content +diff --git a/content/public/browser/render_document_host_user_data.h b/content/public/browser/render_document_host_user_data.h +index a138fd60a..f55f24f60 100644 +--- a/content/public/browser/render_document_host_user_data.h ++++ b/content/public/browser/render_document_host_user_data.h +@@ -22,9 +22,6 @@ CONTENT_EXPORT void SetRenderDocumentHostUserData( + const void* key, + std::unique_ptr<base::SupportsUserData::Data> data); + +-CONTENT_EXPORT void RemoveRenderDocumentHostUserData(RenderFrameHost* rfh, +- const void* key); +- + // This class approximates the lifetime of a single blink::Document in the + // browser process. At the moment RenderFrameHost can correspond to multiple + // blink::Documents (when RenderFrameHost is reused for same-process +@@ -85,12 +82,6 @@ class RenderDocumentHostUserData : public base::SupportsUserData::Data { + return static_cast<T*>(GetRenderDocumentHostUserData(rfh, UserDataKey())); + } + +- static void DeleteForCurrentDocument(RenderFrameHost* rfh) { +- DCHECK(rfh); +- DCHECK(GetForCurrentDocument(rfh)); +- RemoveRenderDocumentHostUserData(rfh, UserDataKey()); +- } +- + static const void* UserDataKey() { return &T::kUserDataKey; } + }; + diff --git a/www-client/chromium/files/chromium-revert-e7963c4-78.patch b/www-client/chromium/files/chromium-revert-e7963c4-78.patch new file mode 100644 index 0000000..fe7e1a6 --- /dev/null +++ b/www-client/chromium/files/chromium-revert-e7963c4-78.patch @@ -0,0 +1,335 @@ +diff --git a/chrome/test/chromedriver/client/chromedriver.py b/chrome/test/chromedriver/client/chromedriver.py +index 74b780e5f..8bd1cc004 100644 +--- a/chrome/test/chromedriver/client/chromedriver.py ++++ b/chrome/test/chromedriver/client/chromedriver.py +@@ -653,7 +653,3 @@ class ChromeDriver(object): + if signCount is not None: + options['signCount'] = signCount + return self.ExecuteCommand(Command.ADD_CREDENTIAL, options) +- +- def GetCredentials(self, authenticatorId): +- params = {'authenticatorId': authenticatorId} +- return self.ExecuteCommand(Command.GET_CREDENTIALS, params) +diff --git a/chrome/test/chromedriver/client/command_executor.py b/chrome/test/chromedriver/client/command_executor.py +index 2286d839f..de27e1a3c 100644 +--- a/chrome/test/chromedriver/client/command_executor.py ++++ b/chrome/test/chromedriver/client/command_executor.py +@@ -176,9 +176,6 @@ class Command(object): + ADD_CREDENTIAL = ( + _Method.POST, + '/session/:sessionId/webauthn/authenticator/:authenticatorId/credential') +- GET_CREDENTIALS = ( +- _Method.GET, +- '/session/:sessionId/webauthn/authenticator/:authenticatorId/credentials') + + # Custom Chrome commands. + IS_LOADING = (_Method.GET, '/session/:sessionId/is_loading') +diff --git a/chrome/test/chromedriver/server/http_handler.cc b/chrome/test/chromedriver/server/http_handler.cc +index 737e34dce..0c9a00119 100644 +--- a/chrome/test/chromedriver/server/http_handler.cc ++++ b/chrome/test/chromedriver/server/http_handler.cc +@@ -764,14 +764,6 @@ HttpHandler::HttpHandler( + "AddCredential", + base::BindRepeating(&ExecuteWebAuthnCommand, + base::BindRepeating(&ExecuteAddCredential)))), +- CommandMapping( +- kGet, +- "session/:sessionId/webauthn/authenticator/:authenticatorId/" +- "credentials", +- WrapToCommand("GetCredentials", +- base::BindRepeating( +- &ExecuteWebAuthnCommand, +- base::BindRepeating(&ExecuteGetCredentials)))), + + // + // Non-standard extension commands +diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py +index 15e986899..d59650004 100755 +--- a/chrome/test/chromedriver/test/run_py_tests.py ++++ b/chrome/test/chromedriver/test/run_py_tests.py +@@ -226,7 +226,6 @@ _ANDROID_NEGATIVE_FILTER['chrome'] = ( + 'ChromeDriverSecureContextTest.testAddVirtualAuthenticator', + 'ChromeDriverSecureContextTest.testRemoveVirtualAuthenticator', + 'ChromeDriverSecureContextTest.testAddCredential', +- 'ChromeDriverSecureContextTest.testGetCredentials', + ] + ) + _ANDROID_NEGATIVE_FILTER['chrome_stable'] = ( +@@ -2018,11 +2017,6 @@ class ChromeDriverTest(ChromeDriverBaseTestWithWebServer): + + # Tests that require a secure context. + class ChromeDriverSecureContextTest(ChromeDriverBaseTest): +- # The example attestation private key from the U2F spec at +- # https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#registration-example +- # PKCS.8 encoded without encryption, as a base64url string. +- privateKey = "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8_zMDQDYAxlU-Qhk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwURmgsJYxGP__fWN_S-j5sN4tT15XEpN_7QZnt14YvI6uvAgO0uJEboFaZlOEB" +- + @staticmethod + def GlobalSetUp(): + cert_path = os.path.join(chrome_paths.GetTestData(), +@@ -2039,21 +2033,6 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest): + return ChromeDriverSecureContextTest._https_server.GetUrl( + host) + file_path + +- # Encodes a string in URL-safe base64 with no padding. +- @staticmethod +- def URLSafeBase64Encode(string): +- encoded = base64.urlsafe_b64encode(string) +- while encoded[-1] == "=": +- encoded = encoded[0:-1] +- return encoded +- +- # Decodes a base64 string with no padding. +- @staticmethod +- def UrlSafeBase64Decode(string): +- string = string.encode("utf-8") +- string += "=" * (4 - len(string) % 4) +- return base64.urlsafe_b64decode(string) +- + def setUp(self): + self._driver = self.CreateDriver( + chrome_switches=['host-resolver-rules=MAP * 127.0.0.1']) +@@ -2101,6 +2080,10 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest): + self._driver.RemoveVirtualAuthenticator, response['authenticatorId']) + + def testAddCredential(self): ++ # The example attestation private key from the U2F spec at ++ # https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html#registration-example ++ # PKCS.8 encoded without encryption. ++ privateKey = "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8/zMDQDYAxlU+Qhk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwURmgsJYxGP//fWN/S+j5sN4tT15XEpN/7QZnt14YvI6uvAgO0uJEboFaZlOEB" + + script = """ + let done = arguments[0]; +@@ -2123,78 +2106,16 @@ class ChromeDriverSecureContextTest(ChromeDriverBaseTest): + # Register a credential and try authenticating with it. + self._driver.AddCredential( + authenticatorId = authenticatorId, +- credentialId = self.URLSafeBase64Encode("cred-1"), ++ credentialId = base64.b64encode("cred-1"), + isResidentCredential=False, + rpId="chromedriver.test", +- privateKey=self.privateKey, ++ privateKey=privateKey, + signCount=1, + ) + + result = self._driver.ExecuteAsyncScript(script) + self.assertEquals('OK', result['status']) + +- def testAddCredentialBase64Errors(self): +- # Test that AddCredential checks UrlBase64 parameteres. +- self._driver.Load(self.GetHttpsUrlForFile( +- '/chromedriver/webauthn_test.html', 'chromedriver.test')) +- +- authenticatorId = self._driver.AddVirtualAuthenticator( +- protocol = 'ctap2', +- transport = 'usb', +- hasResidentKey = False, +- hasUserVerification = False, +- )['authenticatorId'] +- +- # Try adding a credentialId that is encoded in vanilla base64. +- self.assertRaisesRegexp( +- chromedriver.InvalidArgument, +- 'credentialId must be a base64url encoded string', +- self._driver.AddCredential, authenticatorId, '_0n+wWqg=', +- False, "chromedriver.test", self.privateKey, None, 1, +- ) +- +- # Try adding a credentialId that is not a string. +- self.assertRaisesRegexp( +- chromedriver.InvalidArgument, +- 'credentialId must be a base64url encoded string', +- self._driver.AddCredential, authenticatorId, 1, +- False, "chromedriver.test", self.privateKey, None, 1, +- ) +- +- def testGetCredentials(self): +- script = """ +- let done = arguments[0]; +- registerCredential({ +- authenticatorSelection: { +- requireResidentKey: true, +- }, +- }).then(done); +- """ +- self._driver.Load(self.GetHttpsUrlForFile( +- '/chromedriver/webauthn_test.html', 'chromedriver.test')) +- authenticatorId = self._driver.AddVirtualAuthenticator( +- protocol = 'ctap2', +- transport = 'usb', +- hasResidentKey = True, +- hasUserVerification = True, +- )['authenticatorId'] +- +- # Register a credential via the webauthn API. +- result = self._driver.ExecuteAsyncScript(script) +- self.assertEquals('OK', result['status']) +- credentialId = result['credential']['id'] +- +- # GetCredentials should return the credential that was just created. +- credentials = self._driver.GetCredentials(authenticatorId)['credentials'] +- self.assertEquals(1, len(credentials)) +- self.assertEquals(credentialId, credentials[0]['credentialId']) +- self.assertEquals(True, credentials[0]['isResidentCredential']) +- self.assertEquals('chromedriver.test', credentials[0]['rpId']) +- self.assertEquals(chr(1), +- self.UrlSafeBase64Decode(credentials[0]['userHandle'])) +- self.assertEquals(1, credentials[0]['signCount']) +- self.assertTrue(credentials[0]['privateKey']) +- + # Tests in the following class are expected to be moved to ChromeDriverTest + # class when we no longer support the legacy mode. + class ChromeDriverW3cTest(ChromeDriverBaseTestWithWebServer): +diff --git a/chrome/test/chromedriver/webauthn_commands.cc b/chrome/test/chromedriver/webauthn_commands.cc +index b0d4d62bc..32c8a4a61 100644 +--- a/chrome/test/chromedriver/webauthn_commands.cc ++++ b/chrome/test/chromedriver/webauthn_commands.cc +@@ -6,8 +6,6 @@ + + #include <utility> + +-#include "base/base64.h" +-#include "base/base64url.h" + #include "base/callback.h" + #include "base/containers/flat_map.h" + #include "base/values.h" +@@ -17,8 +15,6 @@ + + namespace { + +-static constexpr char kBase64UrlError[] = " must be a base64url encoded string"; +- + // Creates a base::DictionaryValue by cloning the parameters specified by + // |mapping| from |params|. + base::DictionaryValue MapParams( +@@ -33,48 +29,6 @@ base::DictionaryValue MapParams( + return options; + } + +-// Converts the string |keys| in |params| from base64url to base64. Returns a +-// status error if conversion of one of the keys failed. +-Status ConvertBase64UrlToBase64(base::Value* params, +- const std::vector<const std::string> keys) { +- for (const std::string key : keys) { +- base::Value* maybe_value = params->FindKey(key); +- if (!maybe_value) +- continue; +- +- if (!maybe_value->is_string()) +- return Status(kInvalidArgument, key + kBase64UrlError); +- +- std::string& value = maybe_value->GetString(); +- std::string temp; +- if (!Base64UrlDecode(value, base::Base64UrlDecodePolicy::IGNORE_PADDING, +- &temp)) { +- return Status(kInvalidArgument, key + kBase64UrlError); +- } +- +- base::Base64Encode(temp, &value); +- } +- +- return Status(kOk); +-} +- +-// Converts the string |keys| in |params| from base64 to base64url. +-void ConvertBase64ToBase64Url(base::Value* params, +- const std::vector<const std::string> keys) { +- for (const std::string key : keys) { +- std::string* maybe_value = params->FindStringKey(key); +- if (!maybe_value) +- continue; +- +- std::string temp; +- bool result = base::Base64Decode(*maybe_value, &temp); +- DCHECK(result); +- +- base::Base64UrlEncode(temp, base::Base64UrlEncodePolicy::OMIT_PADDING, +- maybe_value); +- } +-} +- + } // namespace + + Status ExecuteWebAuthnCommand(const WebAuthnCommand& command, +@@ -125,40 +79,18 @@ Status ExecuteRemoveVirtualAuthenticator(WebView* web_view, + Status ExecuteAddCredential(WebView* web_view, + const base::Value& params, + std::unique_ptr<base::Value>* value) { +- base::DictionaryValue mapped_params = MapParams( +- { +- {"authenticatorId", "authenticatorId"}, +- {"credential.credentialId", "credentialId"}, +- {"credential.isResidentCredential", "isResidentCredential"}, +- {"credential.rpId", "rpId"}, +- {"credential.privateKey", "privateKey"}, +- {"credential.userHandle", "userHandle"}, +- {"credential.signCount", "signCount"}, +- }, +- params); +- Status status = +- ConvertBase64UrlToBase64(mapped_params.FindKey("credential"), +- {"credentialId", "privateKey", "userHandle"}); +- if (status.IsError()) +- return status; +- +- return web_view->SendCommandAndGetResult("WebAuthn.addCredential", +- std::move(mapped_params), value); +-} +- +-Status ExecuteGetCredentials(WebView* web_view, +- const base::Value& params, +- std::unique_ptr<base::Value>* value) { +- Status status = web_view->SendCommandAndGetResult( +- "WebAuthn.getCredentials", +- MapParams({{"authenticatorId", "authenticatorId"}}, params), value); +- if (status.IsError()) +- return status; +- +- for (base::Value& credential : (*value)->FindKey("credentials")->GetList()) { +- ConvertBase64ToBase64Url(&credential, +- {"credentialId", "privateKey", "userHandle"}); +- } +- +- return status; ++ return web_view->SendCommandAndGetResult( ++ "WebAuthn.addCredential", ++ MapParams( ++ { ++ {"authenticatorId", "authenticatorId"}, ++ {"credential.credentialId", "credentialId"}, ++ {"credential.isResidentCredential", "isResidentCredential"}, ++ {"credential.rpId", "rpId"}, ++ {"credential.privateKey", "privateKey"}, ++ {"credential.userHandle", "userHandle"}, ++ {"credential.signCount", "signCount"}, ++ }, ++ params), ++ value); + } +diff --git a/chrome/test/chromedriver/webauthn_commands.h b/chrome/test/chromedriver/webauthn_commands.h +index dcc278428..fd75ecfed 100644 +--- a/chrome/test/chromedriver/webauthn_commands.h ++++ b/chrome/test/chromedriver/webauthn_commands.h +@@ -44,9 +44,4 @@ Status ExecuteAddCredential(WebView* web_view, + const base::Value& params, + std::unique_ptr<base::Value>* value); + +-// Retrieve all the credentials stored in an authenticator. +-Status ExecuteGetCredentials(WebView* web_view, +- const base::Value& params, +- std::unique_ptr<base::Value>* value); +- + #endif // CHROME_TEST_CHROMEDRIVER_WEBAUTHN_COMMANDS_H_ +diff --git a/device/fido/virtual_ctap2_device.cc b/device/fido/virtual_ctap2_device.cc +index 672b61cb5..843bd0f4e 100644 +--- a/device/fido/virtual_ctap2_device.cc ++++ b/device/fido/virtual_ctap2_device.cc +@@ -864,7 +864,6 @@ base::Optional<CtapDeviceResponseCode> VirtualCtap2Device::OnMakeCredential( + + registration.is_resident = true; + registration.user = request.user; +- registration.rp = request.rp; + } + + if (request.cred_protect) { diff --git a/www-client/chromium/files/chromium-serviceworker-83.patch b/www-client/chromium/files/chromium-serviceworker-83.patch new file mode 100644 index 0000000..a836e7f --- /dev/null +++ b/www-client/chromium/files/chromium-serviceworker-83.patch @@ -0,0 +1,130 @@ +From 0914a38252f205fc04fa50e858b24fa5f535ab11 Mon Sep 17 00:00:00 2001 +From: Hiroki Nakagawa <nhiroki@chromium.org> +Date: Wed, 29 Apr 2020 11:46:54 +0900 +Subject: [PATCH] ServiceWorker: Avoid double destruction of ServiceWorkerObjectHost on connection error + +This CL avoids the case where ServiceWorkerObjectHost is destroyed twice +on ServiceWorkerObjectHost::OnConnectionError() when Chromium is built +with the GCC build toolchain. + +> How does the issue happen? + +ServiceWorkerObjectHost has a cyclic reference like this: + +ServiceWorkerObjectHost + --([1] scoped_refptr)--> ServiceWorkerVersion + --([2] std::unique_ptr)--> ServiceWorkerProviderHost + --([3] std::unique_ptr)--> ServiceWorkerContainerHost + --([4] std::unique_ptr)--> ServiceWorkerObjectHost + +Note that ServiceWorkerContainerHost manages ServiceWorkerObjectHost in +map<int64_t version_id, std::unique_ptr<ServiceWorkerObjectHost>>. + +When ServiceWorkerObjectHost::OnConnectionError() is called, the +function removes the reference [4] from the map, and destroys +ServiceWorkerObjectHost. If the object host has the last reference [1] +to ServiceWorkerVersion, the destruction also cuts off the references +[2] and [3], and destroys ServiceWorkerProviderHost and +ServiceWorkerContainerHost. + +This seems to work well on the Chromium's default toolchain, but not +work on the GCC toolchain. According to the report, destruction of +ServiceWorkerContainerHost happens while the map owned by the container +host is erasing the ServiceWorkerObjectHost, and this results in crash +due to double destruction of the object host. + +I don't know the reason why this happens only on the GCC toolchain, but +I suspect the order of object destruction on std::map::erase() could be +different depending on the toolchains. + +> How does this CL fix this? + +The ideal fix is to redesign the ownership model of +ServiceWorkerVersion, but it's not feasible in the short term. + +Instead, this CL avoids destruction of ServiceWorkerObjectHost on +std::map::erase(). The new code takes the ownership of the object host +from the map first, and then erases the entry from the map. This +separates timings to erase the map entry and to destroy the object host, +so the crash should no longer happen. + +Bug: 1056598 +Change-Id: Id30654cb575bc557c42044d6f0c6f1f9bfaed613 +--- + +diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc +index c631bcd..ff917f8 100644 +--- a/content/browser/service_worker/service_worker_container_host.cc ++++ b/content/browser/service_worker/service_worker_container_host.cc +@@ -717,6 +717,16 @@ + int64_t version_id) { + DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); + DCHECK(base::Contains(service_worker_object_hosts_, version_id)); ++ ++ // ServiceWorkerObjectHost to be deleted may have the last reference to ++ // ServiceWorkerVersion that indirectly owns this ServiceWorkerContainerHost. ++ // If we erase the object host directly from the map, |this| could be deleted ++ // during the map operation and may crash. To avoid the case, we take the ++ // ownership of the object host from the map first, and then erase the entry ++ // from the map. See https://crbug.com/1056598 for details. ++ std::unique_ptr<ServiceWorkerObjectHost> to_be_deleted = ++ std::move(service_worker_object_hosts_[version_id]); ++ DCHECK(to_be_deleted); + service_worker_object_hosts_.erase(version_id); + } + +diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc +index 238cb8b..f60c7a2 100644 +--- a/content/browser/service_worker/service_worker_object_host_unittest.cc ++++ b/content/browser/service_worker/service_worker_object_host_unittest.cc +@@ -200,6 +200,19 @@ + return registration_info; + } + ++ void CallOnConnectionError(ServiceWorkerContainerHost* container_host, ++ int64_t version_id) { ++ // ServiceWorkerObjectHost has the last reference to the version. ++ ServiceWorkerObjectHost* object_host = ++ GetServiceWorkerObjectHost(container_host, version_id); ++ EXPECT_TRUE(object_host->version_->HasOneRef()); ++ ++ // Make sure that OnConnectionError induces destruction of the version and ++ // the object host. ++ object_host->receivers_.Clear(); ++ object_host->OnConnectionError(); ++ } ++ + BrowserTaskEnvironment task_environment_; + std::unique_ptr<EmbeddedWorkerTestHelper> helper_; + scoped_refptr<ServiceWorkerRegistration> registration_; +@@ -409,5 +422,30 @@ + events[0]->source_info_for_client->client_type); + } + ++// This is a regression test for https://crbug.com/1056598. ++TEST_F(ServiceWorkerObjectHostTest, OnConnectionError) { ++ const GURL scope("https://www.example.com/"); ++ const GURL script_url("https://www.example.com/service_worker.js"); ++ Initialize(std::make_unique<EmbeddedWorkerTestHelper>(base::FilePath())); ++ SetUpRegistration(scope, script_url); ++ ++ // Create the provider host. ++ ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, ++ StartServiceWorker(version_.get())); ++ ++ // Set up the case where the last reference to the version is owned by the ++ // service worker object host. ++ ServiceWorkerContainerHost* container_host = ++ version_->provider_host()->container_host(); ++ ServiceWorkerVersion* version_rawptr = version_.get(); ++ version_ = nullptr; ++ ASSERT_TRUE(version_rawptr->HasOneRef()); ++ ++ // Simulate the connection error that induces the object host destruction. ++ // This shouldn't crash. ++ CallOnConnectionError(container_host, version_rawptr->version_id()); ++ base::RunLoop().RunUntilIdle(); ++} ++ + } // namespace service_worker_object_host_unittest + } // namespace content diff --git a/www-client/chromium/files/chromium-shim_headers.patch b/www-client/chromium/files/chromium-shim_headers.patch new file mode 100644 index 0000000..9372632 --- /dev/null +++ b/www-client/chromium/files/chromium-shim_headers.patch @@ -0,0 +1,48 @@ +From e273172bbafedca36984fc40f4aa6c44b79ac2ef Mon Sep 17 00:00:00 2001 +From: Stephan Hartmann <stha09@googlemail.com> +Date: Fri, 25 Dec 2020 09:10:32 +0000 +Subject: [PATCH] shim_headers: fix outputs generation + +--- + build/shim_headers.gni | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/build/shim_headers.gni b/build/shim_headers.gni +index 0900cba..5138647 100644 +--- a/build/shim_headers.gni ++++ b/build/shim_headers.gni +@@ -6,6 +6,8 @@ template("shim_headers") { + action_name = "gen_${target_name}" + config_name = "${target_name}_config" + shim_headers_path = "${root_gen_dir}/shim_headers/${target_name}" ++ shim_root_path = rebase_path(invoker.root_path) ++ shim_rel_path = rebase_path("${shim_root_path}", rebase_path("//")) + + config(config_name) { + include_dirs = [ shim_headers_path ] +@@ -16,7 +18,7 @@ template("shim_headers") { + args = [ + "--generate", + "--headers-root", +- rebase_path(invoker.root_path), ++ "${shim_root_path}", + "--output-directory", + rebase_path(shim_headers_path), + ] +@@ -27,9 +29,10 @@ template("shim_headers") { + ] + } + args += invoker.headers +- +- outputs = process_file_template(invoker.headers, +- "${shim_headers_path}/{{source_file_part}}") ++ outputs = [] ++ foreach(shim_header, invoker.headers) { ++ outputs += [ "${shim_headers_path}/${shim_rel_path}/" + shim_header ] ++ } + } + + group(target_name) { +-- +2.26.2 + diff --git a/www-client/chromium/files/chromium-simhash-include-84.patch b/www-client/chromium/files/chromium-simhash-include-84.patch new file mode 100644 index 0000000..eb77921 --- /dev/null +++ b/www-client/chromium/files/chromium-simhash-include-84.patch @@ -0,0 +1,26 @@ +diff --git a/components/federated_learning/sim_hash.cc b/components/federated_learning/sim_hash.cc +index 3624459f3..9287dbe72 100644 +--- a/components/federated_learning/sim_hash.cc ++++ b/components/federated_learning/sim_hash.cc +@@ -6,6 +6,7 @@ + + #include "base/hash/legacy_hash.h" + ++#include <cmath> + #include <algorithm> + + namespace federated_learning { +diff --git a/components/federated_learning/sim_hash.h b/components/federated_learning/sim_hash.h +index 55030d9d2..26087e74e 100644 +--- a/components/federated_learning/sim_hash.h ++++ b/components/federated_learning/sim_hash.h +@@ -5,7 +5,9 @@ + #ifndef COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ + #define COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ + ++#include <stdint.h> + #include <set> ++#include <string> + #include <unordered_set> + + namespace federated_learning { diff --git a/www-client/chromium/files/chromium-simhash-include-85.patch b/www-client/chromium/files/chromium-simhash-include-85.patch new file mode 100644 index 0000000..4075548 --- /dev/null +++ b/www-client/chromium/files/chromium-simhash-include-85.patch @@ -0,0 +1,15 @@ +diff --git a/components/federated_learning/sim_hash.h b/components/federated_learning/sim_hash.h +index 55030d9d2..ab7e57132 100644 +--- a/components/federated_learning/sim_hash.h ++++ b/components/federated_learning/sim_hash.h +@@ -5,7 +5,10 @@ + #ifndef COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ + #define COMPONENTS_FEDERATED_LEARNING_SIM_HASH_H_ + ++#include <stdint.h> ++ + #include <set> ++#include <string> + #include <unordered_set> + + namespace federated_learning { diff --git a/www-client/chromium/files/chromium-sqrt.patch b/www-client/chromium/files/chromium-sqrt.patch new file mode 100644 index 0000000..4e391fd --- /dev/null +++ b/www-client/chromium/files/chromium-sqrt.patch @@ -0,0 +1,13 @@ +diff --git a/ui/gfx/color_utils.cc b/ui/gfx/color_utils.cc +index c868cd54b..ed33c5c18 100644 +--- a/ui/gfx/color_utils.cc ++++ b/ui/gfx/color_utils.cc +@@ -431,7 +431,7 @@ SkColor SetDarkestColorForTesting(SkColor color) { + // GetContrastRatio(kWhiteLuminance, g_luminance_midpoint). The formula below + // can be verified by plugging it into how GetContrastRatio() operates. + g_luminance_midpoint = +- std::sqrtf((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; ++ (float)std::sqrt((dark_luminance + 0.05f) * (kWhiteLuminance + 0.05f)) - 0.05f; + + return previous_darkest_color; + } diff --git a/www-client/chromium/files/chromium-std-nullptr-83.patch b/www-client/chromium/files/chromium-std-nullptr-83.patch new file mode 100644 index 0000000..a2efc76 --- /dev/null +++ b/www-client/chromium/files/chromium-std-nullptr-83.patch @@ -0,0 +1,22 @@ +diff --git a/third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h b/third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h +index a6b8547f5..5fa03cb35 100644 +--- a/third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h ++++ b/third_party/blink/renderer/core/typed_arrays/array_buffer_view_helpers.h +@@ -36,7 +36,7 @@ class NotShared { + template <typename U, std::enable_if_t<std::is_base_of<T, U>::value, int> = 0> + NotShared(const NotShared<U>& other) : typed_array_(other.Get()) {} + +- explicit NotShared(nullptr_t) {} ++ explicit NotShared(std::nullptr_t) {} + explicit NotShared(T* typed_array) : typed_array_(typed_array) { + DCHECK(!typed_array || !typed_array->IsShared()); + } +@@ -95,7 +95,7 @@ class MaybeShared { + template <typename U, std::enable_if_t<std::is_base_of<T, U>::value, int> = 0> + MaybeShared(const MaybeShared<U>& other) : typed_array_(other.Get()) {} + +- explicit MaybeShared(nullptr_t) {} ++ explicit MaybeShared(std::nullptr_t) {} + // [AllowShared] array buffer view may be a view of non-shared array buffer, + // so we don't check if the buffer is SharedArrayBuffer or not. + // https://heycam.github.io/webidl/#AllowShared diff --git a/www-client/chromium/files/chromium-stdint.patch b/www-client/chromium/files/chromium-stdint.patch new file mode 100644 index 0000000..8774439 --- /dev/null +++ b/www-client/chromium/files/chromium-stdint.patch @@ -0,0 +1,21 @@ +From 0235c2b657d936f3cdb09053776e5929fc84704b Mon Sep 17 00:00:00 2001 +From: Tomas Popela <tomas.popela@gmail.com> +Date: Wed, 31 Jan 2018 18:57:07 +0000 +Subject: [PATCH] Add missing stdint include + +diff --git a/chrome/browser/vr/sample_queue.cc b/chrome/browser/vr/sample_queue.cc +index c2ca777ce90c..53cb3aab1576 100644 +--- a/chrome/browser/vr/sample_queue.cc ++++ b/chrome/browser/vr/sample_queue.cc +@@ -2,6 +2,8 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + ++#include <stdint.h> ++ + #include "chrome/browser/vr/sample_queue.h" + + namespace vr { +-- +2.16.2 + diff --git a/www-client/chromium/files/chromium-stdset.patch b/www-client/chromium/files/chromium-stdset.patch new file mode 100644 index 0000000..6ac0346 --- /dev/null +++ b/www-client/chromium/files/chromium-stdset.patch @@ -0,0 +1,13 @@ +diff --git a/components/language/core/browser/language_prefs.cc b/components/language/core/browser/language_prefs.cc +index 317aa1d82..df258ca62 100644 +--- a/components/language/core/browser/language_prefs.cc ++++ b/components/language/core/browser/language_prefs.cc +@@ -85,7 +85,7 @@ void LanguagePrefs::ResetEmptyFluentLanguagesToDefault() { + } + + base::Value LanguagePrefs::GetDefaultFluentLanguages() { +- std::set<const std::string> languages; ++ std::set<std::string> languages; + #if defined(OS_CHROMEOS) + // Preferred languages. + std::string language = language::kFallbackInputMethodLocale; diff --git a/www-client/chromium/files/chromium-string_view-79.patch b/www-client/chromium/files/chromium-string_view-79.patch new file mode 100644 index 0000000..11ad56d --- /dev/null +++ b/www-client/chromium/files/chromium-string_view-79.patch @@ -0,0 +1,78 @@ +diff --git a/components/safe_browsing/browser/threat_details.cc b/components/safe_browsing/browser/threat_details.cc +index 05bcd3ff3..5149e911d 100644 +--- a/components/safe_browsing/browser/threat_details.cc ++++ b/components/safe_browsing/browser/threat_details.cc +@@ -8,7 +8,6 @@ + + #include <stddef.h> + #include <stdint.h> +-#include <string_view> + #include <unordered_set> + #include <utility> + #include <vector> +@@ -18,6 +17,7 @@ + #include "base/lazy_instance.h" + #include "base/metrics/histogram_macros.h" + #include "base/stl_util.h" ++#include "base/strings/string_piece.h" + #include "base/strings/string_util.h" + #include "base/task/post_task.h" + #include "components/history/core/browser/history_service.h" +@@ -312,7 +312,7 @@ void TrimElements(const std::set<int> target_ids, + } + + void DisableBackForwardCache(content::RenderFrameHost* rfh, +- std::string_view reason) { ++ base::StringPiece reason) { + content::WebContents::FromRenderFrameHost(rfh) + ->GetController() + .GetBackForwardCache() +diff --git a/content/browser/frame_host/back_forward_cache_impl.cc b/content/browser/frame_host/back_forward_cache_impl.cc +index a7c06949b..3c72b7e9e 100644 +--- a/content/browser/frame_host/back_forward_cache_impl.cc ++++ b/content/browser/frame_host/back_forward_cache_impl.cc +@@ -360,7 +360,7 @@ void BackForwardCacheImpl::PostTaskToDestroyEvictedFrames() { + } + + void BackForwardCacheImpl::DisableForRenderFrameHost(GlobalFrameRoutingId id, +- std::string_view reason) { ++ base::StringPiece reason) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + auto* rfh = RenderFrameHostImpl::FromID(id); + if (rfh) +diff --git a/content/browser/frame_host/back_forward_cache_impl.h b/content/browser/frame_host/back_forward_cache_impl.h +index 712594a3d..6ed6931a3 100644 +--- a/content/browser/frame_host/back_forward_cache_impl.h ++++ b/content/browser/frame_host/back_forward_cache_impl.h +@@ -175,7 +175,7 @@ class CONTENT_EXPORT BackForwardCacheImpl : public BackForwardCache { + + // BackForwardCache: + void DisableForRenderFrameHost(GlobalFrameRoutingId id, +- std::string_view reason) override; ++ base::StringPiece reason) override; + + private: + // Destroys all evicted frames in the BackForwardCache. +diff --git a/content/public/browser/back_forward_cache.h b/content/public/browser/back_forward_cache.h +index f7abe8bec..bb7298651 100644 +--- a/content/public/browser/back_forward_cache.h ++++ b/content/public/browser/back_forward_cache.h +@@ -5,8 +5,7 @@ + #ifndef CONTENT_PUBLIC_BROWSER_BACK_FORWARD_CACHE_H_ + #define CONTENT_PUBLIC_BROWSER_BACK_FORWARD_CACHE_H_ + +-#include <string_view> +- ++#include "base/strings/string_piece.h" + #include "content/common/content_export.h" + #include "content/public/browser/global_routing_id.h" + +@@ -43,7 +42,7 @@ class CONTENT_EXPORT BackForwardCache { + // |id|: If no RenderFrameHost can be found for the given id nothing happens. + // |reason|: Free form string to be used in logging and metrics. + virtual void DisableForRenderFrameHost(GlobalFrameRoutingId id, +- std::string_view reason) = 0; ++ base::StringPiece reason) = 0; + + protected: + BackForwardCache() = default; diff --git a/www-client/chromium/files/chromium-swiftshader-77.patch b/www-client/chromium/files/chromium-swiftshader-77.patch new file mode 100644 index 0000000..34d5032 --- /dev/null +++ b/www-client/chromium/files/chromium-swiftshader-77.patch @@ -0,0 +1,53 @@ +diff --git a/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn b/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn +index f4c826d..993ca6a 100644 +--- a/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn ++++ b/third_party/swiftshader/src/OpenGL/libEGL/BUILD.gn +@@ -78,6 +78,9 @@ + if (use_x11) { + sources += [ "../../Main/libX11.cpp" ] + } ++ inputs = [ ++ "libEGL.lds", ++ ] + ldflags = + [ "-Wl,--version-script=" + rebase_path("libEGL.lds", root_build_dir) ] + } +diff --git a/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn b/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn +index 571b08a..d7037ca 100644 +--- a/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn ++++ b/third_party/swiftshader/src/OpenGL/libGLESv2/BUILD.gn +@@ -127,6 +127,9 @@ + if (is_mac) { + ldflags = [ "-Wl,-install_name,@rpath/libswiftshader_libGLESv2.dylib" ] + } else if (is_linux) { ++ inputs = [ ++ "libGLESv2.lds", ++ ] + ldflags = [ "-Wl,--version-script=" + + rebase_path("libGLESv2.lds", root_build_dir) ] + } +diff --git a/third_party/swiftshader/src/Vulkan/BUILD.gn b/third_party/swiftshader/src/Vulkan/BUILD.gn +index 2627f03..6aeaec8 100644 +--- a/third_party/swiftshader/src/Vulkan/BUILD.gn ++++ b/third_party/swiftshader/src/Vulkan/BUILD.gn +@@ -99,7 +99,6 @@ + "VulkanPlatform.h", + "libVulkan.cpp", + "libvk_swiftshader.def", +- "libvk_swiftshader.lds", + "main.cpp", + "resource.h", + ] +@@ -109,8 +108,10 @@ + output_name = "libvulkan" + output_dir = "$root_out_dir/swiftshader" + +- if (is_linux) +- { ++ if (is_linux) { ++ inputs = [ ++ "libvk_swiftshader.lds", ++ ] + ldflags = [ "-Wl,--version-script=" + + rebase_path("libvk_swiftshader.lds", root_build_dir) ] + } diff --git a/www-client/chromium/files/chromium-unbundle-zlib.patch b/www-client/chromium/files/chromium-unbundle-zlib.patch new file mode 100644 index 0000000..d6c45ad --- /dev/null +++ b/www-client/chromium/files/chromium-unbundle-zlib.patch @@ -0,0 +1,25 @@ +From e1bbdec720a333937bd1b990ae0f7ee97db0d3b0 Mon Sep 17 00:00:00 2001 +From: Your Name <you@example.com> +Date: Fri, 28 Jun 2019 15:56:23 +0000 +Subject: [PATCH] update zlib + +--- + third_party/perfetto/gn/BUILD.gn | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/perfetto/gn/BUILD.gn b/third_party/perfetto/gn/BUILD.gn +index c951f5f..297eee3 100644 +--- a/third_party/perfetto/gn/BUILD.gn ++++ b/third_party/perfetto/gn/BUILD.gn +@@ -200,7 +200,7 @@ group("zlib") { + "//buildtools:zlib", + ] + } else if (build_with_chromium) { +- public_configs = [ "//third_party/zlib:zlib_config" ] ++ public_configs = [ "//third_party/zlib:system_zlib" ] + public_deps = [ + "//third_party/zlib", + ] +-- +2.21.0 + diff --git a/www-client/chromium/files/chromium-union.patch b/www-client/chromium/files/chromium-union.patch new file mode 100644 index 0000000..be41f6d --- /dev/null +++ b/www-client/chromium/files/chromium-union.patch @@ -0,0 +1,54 @@ +diff --git a/base/values.h b/base/values.h +index 6f2cd3cc3..7f148d259 100644 +--- a/base/values.h ++++ b/base/values.h +@@ -415,42 +415,13 @@ class BASE_EXPORT Value { + // of 24, without losing any information. Results are unchanged for x86, + // x86_64 and arm64 (16, 32 and 32 bytes respectively). + union { +- struct { +- // TODO(crbug.com/646113): Make these private once DictionaryValue and +- // ListValue are properly inlined. +- Type type_ : 8; +- }; +- struct { +- Type bool_type_ : 8; +- bool bool_value_; +- }; +- struct { +- Type int_type_ : 8; +- int int_value_; +- }; +- struct { +- Type double_type_ : 8; +- // Subtle: On architectures that require it, the compiler will ensure +- // that |double_value_|'s offset is a multiple of 8 (e.g. 32-bit ARM). +- // See technical note above to understand why it is important. +- double double_value_; +- }; +- struct { +- Type string_type_ : 8; +- std::string string_value_; +- }; +- struct { +- Type binary_type_ : 8; +- BlobStorage binary_value_; +- }; +- struct { +- Type dict_type_ : 8; +- DictStorage dict_; +- }; +- struct { +- Type list_type_ : 8; +- ListStorage list_; +- }; ++ bool bool_value_; ++ int int_value_; ++ double double_value_; ++ std::string string_value_; ++ BlobStorage binary_value_; ++ DictStorage dict_; ++ ListStorage list_; + }; + + private: diff --git a/www-client/chromium/files/chromium-unique_ptr-80-r1.patch b/www-client/chromium/files/chromium-unique_ptr-80-r1.patch new file mode 100644 index 0000000..fb377db --- /dev/null +++ b/www-client/chromium/files/chromium-unique_ptr-80-r1.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/renderer/core/core_initializer.h b/third_party/blink/renderer/core/core_initializer.h +index 5e67f468f..3f6d8de03 100644 +--- a/third_party/blink/renderer/core/core_initializer.h ++++ b/third_party/blink/renderer/core/core_initializer.h +@@ -31,6 +31,8 @@ + #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CORE_INITIALIZER_H_ + #define THIRD_PARTY_BLINK_RENDERER_CORE_CORE_INITIALIZER_H_ + ++#include <memory> ++ + #include "base/macros.h" + #include "third_party/blink/public/common/dom_storage/session_storage_namespace_id.h" + #include "third_party/blink/renderer/core/core_export.h" diff --git a/www-client/chromium/files/chromium-unique_ptr-80.patch b/www-client/chromium/files/chromium-unique_ptr-80.patch new file mode 100644 index 0000000..4da5f0b --- /dev/null +++ b/www-client/chromium/files/chromium-unique_ptr-80.patch @@ -0,0 +1,12 @@ +diff --git a/net/dns/address_info.h b/net/dns/address_info.h +index 782898535..95bc277c3 100644 +--- a/net/dns/address_info.h ++++ b/net/dns/address_info.h +@@ -5,6 +5,7 @@ + #ifndef NET_DNS_ADDRESS_INFO_H_ + #define NET_DNS_ADDRESS_INFO_H_ + ++#include <memory> + #include <string> + #include <tuple> + diff --git a/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch b/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch new file mode 100644 index 0000000..9d9c57b --- /dev/null +++ b/www-client/chromium/files/chromium-use-oauth2-client-switches-as-default.patch @@ -0,0 +1,17 @@ +diff -upr chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc chromium-89.0.4389.58/google_apis/google_api_keys.cc +--- chromium-89.0.4389.58.orig/google_apis/google_api_keys.cc 2021-02-24 22:37:18.494007649 +0000 ++++ chromium-89.0.4389.58/google_apis/google_api_keys.cc 2021-02-24 22:35:00.865777600 +0000 +@@ -154,11 +154,11 @@ class APIKeyCache { + + std::string default_client_id = CalculateKeyValue( + GOOGLE_DEFAULT_CLIENT_ID, +- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), nullptr, ++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), ::switches::kOAuth2ClientID, + std::string(), environment.get(), command_line, gaia_config); + std::string default_client_secret = CalculateKeyValue( + GOOGLE_DEFAULT_CLIENT_SECRET, +- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), nullptr, ++ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), ::switches::kOAuth2ClientSecret, + std::string(), environment.get(), command_line, gaia_config); + + // We currently only allow overriding the baked-in values for the diff --git a/www-client/chromium/files/chromium-vaapi-76-r1.patch b/www-client/chromium/files/chromium-vaapi-76-r1.patch new file mode 100644 index 0000000..6080901 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-76-r1.patch @@ -0,0 +1,213 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index f3759b099..11c0982ab 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1314,7 +1314,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_CHROMEOS) +@@ -1768,12 +1768,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index d05bc47f4..5d5c77b5e 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2760,13 +2760,22 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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."; ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index aef7105e3..149c5c034 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1650,11 +1650,17 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc +index 53292ae76..d5007860c 100644 +--- a/components/viz/service/main/viz_main_impl.cc ++++ b/components/viz/service/main/viz_main_impl.cc +@@ -36,7 +36,7 @@ std::unique_ptr<base::Thread> CreateAndStartIOThread() { + // It should be possible to use |main_task_runner_| for doing IO tasks. + base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0); + thread_options.priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // TODO(reveman): Remove this in favor of setting it explicitly for each + // type of process. + thread_options.priority = base::ThreadPriority::DISPLAY; +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 2b1165264..fec963bd9 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -127,4 +128,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc +index a838f0ccf..4c891fb92 100644 +--- a/content/gpu/gpu_main.cc ++++ b/content/gpu/gpu_main.cc +@@ -288,7 +288,7 @@ int GpuMain(const MainFunctionParams& parameters) { + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -321,7 +321,7 @@ int GpuMain(const MainFunctionParams& parameters) { + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 0042a3457..efe1b3f4d 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -369,17 +369,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 2e364d0cf..728cab164 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -520,7 +520,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index 1324da986..b4d235f50 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -207,7 +208,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 2020a4c23..af61e3e75 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -499,9 +499,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media:test_support" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-76.patch b/www-client/chromium/files/chromium-vaapi-76.patch new file mode 100644 index 0000000..6b9c372 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-76.patch @@ -0,0 +1,218 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index e727a7633..321ec6374 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1344,7 +1344,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + #if defined(OS_WIN) +@@ -1840,12 +1840,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"v8-cache-options", flag_descriptions::kV8CacheOptionsName, + flag_descriptions::kV8CacheOptionsDescription, kOsAll, + MULTI_VALUE_TYPE(kV8CacheOptionsChoices)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index e935e0fd6..3225adb3b 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2873,13 +2873,22 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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."; ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 8450a5b76..80b68b724 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1723,11 +1723,17 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc +index a5a38f8ec..7a110c4f9 100644 +--- a/components/viz/service/main/viz_main_impl.cc ++++ b/components/viz/service/main/viz_main_impl.cc +@@ -36,7 +36,7 @@ std::unique_ptr<base::Thread> CreateAndStartIOThread() { + // It should be possible to use |main_task_runner_| for doing IO tasks. + base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0); + thread_options.priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // TODO(reveman): Remove this in favor of setting it explicitly for each + // type of process. + thread_options.priority = base::ThreadPriority::DISPLAY; +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 2b1165264..fec963bd9 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -127,4 +128,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc +index a838f0ccf..4c891fb92 100644 +--- a/content/gpu/gpu_main.cc ++++ b/content/gpu/gpu_main.cc +@@ -288,7 +288,7 @@ int GpuMain(const MainFunctionParams& parameters) { + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -321,7 +321,7 @@ int GpuMain(const MainFunctionParams& parameters) { + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index d4c3b4364..935fdeb86 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -369,17 +369,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index a8b11a3b9..a6ac202f9 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -509,7 +509,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index 4fac91144..7086ada95 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -211,7 +212,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 6eed6db69..ffd81b968 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -510,6 +510,13 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ ++ + if (use_v4l2_codec || use_vaapi) { + test("jpeg_encode_accelerator_unittest") { + deps = [ +@@ -580,6 +587,7 @@ if (is_chromeos || is_linux) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + diff --git a/www-client/chromium/files/chromium-vaapi-77.patch b/www-client/chromium/files/chromium-vaapi-77.patch new file mode 100644 index 0000000..01ad8c5 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-77.patch @@ -0,0 +1,213 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index b6747f0d7..5c8a4d3e1 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1420,7 +1420,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -1867,12 +1867,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // ENABLE_ISOLATED_XR_SERVICE + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 8573fb58f..ece9a30ea 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2791,13 +2791,22 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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."; ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index f21e223fc..f9527ea64 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1661,11 +1661,17 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc +index 53292ae76..d5007860c 100644 +--- a/components/viz/service/main/viz_main_impl.cc ++++ b/components/viz/service/main/viz_main_impl.cc +@@ -36,7 +36,7 @@ std::unique_ptr<base::Thread> CreateAndStartIOThread() { + // It should be possible to use |main_task_runner_| for doing IO tasks. + base::Thread::Options thread_options(base::MessageLoop::TYPE_IO, 0); + thread_options.priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // TODO(reveman): Remove this in favor of setting it explicitly for each + // type of process. + thread_options.priority = base::ThreadPriority::DISPLAY; +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 29e78fec4..0ab429013 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -128,4 +129,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc +index bf47f4738..73a8b2daa 100644 +--- a/content/gpu/gpu_main.cc ++++ b/content/gpu/gpu_main.cc +@@ -294,7 +294,7 @@ int GpuMain(const MainFunctionParams& parameters) { + + base::PlatformThread::SetName("CrGpuMain"); + +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + // Set thread priority before sandbox initialization. + base::PlatformThread::SetCurrentThreadPriority(base::ThreadPriority::DISPLAY); + #endif +@@ -327,7 +327,7 @@ int GpuMain(const MainFunctionParams& parameters) { + GetContentClient()->SetGpuInfo(gpu_init->gpu_info()); + + base::ThreadPriority io_thread_priority = base::ThreadPriority::NORMAL; +-#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) ++#if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(USE_OZONE) || defined(OS_LINUX) + io_thread_priority = base::ThreadPriority::DISPLAY; + #endif + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 03e251547..9eb0f1148 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -368,17 +368,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 4652a24f4..4e5259a9e 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -528,7 +528,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index 13d433354..8d89253fb 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -196,7 +197,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index b3f43cd64..1d4a432fd 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -521,9 +521,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media:test_support" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-78-r1.patch b/www-client/chromium/files/chromium-vaapi-78-r1.patch new file mode 100644 index 0000000..8e9aeb4 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-78-r1.patch @@ -0,0 +1,220 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index ce15485ef..097b757dd 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1704,7 +1704,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2184,12 +2184,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 87d4934a5..2f4842e2e 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3049,7 +3049,7 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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"; +@@ -3057,6 +3057,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +@@ -3577,17 +3592,6 @@ const char kUsbguardDescription[] = + " until Chrome OS is unlocked to protect against malicious USB devices." + " Already connected USB devices will continue to function."; + +-const char kVaapiJpegImageDecodeAccelerationName[] = +- "VA-API JPEG decode acceleration for images"; +-const char kVaapiJpegImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of JPEG images (as opposed to camera" +- " captures) using the VA-API."; +- +-const char kVaapiWebPImageDecodeAccelerationName[] = +- "VA-API WebP decode acceleration for images"; +-const char kVaapiWebPImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of WebP images using the VA-API."; +- + const char kVirtualKeyboardName[] = "Virtual Keyboard"; + const char kVirtualKeyboardDescription[] = "Enable virtual keyboard support."; + +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 1b73f5985..61d965e7d 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1812,11 +1812,21 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +@@ -2144,12 +2154,6 @@ extern const char kUsbguardDescription[]; + extern const char kUseMonitorColorSpaceName[]; + extern const char kUseMonitorColorSpaceDescription[]; + +-extern const char kVaapiJpegImageDecodeAccelerationName[]; +-extern const char kVaapiJpegImageDecodeAccelerationDescription[]; +- +-extern const char kVaapiWebPImageDecodeAccelerationName[]; +-extern const char kVaapiWebPImageDecodeAccelerationDescription[]; +- + extern const char kVirtualKeyboardName[]; + extern const char kVirtualKeyboardDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 0939d25cc..69f31c724 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -128,4 +129,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index ea1294e4c..5ba052ec6 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -332,17 +332,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 08c606b39..0ac5dce80 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -582,7 +582,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index ac554920d..e10321d88 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -196,7 +197,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 85cb6c363..95ae2bb1e 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -525,9 +525,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media:test_support" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-78.patch b/www-client/chromium/files/chromium-vaapi-78.patch new file mode 100644 index 0000000..8525792 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-78.patch @@ -0,0 +1,178 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 1f68539de..e739ed7e0 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1605,7 +1605,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2075,12 +2075,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 81b32eb3e..0b3396198 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2919,13 +2919,22 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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."; ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++#endif // defined(OS_CHROMEOS) defined(OS_LINUX) and !defined(OS_ANDROID) ++ ++#if defined(OS_CHROMEOS) + + const char kAppServiceAshName[] = "App Service Ash"; + const char kAppServiceAshDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index e079d7aa2..761d28974 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1733,11 +1733,17 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) + extern const char kAppServiceAshName[]; + extern const char kAppServiceAshDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 0939d25cc..69f31c724 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -128,4 +129,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 9def82b55..1f5a03ea0 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -368,17 +368,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 37f1a2380..d21c59439 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -550,7 +550,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index f33ca5866..70736d7fc 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -196,7 +197,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index eec3b7fc7..aa27959b1 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -533,9 +533,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media:test_support" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-79.patch b/www-client/chromium/files/chromium-vaapi-79.patch new file mode 100644 index 0000000..dc2c1ee --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-79.patch @@ -0,0 +1,220 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 2a4ca2365..a657df74d 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1747,7 +1747,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2219,12 +2219,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 929544e4f..be0884a73 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3080,7 +3080,7 @@ const char kMacSystemMediaPermissionsInfoUiDescription[] = + + // 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"; +@@ -3088,6 +3088,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +@@ -3618,17 +3633,6 @@ const char kUsbguardDescription[] = + " until Chrome OS is unlocked to protect against malicious USB devices." + " Already connected USB devices will continue to function."; + +-const char kVaapiJpegImageDecodeAccelerationName[] = +- "VA-API JPEG decode acceleration for images"; +-const char kVaapiJpegImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of JPEG images (as opposed to camera" +- " captures) using the VA-API."; +- +-const char kVaapiWebPImageDecodeAccelerationName[] = +- "VA-API WebP decode acceleration for images"; +-const char kVaapiWebPImageDecodeAccelerationDescription[] = +- "Enable or disable decode acceleration of WebP images using the VA-API."; +- + const char kVirtualKeyboardName[] = "Virtual Keyboard"; + const char kVirtualKeyboardDescription[] = "Enable virtual keyboard support."; + +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index dc9450374..93fc6f14f 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1822,11 +1822,21 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +@@ -2160,12 +2170,6 @@ extern const char kUseFakeDeviceForMediaStreamDescription[]; + extern const char kUseMonitorColorSpaceName[]; + extern const char kUseMonitorColorSpaceDescription[]; + +-extern const char kVaapiJpegImageDecodeAccelerationName[]; +-extern const char kVaapiJpegImageDecodeAccelerationDescription[]; +- +-extern const char kVaapiWebPImageDecodeAccelerationName[]; +-extern const char kVaapiWebPImageDecodeAccelerationDescription[]; +- + extern const char kVirtualKeyboardName[]; + extern const char kVirtualKeyboardDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 0939d25cc..69f31c724 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -128,4 +129,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index ea1294e4c..5ba052ec6 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -332,17 +332,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index e7b6efa18..2a3ad90ae 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -612,7 +612,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn +index 481216a18..bde7319e6 100644 +--- a/media/filters/BUILD.gn ++++ b/media/filters/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/jumbo.gni") + import("//media/media_options.gni") + import("//third_party/libaom/options.gni") ++import("//media/gpu/args.gni") + + jumbo_source_set("filters") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -196,7 +197,7 @@ jumbo_source_set("filters") { + deps += [ "//media/base/android" ] + } + +- if (current_cpu != "arm" && is_linux) { ++ if (use_vaapi && is_linux) { + sources += [ + "h264_bitstream_buffer.cc", + "h264_bitstream_buffer.h", +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index c290ec2ef..1c06865b8 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -530,9 +530,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-80.patch b/www-client/chromium/files/chromium-vaapi-80.patch new file mode 100644 index 0000000..d9982dd --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-80.patch @@ -0,0 +1,168 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index f9ddeca39..a581bca3d 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1754,7 +1754,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2228,12 +2228,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 90a193991..87d1eedac 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3132,7 +3132,7 @@ const char kMetalDescription[] = + + // 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"; +@@ -3140,6 +3140,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 4d7349337..ea4838826 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1847,11 +1847,21 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index fde557cc3..b150ccbad 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -129,4 +130,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index c1da1d8b7..bd83de134 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -332,17 +332,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 981cb7a08..33f3e8312 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -632,7 +632,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 875c3515a..db52819f9 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -456,9 +456,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-81.patch b/www-client/chromium/files/chromium-vaapi-81.patch new file mode 100644 index 0000000..aac31c0 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-81.patch @@ -0,0 +1,181 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 54c97b37d..8a72db3ab 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1846,7 +1846,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2307,12 +2307,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 5c2b3f3fa..67edf526e 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3172,7 +3172,7 @@ const char kMetalDescription[] = + + // 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"; +@@ -3180,6 +3180,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index 384a7bed3..719b1fce5 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1872,11 +1872,21 @@ extern const char kPermissionPromptPersistenceToggleDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index d777b767b..34df35560 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -134,4 +135,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 837bb8dd2..36c79fe83 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -332,17 +332,6 @@ + "all" + ] + }, +- { +- "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", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index d089b3975..2c8c2b885 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -653,7 +653,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 76514826b..080a1d2ee 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -455,9 +455,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true +diff --git a/media/gpu/test/BUILD.gn b/media/gpu/test/BUILD.gn +index 21ff52759..9f3232a1b 100644 +--- a/media/gpu/test/BUILD.gn ++++ b/media/gpu/test/BUILD.gn +@@ -158,7 +158,7 @@ if (use_vaapi || use_v4l2_codec) { + } + } + +-if (is_chromeos) { ++if (is_chromeos || is_linux) { + static_library("local_gpu_memory_buffer_manager") { + testonly = true + sources = [ diff --git a/www-client/chromium/files/chromium-vaapi-82.patch b/www-client/chromium/files/chromium-vaapi-82.patch new file mode 100644 index 0000000..18115e3 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-82.patch @@ -0,0 +1,186 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 77785e7a8..303f8c9f7 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -1957,7 +1957,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2390,12 +2390,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)}, + #endif // !defined(OS_ANDROID) + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 3a5ea1399..f92d626fa 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2995,7 +2995,7 @@ const char kMetalDescription[] = + + // 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"; +@@ -3003,6 +3003,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index a3c3bf194..8e0730dbd 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1724,11 +1724,21 @@ extern const char kMetalDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 088c791f0..464cf018c 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -131,4 +132,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 22712bdbf..a06dd19a5 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -335,22 +335,6 @@ + "all" + ] + }, +- { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247, 1032907], +- "os": { +- "type": "linux" +- }, +- "exceptions": [ +- { +- "machine_model_name": ["Chromecast"] +- } +- ], +- "features": [ +- "accelerated_video_decode" +- ] +- }, + { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index 4b271023c..94b0d8c79 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -693,7 +693,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index 13443f3d3..195208fed 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -451,9 +451,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true +diff --git a/media/gpu/test/BUILD.gn b/media/gpu/test/BUILD.gn +index 8d1275a43..71e5c9dca 100644 +--- a/media/gpu/test/BUILD.gn ++++ b/media/gpu/test/BUILD.gn +@@ -152,7 +152,7 @@ if (use_vaapi || use_v4l2_codec) { + } + } + +-if (is_chromeos) { ++if (is_chromeos || is_linux) { + static_library("local_gpu_memory_buffer_manager") { + testonly = true + sources = [ diff --git a/www-client/chromium/files/chromium-vaapi-83.patch b/www-client/chromium/files/chromium-vaapi-83.patch new file mode 100644 index 0000000..d614b94 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-83.patch @@ -0,0 +1,186 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 0524711d0..0477b7bbd 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -2092,7 +2092,7 @@ const FeatureEntry kFeatureEntries[] = { + "disable-accelerated-video-decode", + flag_descriptions::kAcceleratedVideoDecodeName, + flag_descriptions::kAcceleratedVideoDecodeDescription, +- kOsMac | kOsWin | kOsCrOS | kOsAndroid, ++ kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode), + }, + { +@@ -2514,12 +2514,12 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop, + MULTI_VALUE_TYPE(kWebXrForceRuntimeChoices)}, + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index 834232048..a77b963af 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -2954,7 +2954,7 @@ const char kMetalDescription[] = + + // 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"; +@@ -2962,6 +2962,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index f497d6197..5762ce62e 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1696,11 +1696,21 @@ extern const char kMetalDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 64ebb18c5..682b4ffeb 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -6,6 +6,7 @@ import("//build/config/jumbo.gni") + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -133,4 +134,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 7eefd9966..747971b46 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -335,22 +335,6 @@ + "all" + ] + }, +- { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247, 1032907], +- "os": { +- "type": "linux" +- }, +- "exceptions": [ +- { +- "machine_model_name": ["Chromecast"] +- } +- ], +- "features": [ +- "accelerated_video_decode" +- ] +- }, + { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index bc7f518ae..eed869232 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -714,7 +714,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index be9406674..95782e01a 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -457,9 +457,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true +diff --git a/media/gpu/test/BUILD.gn b/media/gpu/test/BUILD.gn +index 5dd95ec1f..3dd7a1a20 100644 +--- a/media/gpu/test/BUILD.gn ++++ b/media/gpu/test/BUILD.gn +@@ -182,7 +182,7 @@ if (use_vaapi || use_v4l2_codec) { + } + } + +-if (is_chromeos) { ++if (is_chromeos || is_linux) { + static_library("local_gpu_memory_buffer_manager") { + testonly = true + sources = [ diff --git a/www-client/chromium/files/chromium-vaapi-87.patch b/www-client/chromium/files/chromium-vaapi-87.patch new file mode 100644 index 0000000..508a2f4 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-87.patch @@ -0,0 +1,137 @@ +diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc +index 78eedbcbf..eda2d0c48 100644 +--- a/chrome/browser/about_flags.cc ++++ b/chrome/browser/about_flags.cc +@@ -3150,12 +3150,12 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kWebXrForceRuntimeDescription, kOsDesktop, + MULTI_VALUE_TYPE(kWebXrForceRuntimeChoices)}, + #endif // ENABLE_VR +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + {"disable-accelerated-mjpeg-decode", + flag_descriptions::kAcceleratedMjpegDecodeName, +- flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS, ++ flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux, + SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)}, +-#endif // OS_CHROMEOS ++#endif // OS_CHROMEOS OS_LINUX + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, +diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc +index e4f4cf856..d448035db 100644 +--- a/chrome/browser/flag_descriptions.cc ++++ b/chrome/browser/flag_descriptions.cc +@@ -3542,7 +3542,7 @@ const char kVideoToolboxVp9DecodingDescription[] = + + // 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"; +@@ -3550,6 +3550,21 @@ const char kAcceleratedMjpegDecodeDescription[] = + "Enable hardware-accelerated mjpeg decode for captured frame where " + "available."; + ++const char kVaapiJpegImageDecodeAccelerationName[] = ++ "VA-API JPEG decode acceleration for images"; ++const char kVaapiJpegImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of JPEG images (as opposed to camera" ++ " captures) using the VA-API."; ++ ++const char kVaapiWebPImageDecodeAccelerationName[] = ++ "VA-API WebP decode acceleration for images"; ++const char kVaapiWebPImageDecodeAccelerationDescription[] = ++ "Enable or disable decode acceleration of WebP images using the VA-API."; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + const char kAggregatedMlAppRankingName[] = "Rank suggested apps with ML."; + const char kAggregatedMlAppRankingDescription[] = + "Use the aggregated ML model to rank the suggested apps."; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +index a8a80f118..beddafe6f 100644 +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -2041,11 +2041,21 @@ extern const char kVideoToolboxVp9DecodingDescription[]; + + // Chrome OS ------------------------------------------------------------------ + +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID)) + + extern const char kAcceleratedMjpegDecodeName[]; + extern const char kAcceleratedMjpegDecodeDescription[]; + ++extern const char kVaapiJpegImageDecodeAccelerationName[]; ++extern const char kVaapiJpegImageDecodeAccelerationDescription[]; ++ ++extern const char kVaapiWebPImageDecodeAccelerationName[]; ++extern const char kVaapiWebPImageDecodeAccelerationDescription[]; ++ ++#endif ++ ++#if defined(OS_CHROMEOS) ++ + extern const char kAggregatedMlAppRankingName[]; + extern const char kAggregatedMlAppRankingDescription[]; + +diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn +index 747df62b1..eb973a881 100644 +--- a/content/gpu/BUILD.gn ++++ b/content/gpu/BUILD.gn +@@ -5,6 +5,7 @@ + import("//build/config/ui.gni") + import("//gpu/vulkan/features.gni") + import("//media/media_options.gni") ++import("//media/gpu/args.gni") + import("//ui/ozone/ozone.gni") + + # See //content/BUILD.gn for how this works. +@@ -128,4 +129,8 @@ target(link_target_type, "gpu_sources") { + (!is_chromecast || is_cast_desktop_build)) { + configs += [ "//build/config/linux/dri" ] + } ++ # Use vaapi on desktop Linux builds when use_vaapi is set ++ if (is_desktop_linux && use_vaapi) { ++ public_configs = [ "//media/gpu:libva_config" ] ++ } + } +diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc +index d9cf7349d..03d6ba73f 100644 +--- a/media/base/media_switches.cc ++++ b/media/base/media_switches.cc +@@ -792,7 +792,7 @@ bool IsVideoCaptureAcceleratedJpegDecodingEnabled() { + switches::kUseFakeMjpegDecodeAccelerator)) { + return true; + } +-#if defined(OS_CHROMEOS) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) + return true; + #endif + return false; +diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn +index e3d961939..4e2963f9f 100644 +--- a/media/gpu/BUILD.gn ++++ b/media/gpu/BUILD.gn +@@ -462,9 +462,16 @@ if (use_v4l2_codec || use_vaapi || is_mac || is_win) { + if (use_ozone) { + deps += [ "//ui/ozone" ] + } ++ public_configs = [ ":libva_config" ] + } + } + ++import("//build/config/linux/pkg_config.gni") ++ ++pkg_config("libva_config") { ++ packages = [ "libva" ] ++} ++ + static_library("test_support") { + visibility = [ "//media/gpu/*" ] + testonly = true diff --git a/www-client/chromium/files/chromium-vaapi-fix-87.patch b/www-client/chromium/files/chromium-vaapi-fix-87.patch new file mode 100644 index 0000000..231434b --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-fix-87.patch @@ -0,0 +1,200 @@ +diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc +index 843cf226e..af0389503 100644 +--- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc ++++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc +@@ -7,6 +7,8 @@ + #include "media/gpu/vaapi/va_surface.h" + #include "media/gpu/vaapi/vaapi_wrapper.h" + #include "ui/base/ui_base_features.h" ++#include "ui/gfx/x/connection.h" ++#include "ui/gfx/x/xproto.h" + #include "ui/gl/gl_bindings.h" + #include "ui/gl/gl_image_egl_pixmap.h" + #include "ui/gl/scoped_binders.h" +@@ -15,25 +17,31 @@ namespace media { + + namespace { + +-inline Pixmap CreatePixmap(const gfx::Size& size) { +- auto* display = gfx::GetXDisplay(); +- if (!display) +- return 0; ++inline ::Pixmap CreatePixmap(const gfx::Size& size) { ++ auto* connection = x11::Connection::Get(); ++ if (!connection->Ready()) ++ return base::strict_cast<::Pixmap>(x11::Pixmap::None); + +- int screen = DefaultScreen(display); +- auto root = XRootWindow(display, screen); +- if (root == BadValue) +- return 0; ++ auto root = connection->default_root(); + +- XWindowAttributes win_attr = {}; +- // returns 0 on failure, see: +- // https://tronche.com/gui/x/xlib/introduction/errors.html#Status +- if (!XGetWindowAttributes(display, root, &win_attr)) +- return 0; ++ uint8_t depth = 0; ++ if (auto reply = connection->GetGeometry({root}).Sync()) ++ depth = reply->depth; ++ else ++ return base::strict_cast<::Pixmap>(x11::Pixmap::None); + + // TODO(tmathmeyer) should we use the depth from libva instead of root window? +- return XCreatePixmap(display, root, size.width(), size.height(), +- win_attr.depth); ++ auto pixmap = connection->GenerateId<x11::Pixmap>(); ++ uint16_t pixmap_width, pixmap_height; ++ if (!base::CheckedNumeric<int>(size.width()).AssignIfValid(&pixmap_width) || ++ !base::CheckedNumeric<int>(size.height()).AssignIfValid(&pixmap_height)) { ++ return base::strict_cast<::Pixmap>(x11::Pixmap::None); ++ } ++ auto req = connection->CreatePixmap( ++ {depth, pixmap, root, pixmap_width, pixmap_height}); ++ if (req.Sync().error) ++ pixmap = x11::Pixmap::None; ++ return base::strict_cast<::Pixmap>(pixmap); + } + + } // namespace +@@ -71,11 +79,8 @@ VaapiPictureNativePixmapAngle::~VaapiPictureNativePixmapAngle() { + DCHECK_EQ(glGetError(), static_cast<GLenum>(GL_NO_ERROR)); + } + +- if (x_pixmap_) { +- if (auto* display = gfx::GetXDisplay()) { +- XFreePixmap(display, x_pixmap_); +- } +- } ++ if (x_pixmap_) ++ x11::Connection::Get()->FreePixmap({static_cast<x11::Pixmap>(x_pixmap_)}); + } + + Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) { +diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h +index de4698abe..41f52376d 100644 +--- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h ++++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h +@@ -46,7 +46,7 @@ class VaapiPictureNativePixmapAngle : public VaapiPictureNativePixmap { + VASurfaceID va_surface_id() const override; + + private: +- Pixmap x_pixmap_ = 0; ++ ::Pixmap x_pixmap_ = 0; + + DISALLOW_COPY_AND_ASSIGN(VaapiPictureNativePixmapAngle); + }; +diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc +index 9ff0372fa..a571b4b2b 100644 +--- a/media/gpu/vaapi/vaapi_picture_tfp.cc ++++ b/media/gpu/vaapi/vaapi_picture_tfp.cc +@@ -7,6 +7,7 @@ + #include "media/gpu/vaapi/va_surface.h" + #include "media/gpu/vaapi/vaapi_wrapper.h" + #include "ui/base/ui_base_features.h" ++#include "ui/gfx/x/connection.h" + #include "ui/gfx/x/x11_types.h" + #include "ui/gl/gl_bindings.h" + #include "ui/gl/gl_image_glx.h" +@@ -33,7 +34,7 @@ VaapiTFPPicture::VaapiTFPPicture( + texture_id, + client_texture_id, + texture_target), +- x_display_(gfx::GetXDisplay()), ++ connection_(x11::Connection::Get()), + x_pixmap_(0) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!features::IsUsingOzonePlatform()); +@@ -49,7 +50,7 @@ VaapiTFPPicture::~VaapiTFPPicture() { + } + + if (x_pixmap_) +- XFreePixmap(x_display_, x_pixmap_); ++ connection_->FreePixmap({static_cast<x11::Pixmap>(x_pixmap_)}); + } + + Status VaapiTFPPicture::Initialize() { +@@ -84,16 +85,33 @@ Status VaapiTFPPicture::Allocate(gfx::BufferFormat format) { + return StatusCode::kVaapiUnsupportedFormat; + } + +- XWindowAttributes win_attr; +- int screen = DefaultScreen(x_display_); +- XGetWindowAttributes(x_display_, XRootWindow(x_display_, screen), &win_attr); ++ if (!connection_->Ready()) ++ return StatusCode::kVaapiNoPixmap; ++ ++ auto root = connection_->default_root(); ++ ++ uint8_t depth = 0; ++ if (auto reply = connection_->GetGeometry({root}).Sync()) ++ depth = reply->depth; ++ else ++ return StatusCode::kVaapiNoPixmap; ++ + // TODO(posciak): pass the depth required by libva, not the RootWindow's + // depth +- x_pixmap_ = XCreatePixmap(x_display_, XRootWindow(x_display_, screen), +- size_.width(), size_.height(), win_attr.depth); +- if (!x_pixmap_) { ++ auto pixmap = connection_->GenerateId<x11::Pixmap>(); ++ uint16_t pixmap_width, pixmap_height; ++ if (!base::CheckedNumeric<int>(size_.width()).AssignIfValid(&pixmap_width) || ++ !base::CheckedNumeric<int>(size_.height()) ++ .AssignIfValid(&pixmap_height)) { ++ return StatusCode::kVaapiNoPixmap; ++ } ++ auto req = connection_->CreatePixmap( ++ {depth, pixmap, root, pixmap_width, pixmap_height}); ++ if (req.Sync().error) { + DLOG(ERROR) << "Failed creating an X Pixmap for TFP"; + return StatusCode::kVaapiNoPixmap; ++ } else { ++ x_pixmap_ = base::strict_cast<::Pixmap>(pixmap); + } + + return Initialize(); +diff --git a/media/gpu/vaapi/vaapi_picture_tfp.h b/media/gpu/vaapi/vaapi_picture_tfp.h +index c4eb2c1b5..8da323717 100644 +--- a/media/gpu/vaapi/vaapi_picture_tfp.h ++++ b/media/gpu/vaapi/vaapi_picture_tfp.h +@@ -11,6 +11,7 @@ + #include "base/memory/ref_counted.h" + #include "media/gpu/vaapi/vaapi_picture.h" + #include "ui/gfx/geometry/size.h" ++#include "ui/gfx/x/connection.h" + #include "ui/gl/gl_bindings.h" + + namespace gl { +@@ -47,9 +48,9 @@ class VaapiTFPPicture : public VaapiPicture { + private: + Status Initialize(); + +- Display* x_display_; ++ x11::Connection* const connection_; + +- Pixmap x_pixmap_; ++ ::Pixmap x_pixmap_; + scoped_refptr<gl::GLImageGLX> glx_image_; + + DISALLOW_COPY_AND_ASSIGN(VaapiTFPPicture); +diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc +index 2ad0b997e..a98823343 100644 +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -57,8 +57,13 @@ + #include "ui/gl/gl_implementation.h" + + #if defined(USE_X11) +-#include <va/va_x11.h> + #include "ui/gfx/x/x11_types.h" // nogncheck ++ ++typedef XID Drawable; ++ ++extern "C" { ++#include "media/gpu/vaapi/va_x11.sigs" ++} + #endif + + #if defined(USE_OZONE) diff --git a/www-client/chromium/files/chromium-vaapi-signature.patch b/www-client/chromium/files/chromium-vaapi-signature.patch new file mode 100644 index 0000000..c84cc37 --- /dev/null +++ b/www-client/chromium/files/chromium-vaapi-signature.patch @@ -0,0 +1,26 @@ +diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc +index dca5b5c46..f65d580da 100644 +--- a/media/gpu/vaapi/vaapi_picture_tfp.cc ++++ b/media/gpu/vaapi/vaapi_picture_tfp.cc +@@ -97,7 +97,7 @@ bool VaapiTFPPicture::Allocate(gfx::BufferFormat format) { + + bool VaapiTFPPicture::ImportGpuMemoryBufferHandle( + gfx::BufferFormat format, +- const gfx::GpuMemoryBufferHandle& gpu_memory_buffer_handle) { ++ gfx::GpuMemoryBufferHandle gpu_memory_buffer_handle) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + NOTIMPLEMENTED() << "GpuMemoryBufferHandle import not implemented"; + return false; +diff --git a/media/gpu/vaapi/vaapi_picture_tfp.h b/media/gpu/vaapi/vaapi_picture_tfp.h +index a9ba8a1c5..9fb27a5cd 100644 +--- a/media/gpu/vaapi/vaapi_picture_tfp.h ++++ b/media/gpu/vaapi/vaapi_picture_tfp.h +@@ -40,7 +40,7 @@ class VaapiTFPPicture : public VaapiPicture { + bool Allocate(gfx::BufferFormat format) override; + bool ImportGpuMemoryBufferHandle( + gfx::BufferFormat format, +- const gfx::GpuMemoryBufferHandle& gpu_memory_buffer_handle) override; ++ gfx::GpuMemoryBufferHandle gpu_memory_buffer_handle) override; + bool DownloadFromSurface(const scoped_refptr<VASurface>& va_surface) override; + + private: diff --git a/www-client/chromium/files/chromium-vector-include-81.patch b/www-client/chromium/files/chromium-vector-include-81.patch new file mode 100644 index 0000000..21c0bb1 --- /dev/null +++ b/www-client/chromium/files/chromium-vector-include-81.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/ui/autofill/payments/virtual_card_selection_dialog_controller.h b/chrome/browser/ui/autofill/payments/virtual_card_selection_dialog_controller.h +index 401717c18..952bbad4a 100644 +--- a/chrome/browser/ui/autofill/payments/virtual_card_selection_dialog_controller.h ++++ b/chrome/browser/ui/autofill/payments/virtual_card_selection_dialog_controller.h +@@ -5,6 +5,8 @@ + #ifndef CHROME_BROWSER_UI_AUTOFILL_PAYMENTS_VIRTUAL_CARD_SELECTION_DIALOG_CONTROLLER_H_ + #define CHROME_BROWSER_UI_AUTOFILL_PAYMENTS_VIRTUAL_CARD_SELECTION_DIALOG_CONTROLLER_H_ + ++#include <vector> ++ + #include "base/macros.h" + #include "base/strings/string16.h" + diff --git a/www-client/chromium/files/chromium-vector-init.patch b/www-client/chromium/files/chromium-vector-init.patch new file mode 100644 index 0000000..ba8a18f --- /dev/null +++ b/www-client/chromium/files/chromium-vector-init.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/browser/ui/tabs/tab_strip_model_observer.h b/chrome/browser/ui/tabs/tab_strip_model_observer.h +index 8dacb579e..495e31bc5 100644 +--- a/chrome/browser/ui/tabs/tab_strip_model_observer.h ++++ b/chrome/browser/ui/tabs/tab_strip_model_observer.h +@@ -125,7 +125,7 @@ class TabStripModelChange { + + private: + const Type type_ = kSelectionOnly; +- const std::vector<Delta> deltas_; ++ const std::vector<Delta> deltas_ = {}; + + DISALLOW_COPY_AND_ASSIGN(TabStripModelChange); + }; diff --git a/www-client/chromium/files/chromium-vk.patch b/www-client/chromium/files/chromium-vk.patch new file mode 100644 index 0000000..c170c9c --- /dev/null +++ b/www-client/chromium/files/chromium-vk.patch @@ -0,0 +1,21 @@ +diff --git a/third_party/skia/src/gpu/vk/GrVkVulkan.h b/third_party/skia/src/gpu/vk/GrVkVulkan.h +index 1b78dc766..3bea44b20 100644 +--- a/third_party/skia/src/gpu/vk/GrVkVulkan.h ++++ b/third_party/skia/src/gpu/vk/GrVkVulkan.h +@@ -14,14 +14,14 @@ + #error "Skia's private vulkan header must be included before any other vulkan header." + #endif + +-#include "../../../include/third_party/vulkan/vulkan/vulkan_core.h" ++#include "vulkan/vulkan_core.h" + + #ifdef SK_BUILD_FOR_ANDROID + #ifdef VULKAN_ANDROID_H_ + #error "Skia's private vulkan android header must be included before any other vulkan header." + #endif + // This is needed to get android extensions for external memory +-#include "../../../include/third_party/vulkan/vulkan/vulkan_android.h" ++#include "vulkan/vulkan_android.h" + #endif + + #endif diff --git a/www-client/chromium/files/chromium-vr.patch b/www-client/chromium/files/chromium-vr.patch new file mode 100644 index 0000000..00230bb --- /dev/null +++ b/www-client/chromium/files/chromium-vr.patch @@ -0,0 +1,47 @@ +diff --git a/tools/perf/contrib/vr_benchmarks/BUILD.gn b/tools/perf/contrib/vr_benchmarks/BUILD.gn +index fef976f5c..14547d8e7 100644 +--- a/tools/perf/contrib/vr_benchmarks/BUILD.gn ++++ b/tools/perf/contrib/vr_benchmarks/BUILD.gn +@@ -56,22 +56,23 @@ group("vr_perf_tests") { + + # Copies files to the gen/ directory and creates a manifest so that the VR + # assets component can be used during Telemetry tests. +-action("generate_vr_assets_profile") { +- script = "generate_vr_assets_profile.py" +- +- # We should re-run anytime the version or any related files change. +- inputs = [ +- "//chrome/browser/resources/vr/assets/google_chrome", +- "//chrome/browser/resources/vr/assets/VERSION", +- "//chrome/browser/resources/vr/assets/vr_assets_component_files.json", +- ] +- outputs = [ +- "$target_gen_dir/vr_assets_profile/", +- ] +- args = [ +- "--output", +- rebase_path(target_gen_dir, root_build_dir), +- "--asset-dir", +- rebase_path("//chrome/browser/resources/vr/assets", root_build_dir), +- ] +-} ++#action("generate_vr_assets_profile") { ++# script = "generate_vr_assets_profile.py" ++# ++# # We should re-run anytime the version or any related files change. ++# inputs = [ ++# "//chrome/browser/resources/vr/assets/google_chrome", ++# "//chrome/browser/resources/vr/assets/VERSION", ++# "//chrome/browser/resources/vr/assets/vr_assets_component_files.json", ++# ] ++# outputs = [ ++# "$target_gen_dir/vr_assets_profile/", ++# ] ++# args = [ ++# "--output", ++# rebase_path(target_gen_dir, root_build_dir), ++# "--asset-dir", ++# rebase_path("//chrome/browser/resources/vr/assets", root_build_dir), ++# ] ++#} ++# diff --git a/www-client/chromium/files/chromium-webrtc-include-84.patch b/www-client/chromium/files/chromium-webrtc-include-84.patch new file mode 100644 index 0000000..48ea179 --- /dev/null +++ b/www-client/chromium/files/chromium-webrtc-include-84.patch @@ -0,0 +1,10 @@ +--- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-05-22 15:16:41.083666290 +0800 ++++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h 2020-05-22 15:16:05.620205159 +0800 +@@ -11,6 +11,7 @@ + #ifndef MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_ + #define MODULES_AUDIO_PROCESSING_AEC3_CLOCKDRIFT_DETECTOR_H_ + ++#include <cstddef> + #include <array> + + namespace webrtc { diff --git a/www-client/chromium/files/chromium-webrtc-r0.patch b/www-client/chromium/files/chromium-webrtc-r0.patch new file mode 100644 index 0000000..e14b185 --- /dev/null +++ b/www-client/chromium/files/chromium-webrtc-r0.patch @@ -0,0 +1,34 @@ +From 7f90e2cceda0458cf56026eb6ccffb961a47804b Mon Sep 17 00:00:00 2001 +From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com> +Date: Fri, 13 Oct 2017 15:49:32 +0200 +Subject: [PATCH] IWYU: Include math.h for round(3). + +math.h was being implicitly included, which can break the build with +alternative libc implementations. + +Bug: None +Change-Id: I969b320b65d0f44abb33d3e1036cfbcb859a4952 +Reviewed-on: https://webrtc-review.googlesource.com/9384 +Reviewed-by: Tommi <tommi@webrtc.org> +Commit-Queue: Raphael Kubo da Costa (rakuco) <raphael.kubo.da.costa@intel.com> +Cr-Commit-Position: refs/heads/master@{#20292} +--- + p2p/base/port.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/p2p/base/port.cc b/p2p/base/port.cc +index a1b478d11..81aa0aadb 100644 +--- a/third_party/webrtc/p2p/base/port.cc ++++ b/third_party/webrtc/p2p/base/port.cc +@@ -10,6 +10,8 @@ + + #include "p2p/base/port.h" + ++#include <math.h> ++ + #include <algorithm> + #include <vector> + +-- +2.15.0.rc2 + diff --git a/www-client/chromium/files/chromium-webrtc.patch b/www-client/chromium/files/chromium-webrtc.patch new file mode 100644 index 0000000..07b770b --- /dev/null +++ b/www-client/chromium/files/chromium-webrtc.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/webrtc/api/ice_transport_factory.cc b/third_party/webrtc/api/ice_transport_factory.cc +index b632f0913..6cc399aef 100644 +--- a/third_party/webrtc/api/ice_transport_factory.cc ++++ b/third_party/webrtc/api/ice_transport_factory.cc +@@ -42,7 +42,7 @@ class IceTransportWithTransportChannel : public IceTransportInterface { + } + + private: +- const rtc::ThreadChecker thread_checker_; ++ const rtc::ThreadChecker thread_checker_{}; + const std::unique_ptr<cricket::IceTransportInternal> internal_ + RTC_GUARDED_BY(thread_checker_); + }; diff --git a/www-client/chromium/files/chromium-widevine-80.patch b/www-client/chromium/files/chromium-widevine-80.patch new file mode 100644 index 0000000..ac03150 --- /dev/null +++ b/www-client/chromium/files/chromium-widevine-80.patch @@ -0,0 +1,11 @@ +diff --git a/third_party/widevine/cdm/widevine_cdm_version.h b/third_party/widevine/cdm/widevine_cdm_version.h +index dd6efed02..eaa017197 100644 +--- a/third_party/widevine/cdm/widevine_cdm_version.h ++++ b/third_party/widevine/cdm/widevine_cdm_version.h +@@ -11,5 +11,6 @@ + // If the Widevine CDM is available define the following: + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). ++#define WIDEVINE_CDM_VERSION_STRING "unknown" + + #endif // WIDEVINE_CDM_VERSION_H_ diff --git a/www-client/chromium/files/chromium-widevine-r2.patch b/www-client/chromium/files/chromium-widevine-r2.patch new file mode 100644 index 0000000..5527f7f --- /dev/null +++ b/www-client/chromium/files/chromium-widevine-r2.patch @@ -0,0 +1,39 @@ +Minimal patch to get chromium to compile with widevine support. + +Exactly the same as -r1, but we now need to patch +ninja to pretty please not terminate our build. + +caveat emptor: it's in no way clear that building chromium this +way is safer, from a security perspective, than whatever Google +Chrome does. + +Upstream appears to be cooking up a code-signing trust-chain +which may protect users against malicious cdm blobs; I doubt +we benefit from these using this kludge. Ideally, someone +would look into this more carefully than I have ... tbh as +soon as I got my "stories" back, I pretty much lost interest :) + +-gmt + +-- +--- a/third_party/widevine/cdm/stub/widevine_cdm_version.h ++++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h +@@ -10,6 +10,7 @@ + + #include "third_party/widevine/cdm/widevine_cdm_common.h" + ++#define WIDEVINE_CDM_VERSION_STRING "unknown" + #define WIDEVINE_CDM_AVAILABLE + + #endif // WIDEVINE_CDM_VERSION_H_ +--- a/third_party/widevine/cdm/BUILD.gn ++++ b/third_party/widevine/cdm/BUILD.gn +@@ -11,7 +11,7 @@ import("//third_party/widevine/cdm/widev + # Internal Cast builds set enable_widevine=true to bring in Widevine support. + # TODO(xhwang): Support component updated CDM on other platforms and remove this + # assert. +-assert(!enable_widevine || is_win || is_mac || is_chromecast, ++assert(!enable_widevine || is_win || is_mac || is_chromecast || is_linux, + "Component updated CDM only supported on Windows and Mac for now.") + + widevine_arch = current_cpu diff --git a/www-client/chromium/files/chromium-widevine-r3.patch b/www-client/chromium/files/chromium-widevine-r3.patch new file mode 100644 index 0000000..a126084 --- /dev/null +++ b/www-client/chromium/files/chromium-widevine-r3.patch @@ -0,0 +1,23 @@ +From 5818fdbef3d399fe1bfbb56f81e59184e1a8e467 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert <floppymaster@gmail.com> +Date: Sun, 14 Oct 2018 20:04:03 -0400 +Subject: [PATCH] Define WIDEVINE_CDM_VERSION_STRING + +--- + third_party/widevine/cdm/widevine_cdm_version.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/widevine/cdm/widevine_cdm_version.h b/third_party/widevine/cdm/widevine_cdm_version.h +index dd6efed02646..eaa017197e61 100644 +--- a/third_party/widevine/cdm/widevine_cdm_version.h ++++ b/third_party/widevine/cdm/widevine_cdm_version.h +@@ -11,5 +11,6 @@ + // If the Widevine CDM is available define the following: + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). ++#define WIDEVINE_CDM_VERSION_STRING "unknown" + + #endif // WIDEVINE_CDM_VERSION_H_ +-- +2.19.1 + diff --git a/www-client/chromium/files/chromium-widevine-r4.patch b/www-client/chromium/files/chromium-widevine-r4.patch new file mode 100644 index 0000000..d5a3be8 --- /dev/null +++ b/www-client/chromium/files/chromium-widevine-r4.patch @@ -0,0 +1,26 @@ +Define WIDEVINE_CDM_VERSION_STRING && re-re-re-patch for latest ninja + +Stolen from Arch basically. + +gmt + +--- a/chrome/common/chrome_content_client.cc ++++ b/chrome/common/chrome_content_client.cc +@@ -99,7 +99,7 @@ + // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is + // bundled and not a component. When the Widevine CDM is a component, it is + // registered in widevine_cdm_component_installer.cc. +-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) ++#if BUILDFLAG(ENABLE_WIDEVINE) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) + #define REGISTER_BUNDLED_WIDEVINE_CDM + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck + // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support +--- a/third_party/widevine/cdm/widevine_cdm_version.h ++++ b/third_party/widevine/cdm/widevine_cdm_version.h +@@ -11,5 +11,6 @@ + // If the Widevine CDM is available define the following: + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). ++#define WIDEVINE_CDM_VERSION_STRING "unknown" + + #endif // WIDEVINE_CDM_VERSION_H_ diff --git a/www-client/chromium/files/chromium-wpt-gn-78.patch b/www-client/chromium/files/chromium-wpt-gn-78.patch new file mode 100644 index 0000000..fc750e8 --- /dev/null +++ b/www-client/chromium/files/chromium-wpt-gn-78.patch @@ -0,0 +1,13 @@ +diff --git a/third_party/blink/tools/BUILD.gn b/third_party/blink/tools/BUILD.gn +index d3004ee7b..ef293e3bf 100644 +--- a/third_party/blink/tools/BUILD.gn ++++ b/third_party/blink/tools/BUILD.gn +@@ -13,7 +13,7 @@ action("build_wpt_metadata") { + "../../third_party/blink/web_tests/WPTOverrideExpectations", + ] + outputs = [ +- "$root_out_dir/wpt_expectations_metadata/", ++ "$root_out_dir/wpt_expectations_metadata", + ] + data = [ + # Include the blinkpy tools to access expectations data diff --git a/www-client/chromium/files/chromium-zlib-78.patch b/www-client/chromium/files/chromium-zlib-78.patch new file mode 100644 index 0000000..a1da45f --- /dev/null +++ b/www-client/chromium/files/chromium-zlib-78.patch @@ -0,0 +1,11 @@ +--- a/third_party/perfetto/gn/BUILD.gn 2019-09-06 23:54:00.697132348 +0800 ++++ b/third_party/perfetto/gn/BUILD.gn 2019-09-06 23:54:41.235747858 +0800 +@@ -276,7 +276,7 @@ + "//buildtools:zlib", + ] + } else { +- public_configs = [ "//third_party/zlib:zlib_config" ] ++ public_configs = [ "//third_party/zlib:system_zlib" ] + public_deps = [ + "//third_party/zlib", + ] diff --git a/www-client/chromium/files/chromium-zlib-82.patch b/www-client/chromium/files/chromium-zlib-82.patch new file mode 100644 index 0000000..1585445 --- /dev/null +++ b/www-client/chromium/files/chromium-zlib-82.patch @@ -0,0 +1,9 @@ +--- a/third_party/perfetto/gn/BUILD.gn 2019-09-06 23:54:00.697132348 +0800 ++++ b/third_party/perfetto/gn/BUILD.gn 2019-09-06 23:54:41.235747858 +0800 +@@ -299,4 +299,4 @@ + public_deps = [ "//buildtools:zlib" ] + } else { +- public_configs = [ "//third_party/zlib:zlib_config" ] ++ public_configs = [ "//third_party/zlib:system_zlib" ] + public_deps = [ "//third_party/zlib" ] + diff --git a/www-client/chromium/files/chromium.default b/www-client/chromium/files/chromium.default new file mode 100644 index 0000000..c140cde --- /dev/null +++ b/www-client/chromium/files/chromium.default @@ -0,0 +1,5 @@ +# Default settings for chromium. This file is sourced by /bin/bash from +# the chromium launcher. + +# Options to pass to chromium. +#CHROMIUM_FLAGS="" diff --git a/x11-libs/libva-intel-driver/Manifest b/x11-libs/libva-intel-driver/Manifest new file mode 100644 index 0000000..baf8799 --- /dev/null +++ b/x11-libs/libva-intel-driver/Manifest @@ -0,0 +1,4 @@ +DIST intel-vaapi-driver-2.4.0.pre1.tar.bz2 2888363 BLAKE2B fc7861e5d7625ed598feadc3b5649335c4f6bc0cacd66bdc38a58bbe4d95909c27c9b84478abdda687725070fa9fea850b3d86925ae6a7ea821a168e2bb98a13 SHA512 f637ca24b34573ae022f24f0352be8a6e2904a703ccfa005fb84da00c54e9e02ff0282e882312b86dd7e2d1a1611fba3eef37909ac66a3c2beb056d8cba6019f +DIST intel-vaapi-driver-2.4.1.tar.bz2 2889762 BLAKE2B 25888ac7a1a42233c4b0269bd910c5161f99bf22c932b46e20c8c77ed0404bf99702dd9f11b73bc0fd76a3b012ffa1de6c6133cbd7be880428235de9cfcc6ad8 SHA512 1e9dc81ecd0b3640fccd1fb827a0ade0a1e5bbabe375130df159849e47ce98c8e879c65ddaaae11d16e916be76b507be69bc0c813494e37e7fca86b0b897a94f +EBUILD libva-intel-driver-2.4.0_pre1.ebuild 1350 BLAKE2B 92a739dc8fe80ac7a904b40e60b4bff116dbb6a42b0e36384e9b789a8635506639ec08ac8e6b7b81667d922b7911b5aafaebcdd8ef4091b2268982c82333fa5b SHA512 238b18e9182b7975dbf6c8fbff11d1d05d01faefe1eaf82895f2651da3abe4fb8e515b57f6524b96068afd632b46204b8f76960e742be48e4183397e5dae6566 +EBUILD libva-intel-driver-2.4.1.ebuild 1338 BLAKE2B aa00a6564273fc4a205a35b0ec7def5deebd39eedc234942ff0264c9a17cee81356d223e1b87f1df2cce2bcbcc04e526cde14d369661f78d372ff4eaabcab0bb SHA512 bc5a9ea235ba6447b290e7753f039eeeb4b025ea8fecb1416fed07fe094529a6bb5df9d55075b3d58218c5e14e60c18265103441160a1732121a1c2a232ca627 diff --git a/x11-libs/libva-intel-driver/libva-intel-driver-2.4.0_pre1.ebuild b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.0_pre1.ebuild new file mode 100644 index 0000000..eb0dfe0 --- /dev/null +++ b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.0_pre1.ebuild @@ -0,0 +1,55 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +MY_PN="intel-vaapi-driver" +if [[ ${PV} = *9999* ]] ; then # Live ebuild + inherit git-r3 + EGIT_REPO_URI="https://github.com/intel/intel-vaapi-driver" +fi + +inherit autotools multilib-minimal + +DESCRIPTION="HW video decode support for Intel integrated graphics" +HOMEPAGE="https://github.com/intel/intel-vaapi-driver" +if [[ ${PV} != *9999* ]] ; then + SRC_URI="https://github.com/intel/${MY_PN}/releases/download/${PV/_/.}/${MY_PN}-${PV/_/.}.tar.bz2" + S="${WORKDIR}/${MY_PN}-${PV/_/.}" + KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +fi + +LICENSE="MIT" +SLOT="0" +IUSE="wayland X" +RESTRICT="test" # No tests + +RDEPEND=" + >=x11-libs/libdrm-2.4.52[video_cards_intel,${MULTILIB_USEDEP}] + >=x11-libs/libva-2.4.0:=[X?,wayland?,drm,${MULTILIB_USEDEP}] + wayland? ( + >=dev-libs/wayland-1.11[${MULTILIB_USEDEP}] + >=media-libs/mesa-9.1.6[egl,${MULTILIB_USEDEP}] + ) +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +src_prepare() { + eapply_user + sed -e 's/intel-gen4asm/\0diSaBlEd/g' -i configure.ac || die + eautoreconf +} + +multilib_src_configure() { + local myconf=( + $(use_enable wayland) + $(use_enable X x11) + --enable-hybrid-codec + ) + ECONF_SOURCE="${S}" econf "${myconf[@]}" +} + +multilib_src_install_all() { + find "${D}" -name "*.la" -delete || die +} diff --git a/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild new file mode 100644 index 0000000..8fba364 --- /dev/null +++ b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild @@ -0,0 +1,55 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +MY_PN="intel-vaapi-driver" +if [[ ${PV} = *9999* ]] ; then # Live ebuild + inherit git-r3 + EGIT_REPO_URI="https://github.com/intel/intel-vaapi-driver" +fi + +inherit autotools multilib-minimal + +DESCRIPTION="HW video decode support for Intel integrated graphics" +HOMEPAGE="https://github.com/intel/intel-vaapi-driver" +if [[ ${PV} != *9999* ]] ; then + SRC_URI="https://github.com/intel/${MY_PN}/releases/download/${PV}/${MY_PN}-${PV}.tar.bz2" + S="${WORKDIR}/${MY_PN}-${PV}" + KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +fi + +LICENSE="MIT" +SLOT="0" +IUSE="wayland X" +RESTRICT="test" # No tests + +RDEPEND=" + >=x11-libs/libdrm-2.4.52[video_cards_intel,${MULTILIB_USEDEP}] + >=x11-libs/libva-2.4.0:=[X?,wayland?,drm,${MULTILIB_USEDEP}] + wayland? ( + >=dev-libs/wayland-1.11[${MULTILIB_USEDEP}] + >=media-libs/mesa-9.1.6[egl,${MULTILIB_USEDEP}] + ) +" +DEPEND="${RDEPEND}" +BDEPEND="virtual/pkgconfig" + +src_prepare() { + eapply_user + sed -e 's/intel-gen4asm/\0diSaBlEd/g' -i configure.ac || die + eautoreconf +} + +multilib_src_configure() { + local myconf=( + $(use_enable wayland) + $(use_enable X x11) + --enable-hybrid-codec + ) + ECONF_SOURCE="${S}" econf "${myconf[@]}" +} + +multilib_src_install_all() { + find "${D}" -name "*.la" -delete || die +} diff --git a/x11-libs/libva-intel-media-driver/Manifest b/x11-libs/libva-intel-media-driver/Manifest new file mode 100644 index 0000000..c902330 --- /dev/null +++ b/x11-libs/libva-intel-media-driver/Manifest @@ -0,0 +1,2 @@ +DIST intel-media-19.2.0.tar.gz 15545039 BLAKE2B 58d354190d6dbda0f28a783a732a09267a761bedc8dbec6d8ec2075b85214f4c4488eadf956f27572bdb08faa5f93d13bae90913d10689d6ca09a8cb82ffc377 SHA512 9dfc046226660df589a6fa03500a493cf2c27e806f26e2123a50211b2780a0f30a35c2f4f2447b9cf13e9623048f1e8e7780f40fcc0ba5a8b8a69ea22ed21b50 +EBUILD libva-intel-media-driver-19.2.0.ebuild 892 BLAKE2B 4e19092e337db37fdb486b51f11221158e52e3ba3afdf2a0d7b9470432a190c93a2fc3e3759ead7c88cc81dc9953faf2c4b30a887f157dafbbfe4fe4b2af5159 SHA512 03b15d125277e14dc615493660a3314396aa2ad1cffc56b1eeb624845388cd33c8aea00e8c81c7b1bcd87c3d1fab0989d1075511f75935cef2feb22932e9eabf diff --git a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-19.2.0.ebuild b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-19.2.0.ebuild new file mode 100644 index 0000000..36b958f --- /dev/null +++ b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-19.2.0.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit cmake-utils + +if [[ ${PV} == *9999 ]] ; then + : ${EGIT_REPO_URI:="https://github.com/intel/media-driver"} + if [[ ${PV%9999} != "" ]] ; then + : ${EGIT_BRANCH:="release/${PV%.9999}"} + fi + inherit git-r3 +fi + +DESCRIPTION="Intel Media Driver for VAAPI (iHD)" +HOMEPAGE="https://github.com/intel/media-driver" +if [[ ${PV} == *9999 ]] ; then + SRC_URI="" + KEYWORDS="" +else + SRC_URI="https://github.com/intel/media-driver/archive/intel-media-${PV}.tar.gz" + S="${WORKDIR}/media-driver-intel-media-${PV}" + KEYWORDS="~amd64" +fi + +LICENSE="MIT BSD" +SLOT="0" +IUSE="" + +DEPEND=">=media-libs/gmmlib-${PV} + >=x11-libs/libva-2.5.0 + >=x11-libs/libpciaccess-0.13.1-r1:= +" +RDEPEND="${DEPEND}" + +src_configure() { + local mycmakeargs=( + -DMEDIA_RUN_TEST_SUITE=OFF + ) + + cmake-utils_src_configure +} diff --git a/x11-wm/fvwm3/Manifest b/x11-wm/fvwm3/Manifest new file mode 100644 index 0000000..b1e54df --- /dev/null +++ b/x11-wm/fvwm3/Manifest @@ -0,0 +1,3 @@ +AUX fvwm3_perl528.patch 440 BLAKE2B de3e566c30fdedd0fa34f0183628c588fc347f220f8eb2f1b31fe47cc43b732ae77427c19b5299eca3f3d6d0dca5c8103ace6602135d08249302b2aed08c7b04 SHA512 f2919221f96a157beb4d08f47f4b2808cdfa5bcfdd6e4015f8e7b50c2990070399346bd61a930ab6450c5262181bfb84938afae5a7d97c55ab8f983e3c5ecd37 +DIST fvwm3-1.0.3.tar.gz 4639447 BLAKE2B ea8e4fac049b613a8ae8ad21f056f38f739c33092ee3e1b4f13730d8078d47eaa8d367b062c66541da8e78b1bd11dcbcc79718f6ef3a06bdeb2c6ec173f39ca2 SHA512 00835eb9a72aeb41b7df3380e69de7b6b9831985e625e99e44a8a0db402011bd193fb901dba9603eaeee8cb1ed8d4a996a99258078e3689936fb1fa729baba5e +EBUILD fvwm3-1.0.3.ebuild 3460 BLAKE2B 223d8747b30a573f96ce7ff08ea01264d4ab595e2ed551ceee41f98bf5dc1e4cfe74d21d1bac108e0c5d1372469d3417836e15752b44c17a5eeac8cb704e37d9 SHA512 4cfd9a233c79a59693b20af142ea055d0d599102959e90a9547590ddb22aec7bbb2c2caaa50d398409d9f60ea75ee45b1957b653c1ae4e4b62865a543dbd7705 diff --git a/x11-wm/fvwm3/files/fvwm3_perl528.patch b/x11-wm/fvwm3/files/fvwm3_perl528.patch new file mode 100644 index 0000000..ce318a9 --- /dev/null +++ b/x11-wm/fvwm3/files/fvwm3_perl528.patch @@ -0,0 +1,13 @@ +diff --git a/modules/FvwmPerl/FvwmPerl.in b/modules/FvwmPerl/FvwmPerl.in +index a8ef5dbe..95d79e94 100644 +--- a/modules/FvwmPerl/FvwmPerl.in ++++ b/modules/FvwmPerl/FvwmPerl.in +@@ -321,7 +321,7 @@ sub preprocess ($;$) { + } + + # perl code substitution first +- $$text_ref =~ s/\Q$quote1\E { ( .*? ) } \Q$quote2\E/ ++ $$text_ref =~ s/\Q$quote1\E \{ ( .*? ) \} \Q$quote2\E/ + my $result = eval " + no strict; + package PreprocessNamespace; diff --git a/x11-wm/fvwm3/fvwm3-1.0.3.ebuild b/x11-wm/fvwm3/fvwm3-1.0.3.ebuild new file mode 100644 index 0000000..fdbff14 --- /dev/null +++ b/x11-wm/fvwm3/fvwm3-1.0.3.ebuild @@ -0,0 +1,139 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit autotools flag-o-matic desktop + +DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop window manager" +HOMEPAGE="https://www.fvwm.org/" +SRC_URI="https://github.com/fvwmorg/fvwm3/releases/download/${PV}/${P}.tar.gz" + +LICENSE="GPL-2+ FVWM" +SLOT="0" +KEYWORDS="~alpha amd64 ~arm ~ia64 ppc ~ppc64 ~sparc x86" +IUSE="bidi debug doc netpbm nls perl png readline rplay stroke svg tk truetype xinerama lock" + +COMMON_DEPEND=" + sys-libs/zlib + dev-libs/libbson + x11-libs/libICE + x11-libs/libSM + x11-libs/libX11 + x11-libs/libXau + x11-libs/libxcb + x11-libs/libXcursor + x11-libs/libXdmcp + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXpm + x11-libs/libXrandr + x11-libs/libXrender + virtual/libiconv + bidi? ( dev-libs/fribidi ) + nls? ( virtual/libintl ) + png? ( media-libs/libpng:0= ) + readline? ( + sys-libs/ncurses:0= + sys-libs/readline:0= + ) + stroke? ( dev-libs/libstroke ) + svg? ( gnome-base/librsvg ) + truetype? ( + media-libs/fontconfig + x11-libs/libXft + ) + xinerama? ( x11-libs/libXinerama ) + !!x11-wm/fvwm +" +RDEPEND="${COMMON_DEPEND} + dev-lang/perl + perl? ( tk? ( + dev-lang/tk + dev-perl/Tk + >=dev-perl/X11-Protocol-0.56 + ) + ) + rplay? ( media-sound/rplay ) + lock? ( x11-misc/xlockmore ) + userland_GNU? ( sys-apps/debianutils ) + !x86-fbsd? ( netpbm? ( media-libs/netpbm ) ) +" +DEPEND="${COMMON_DEPEND} + virtual/pkgconfig + x11-base/xorg-proto + doc? ( dev-libs/libxslt ) +" + +src_prepare() { + # Fix for Perl 5.28 + eapply -p1 "${FILESDIR}/${PN}_perl528.patch" + + default + eautoreconf +} + +src_configure() { + local myeconfargs=( + --libexecdir="${EPREFIX}"/usr/$(get_libdir) + --with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm + --enable-iconv + --enable-package-subdirs + $(use_enable bidi) + $(use_enable debug debug-msgs) + $(use_enable debug command-log) + $(use_enable doc htmldoc) + $(use_enable nls) + $(use_enable perl perllib) + $(use_enable png) + $(use_with readline readline-library) + $(use_with rplay rplay-library) + $(use_with stroke stroke-library) + $(use_enable svg rsvg) + $(use_enable truetype xft) + $(use_enable xinerama) + ) + + # Non-upstream email where bugs should be sent; used in fvwm-bug. + export FVWM_BUGADDR="maintainer-needed@gentoo.org" + + # Recommended by upstream, reference ???? + append-flags -fno-strict-aliasing + + # Signed chars are required. + use ppc && append-flags -fsigned-char + + use readline && myeconfargs+=( --without-termcap-library ) + + econf "${myeconfargs[@]}" +} + +src_install() { + default + make_session_desktop fvwm3 /usr/bin/fvwm3 + + if ! use lock; then + find "${D}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 2>/dev/null + fi + + if use perl; then + if ! use tk; then + rm "${D}"/usr/share/fvwm3/perllib/FVWM/Module/Tk.pm || die + rm "${D}"/usr/share/fvwm3/perllib/FVWM/Module/Toolkit.pm || die + find "${D}"/usr/share/fvwm3/perllib -depth -type d -exec rmdir '{}' \; 2>/dev/null + fi + else + # Completely wipe it if ! use perl + rm -r "${D}"/usr/bin/fvwm-perllib "${D}"/usr/share/man/man1/fvwm-perllib.1 + fi + + # Utility for testing FVWM behaviour by creating a simple window with + # configurable hints. + if use debug; then + dobin "${S}"/tests/hints/hints_test + newdoc "${S}"/tests/hints/README README.hints + fi + + dodir /etc/X11/Sessions + echo "/usr/bin/fvwm3" > "${D}"/etc/X11/Sessions/${PN} || die + fperms a+x /etc/X11/Sessions/${PN} +} |