Gentoo Archives: gentoo-commits

From: Mike Gilbert <floppym@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: www-client/chromium/
Date: Wed, 19 Aug 2020 16:19:41
Message-Id: 1597853959.13d78c91d96e30626063dbb3039a0e544db298eb.floppym@gentoo
1 commit: 13d78c91d96e30626063dbb3039a0e544db298eb
2 Author: Stephan Hartmann <stha09 <AT> googlemail <DOT> com>
3 AuthorDate: Wed Aug 19 08:16:10 2020 +0000
4 Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 19 16:19:19 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=13d78c91
7
8 www-client/chromium: stable channel bump to 84.0.4147.135
9
10 Bug: https://bugs.gentoo.org/737942
11 Package-Manager: Portage-2.3.103, Repoman-2.3.23
12 Signed-off-by: Stephan Hartmann <stha09 <AT> googlemail.com>
13 Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
14 Closes: https://github.com/gentoo/gentoo/pull/17169
15
16 www-client/chromium/Manifest | 1 +
17 www-client/chromium/chromium-84.0.4147.135.ebuild | 866 ++++++++++++++++++++++
18 2 files changed, 867 insertions(+)
19
20 diff --git a/www-client/chromium/Manifest b/www-client/chromium/Manifest
21 index 4540730d2e1..cbfa0b38bb7 100644
22 --- a/www-client/chromium/Manifest
23 +++ b/www-client/chromium/Manifest
24 @@ -1,5 +1,6 @@
25 DIST chromium-84-patchset-3.tar.xz 20148 BLAKE2B d910570b43f63bcf4ead90ca4e4005a08d7c85b5b4e7af2a70ec4bc18265cbe8b075523878710075cfee4e0631eb3374e1e6d06251f4bf03377954807b1951e9 SHA512 316db8b0359b10a988242a0d665475d912fa9b610a547478d8c39b337afc02780a54d7024e231eb4fd402063cf439f6e2b4bb92a4968c8e0c3e69d84a2ae1664
26 DIST chromium-84.0.4147.125.tar.xz 846433536 BLAKE2B 2743fb9732f0cac97df7309e6e3fefb1e4801089b3cb954056d7149d891afe80a08b19bbbd43af30b5a67e0cd619c7b4e7514f32ff68605dbbc238310f6ce479 SHA512 a86439efbadce4cc157fe16e0e16732feda2025e14179a54df6a33446f744dc1db59f1ebcf7d5d29d7bfc42102af1283ddf108982152ec1f869d7623af7bed26
27 +DIST chromium-84.0.4147.135.tar.xz 815136236 BLAKE2B 145caaca3f665bca5c44f0059e45162782783ab70e2da409724365013fc403dbec4afaa7da959d729e0985bfbe151fe95c062a778cfaea922f9d0a1f8c890282 SHA512 38549bb80ef53db7f6cc4236e313da97b60b95debad219017d773cbc930d9692c66a8ad588e86953d839b7bb28d655dd7a80f736bcacf0a6d93793731fd979fd
28 DIST chromium-85-patchset-2.tar.xz 9724 BLAKE2B 929d6abe3a66db395a9cedc63510a6a0ed0d79057f92ade22fe26221bf46a63e88fb40d6e54e6ffa837d142ec5da22e2b428f3153db431e3389de0b230fa2aec SHA512 753ce53c2c10cf1abdce334086a633dfcb4543c86a2dccbee0ad1bc8a8a0b642cdd18e2277c67088a380a9fa2ca8fd655e2fc0b3a2931de3230afa046615cd0e
29 DIST chromium-85.0.4183.69.tar.xz 864550692 BLAKE2B 14dc9d36db6fde1b44facdaca90e4f55a9a33b5925800c92aca3a0c5f0b9f359c2ebed07d7ed04d3cb2a3ae1997cd0c319272b42314ba62ce284eb6858f8f918 SHA512 b3ccddd785adcbaab95b61d1fa036d42bf176e63beff527003a955a76e7dab344073e8b4c8a59713efb08923722daf991e313179efb6e1ec3f11a47c9f139d21
30 DIST chromium-86-patchset-4.tar.xz 5324 BLAKE2B 4c1eb68874771e276afe60c974202d4f8840cf74192691bca4a00cd223b50a3c55d2ac04d71127eac47fa2b5e10bf969fa41d26b3e27c9c4bbeb202532752e30 SHA512 9f928754b7689d04d18163df4fc44fcbf37dfa577f6a60ab2f03a263294f686a1d8bff2d6cdf6a7379381bd743c5538d2c99165473bd48008a8f3c2650cd025e
31
32 diff --git a/www-client/chromium/chromium-84.0.4147.135.ebuild b/www-client/chromium/chromium-84.0.4147.135.ebuild
33 new file mode 100644
34 index 00000000000..9b5be37f79f
35 --- /dev/null
36 +++ b/www-client/chromium/chromium-84.0.4147.135.ebuild
37 @@ -0,0 +1,866 @@
38 +# Copyright 2009-2020 Gentoo Authors
39 +# Distributed under the terms of the GNU General Public License v2
40 +
41 +EAPI=7
42 +PYTHON_COMPAT=( python2_7 )
43 +
44 +CHROMIUM_LANGS="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he
45 + 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
46 + sv sw ta te th tr uk vi zh-CN zh-TW"
47 +
48 +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
49 +
50 +DESCRIPTION="Open-source version of Google Chrome web browser"
51 +HOMEPAGE="https://chromium.org/"
52 +XCB_PROTO_VERSION="1.14"
53 +PATCHSET="3"
54 +PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
55 +SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
56 + https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip
57 + https://www.x.org/releases/individual/proto/xcb-proto-${XCB_PROTO_VERSION}.tar.xz
58 + https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz"
59 +
60 +LICENSE="BSD"
61 +SLOT="0"
62 +KEYWORDS="~amd64 ~arm64 ~x86"
63 +IUSE="+closure-compile component-build cups cpu_flags_arm_neon +hangouts headless kerberos ozone pic +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg +system-icu +system-libvpx +tcmalloc wayland widevine"
64 +RESTRICT="!system-ffmpeg? ( proprietary-codecs? ( bindist ) )"
65 +REQUIRED_USE="
66 + component-build? ( !suid )
67 + wayland? ( ozone )
68 +"
69 +
70 +COMMON_X_DEPEND="
71 + media-libs/mesa:=[gbm]
72 + x11-libs/libX11:=
73 + x11-libs/libXcomposite:=
74 + x11-libs/libXcursor:=
75 + x11-libs/libXdamage:=
76 + x11-libs/libXext:=
77 + x11-libs/libXfixes:=
78 + >=x11-libs/libXi-1.6.0:=
79 + x11-libs/libXrandr:=
80 + x11-libs/libXrender:=
81 + x11-libs/libXtst:=
82 + x11-libs/libXScrnSaver:=
83 + x11-libs/libxcb:=
84 +"
85 +
86 +COMMON_DEPEND="
87 + app-arch/bzip2:=
88 + cups? ( >=net-print/cups-1.3.11:= )
89 + dev-libs/expat:=
90 + dev-libs/glib:2
91 + >=dev-libs/libxml2-2.9.4-r3:=[icu]
92 + dev-libs/nspr:=
93 + >=dev-libs/nss-3.26:=
94 + >=media-libs/alsa-lib-1.0.19:=
95 + media-libs/fontconfig:=
96 + media-libs/freetype:=
97 + >=media-libs/harfbuzz-2.4.0:0=[icu(-)]
98 + media-libs/libjpeg-turbo:=
99 + media-libs/libpng:=
100 + system-libvpx? ( >=media-libs/libvpx-1.8.2:=[postproc,svc] )
101 + pulseaudio? ( media-sound/pulseaudio:= )
102 + system-ffmpeg? (
103 + >=media-video/ffmpeg-4:=
104 + || (
105 + media-video/ffmpeg[-samba]
106 + >=net-fs/samba-4.5.10-r1[-debug(-)]
107 + )
108 + >=media-libs/opus-1.3.1:=
109 + )
110 + sys-apps/dbus:=
111 + sys-apps/pciutils:=
112 + virtual/udev
113 + x11-libs/cairo:=
114 + x11-libs/gdk-pixbuf:2
115 + x11-libs/pango:=
116 + media-libs/flac:=
117 + >=media-libs/libwebp-0.4.0:=
118 + sys-libs/zlib:=[minizip]
119 + kerberos? ( virtual/krb5 )
120 + ozone? (
121 + !headless? (
122 + ${COMMON_X_DEPEND}
123 + x11-libs/gtk+:3[wayland?,X]
124 + wayland? (
125 + dev-libs/wayland:=
126 + dev-libs/libffi:=
127 + x11-libs/libdrm:=
128 + x11-libs/libxkbcommon:=
129 + )
130 + )
131 + )
132 + !ozone? (
133 + >=app-accessibility/at-spi2-atk-2.26:2
134 + >=app-accessibility/at-spi2-core-2.26:2
135 + >=dev-libs/atk-2.26
136 + x11-libs/gtk+:3[X]
137 + ${COMMON_X_DEPEND}
138 + )
139 +"
140 +# For nvidia-drivers blocker, see bug #413637 .
141 +RDEPEND="${COMMON_DEPEND}
142 + x11-misc/xdg-utils
143 + virtual/opengl
144 + virtual/ttf-fonts
145 + selinux? ( sec-policy/selinux-chromium )
146 + tcmalloc? ( !<x11-drivers/nvidia-drivers-331.20 )
147 +"
148 +DEPEND="${COMMON_DEPEND}
149 +"
150 +# dev-vcs/git - https://bugs.gentoo.org/593476
151 +BDEPEND="
152 + ${PYTHON_DEPS}
153 + >=app-arch/gzip-1.7
154 + app-arch/unzip
155 + dev-lang/perl
156 + >=dev-util/gn-0.1726
157 + dev-vcs/git
158 + >=dev-util/gperf-3.0.3
159 + >=dev-util/ninja-1.7.2
160 + >=net-libs/nodejs-7.6.0[inspector]
161 + sys-apps/hwids[usb(+)]
162 + >=sys-devel/bison-2.4.3
163 + sys-devel/flex
164 + virtual/pkgconfig
165 + closure-compile? ( virtual/jre )
166 +"
167 +
168 +: ${CHROMIUM_FORCE_CLANG=no}
169 +: ${CHROMIUM_FORCE_LIBCXX=no}
170 +
171 +if [[ ${CHROMIUM_FORCE_CLANG} == yes ]]; then
172 + BDEPEND+=" >=sys-devel/clang-9"
173 +fi
174 +
175 +if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
176 + RDEPEND+=" >=sys-libs/libcxx-9"
177 + DEPEND+=" >=sys-libs/libcxx-9"
178 +else
179 + COMMON_DEPEND="
180 + app-arch/snappy:=
181 + dev-libs/libxslt:=
182 + >=dev-libs/re2-0.2019.08.01:=
183 + >=media-libs/openh264-1.6.0:=
184 + system-icu? ( >=dev-libs/icu-67.1:= )
185 + "
186 + RDEPEND+="${COMMON_DEPEND}"
187 + DEPEND+="${COMMON_DEPEND}"
188 +fi
189 +
190 +if ! has chromium_pkg_die ${EBUILD_DEATH_HOOKS}; then
191 + EBUILD_DEATH_HOOKS+=" chromium_pkg_die";
192 +fi
193 +
194 +DISABLE_AUTOFORMATTING="yes"
195 +DOC_CONTENTS="
196 +Some web pages may require additional fonts to display properly.
197 +Try installing some of the following packages if some characters
198 +are not displayed properly:
199 +- media-fonts/arphicfonts
200 +- media-fonts/droid
201 +- media-fonts/ipamonafont
202 +- media-fonts/noto
203 +- media-fonts/ja-ipafonts
204 +- media-fonts/takao-fonts
205 +- media-fonts/wqy-microhei
206 +- media-fonts/wqy-zenhei
207 +
208 +To fix broken icons on the Downloads page, you should install an icon
209 +theme that covers the appropriate MIME types, and configure this as your
210 +GTK+ icon theme.
211 +
212 +For native file dialogs in KDE, install kde-apps/kdialog.
213 +
214 +To make password storage work with your desktop environment you may
215 +have install one of the supported credentials management applications:
216 +- app-crypt/libsecret (GNOME)
217 +- kde-frameworks/kwallet (KDE)
218 +If you have one of above packages installed, but don't want to use
219 +them in Chromium, then add --password-store=basic to CHROMIUM_FLAGS
220 +in /etc/chromium/default.
221 +"
222 +
223 +PATCHES=(
224 + "${FILESDIR}/chromium-84-mediaalloc.patch"
225 +)
226 +
227 +pre_build_checks() {
228 + if [[ ${MERGE_TYPE} != binary ]]; then
229 + local -x CPP="$(tc-getCXX) -E"
230 + if tc-is-gcc && ! ver_test "$(gcc-version)" -ge 9.2; then
231 + die "At least gcc 9.2 is required"
232 + fi
233 + # component build hangs with tcmalloc enabled due to sandbox issue, bug #695976.
234 + if has usersandbox ${FEATURES} && use tcmalloc && use component-build; then
235 + die "Component build with tcmalloc requires FEATURES=-usersandbox."
236 + fi
237 + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] || tc-is-clang; then
238 + if use component-build; then
239 + die "Component build with clang requires fuzzer headers."
240 + fi
241 + fi
242 + fi
243 +
244 + # Check build requirements, bug #541816 and bug #471810 .
245 + CHECKREQS_MEMORY="3G"
246 + CHECKREQS_DISK_BUILD="7G"
247 + if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then
248 + if use custom-cflags || use component-build; then
249 + CHECKREQS_DISK_BUILD="25G"
250 + fi
251 + if ! use component-build; then
252 + CHECKREQS_MEMORY="16G"
253 + fi
254 + fi
255 + check-reqs_pkg_setup
256 +}
257 +
258 +pkg_pretend() {
259 + pre_build_checks
260 +}
261 +
262 +pkg_setup() {
263 + pre_build_checks
264 +
265 + chromium_suid_sandbox_check_kernel_config
266 +}
267 +
268 +src_prepare() {
269 + # Calling this here supports resumption via FEATURES=keepwork
270 + python_setup
271 +
272 + eapply "${WORKDIR}/patches"
273 +
274 + default
275 +
276 + mkdir -p third_party/node/linux/node-linux-x64/bin || die
277 + ln -s "${EPREFIX}"/usr/bin/node third_party/node/linux/node-linux-x64/bin/node || die
278 +
279 + local keeplibs=(
280 + base/third_party/cityhash
281 + base/third_party/double_conversion
282 + base/third_party/dynamic_annotations
283 + base/third_party/icu
284 + base/third_party/nspr
285 + base/third_party/superfasthash
286 + base/third_party/symbolize
287 + base/third_party/valgrind
288 + base/third_party/xdg_mime
289 + base/third_party/xdg_user_dirs
290 + buildtools/third_party/libc++
291 + buildtools/third_party/libc++abi
292 + chrome/third_party/mozilla_security_manager
293 + courgette/third_party
294 + net/third_party/mozilla_security_manager
295 + net/third_party/nss
296 + net/third_party/quic
297 + net/third_party/uri_template
298 + third_party/abseil-cpp
299 + third_party/angle
300 + third_party/angle/src/common/third_party/base
301 + third_party/angle/src/common/third_party/smhasher
302 + third_party/angle/src/common/third_party/xxhash
303 + third_party/angle/src/third_party/compiler
304 + third_party/angle/src/third_party/libXNVCtrl
305 + third_party/angle/src/third_party/trace_event
306 + third_party/angle/src/third_party/volk
307 + third_party/angle/third_party/glslang
308 + third_party/angle/third_party/spirv-headers
309 + third_party/angle/third_party/spirv-tools
310 + third_party/angle/third_party/vulkan-headers
311 + third_party/angle/third_party/vulkan-loader
312 + third_party/angle/third_party/vulkan-tools
313 + third_party/angle/third_party/vulkan-validation-layers
314 + third_party/apple_apsl
315 + third_party/axe-core
316 + third_party/blink
317 + third_party/boringssl
318 + third_party/boringssl/src/third_party/fiat
319 + third_party/breakpad
320 + third_party/breakpad/breakpad/src/third_party/curl
321 + third_party/brotli
322 + third_party/cacheinvalidation
323 + third_party/catapult
324 + third_party/catapult/common/py_vulcanize/third_party/rcssmin
325 + third_party/catapult/common/py_vulcanize/third_party/rjsmin
326 + third_party/catapult/third_party/beautifulsoup4
327 + third_party/catapult/third_party/html5lib-python
328 + third_party/catapult/third_party/polymer
329 + third_party/catapult/third_party/six
330 + third_party/catapult/tracing/third_party/d3
331 + third_party/catapult/tracing/third_party/gl-matrix
332 + third_party/catapult/tracing/third_party/jpeg-js
333 + third_party/catapult/tracing/third_party/jszip
334 + third_party/catapult/tracing/third_party/mannwhitneyu
335 + third_party/catapult/tracing/third_party/oboe
336 + third_party/catapult/tracing/third_party/pako
337 + third_party/ced
338 + third_party/cld_3
339 + third_party/closure_compiler
340 + third_party/crashpad
341 + third_party/crashpad/crashpad/third_party/lss
342 + third_party/crashpad/crashpad/third_party/zlib
343 + third_party/crc32c
344 + third_party/cros_system_api
345 + third_party/dav1d
346 + third_party/dawn
347 + third_party/depot_tools
348 + third_party/devscripts
349 + third_party/devtools-frontend
350 + third_party/devtools-frontend/src/front_end/third_party/acorn
351 + third_party/devtools-frontend/src/front_end/third_party/codemirror
352 + third_party/devtools-frontend/src/front_end/third_party/fabricjs
353 + third_party/devtools-frontend/src/front_end/third_party/lighthouse
354 + third_party/devtools-frontend/src/front_end/third_party/wasmparser
355 + third_party/devtools-frontend/src/third_party
356 + third_party/dom_distiller_js
357 + third_party/emoji-segmenter
358 + third_party/flatbuffers
359 + third_party/freetype
360 + third_party/libgifcodec
361 + third_party/glslang
362 + third_party/google_input_tools
363 + third_party/google_input_tools/third_party/closure_library
364 + third_party/google_input_tools/third_party/closure_library/third_party/closure
365 + third_party/googletest
366 + third_party/harfbuzz-ng/utils
367 + third_party/hunspell
368 + third_party/iccjpeg
369 + third_party/inspector_protocol
370 + third_party/jinja2
371 + third_party/jsoncpp
372 + third_party/jstemplate
373 + third_party/khronos
374 + third_party/leveldatabase
375 + third_party/libXNVCtrl
376 + third_party/libaddressinput
377 + third_party/libaom
378 + third_party/libaom/source/libaom/third_party/vector
379 + third_party/libaom/source/libaom/third_party/x86inc
380 + third_party/libavif
381 + third_party/libjingle
382 + third_party/libphonenumber
383 + third_party/libsecret
384 + third_party/libsrtp
385 + third_party/libsync
386 + third_party/libudev
387 + third_party/libwebm
388 + third_party/libxml/chromium
389 + third_party/libyuv
390 + third_party/llvm
391 + third_party/lottie
392 + third_party/lss
393 + third_party/lzma_sdk
394 + third_party/mako
395 + third_party/markupsafe
396 + third_party/mesa
397 + third_party/metrics_proto
398 + third_party/modp_b64
399 + third_party/nasm
400 + third_party/node
401 + third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2
402 + third_party/one_euro_filter
403 + third_party/openscreen
404 + third_party/openscreen/src/third_party/mozilla
405 + third_party/openscreen/src/third_party/tinycbor/src/src
406 + third_party/ots
407 + third_party/pdfium
408 + third_party/pdfium/third_party/agg23
409 + third_party/pdfium/third_party/base
410 + third_party/pdfium/third_party/bigint
411 + third_party/pdfium/third_party/freetype
412 + third_party/pdfium/third_party/lcms
413 + third_party/pdfium/third_party/libopenjpeg20
414 + third_party/pdfium/third_party/libpng16
415 + third_party/pdfium/third_party/libtiff
416 + third_party/pdfium/third_party/skia_shared
417 + third_party/perfetto
418 + third_party/pffft
419 + third_party/ply
420 + third_party/polymer
421 + third_party/private-join-and-compute
422 + third_party/protobuf
423 + third_party/protobuf/third_party/six
424 + third_party/pyjson5
425 + third_party/qcms
426 + third_party/rnnoise
427 + third_party/s2cellid
428 + third_party/schema_org
429 + third_party/simplejson
430 + third_party/skia
431 + third_party/skia/include/third_party/skcms
432 + third_party/skia/include/third_party/vulkan
433 + third_party/skia/third_party/skcms
434 + third_party/skia/third_party/vulkan
435 + third_party/smhasher
436 + third_party/spirv-headers
437 + third_party/SPIRV-Tools
438 + third_party/sqlite
439 + third_party/swiftshader
440 + third_party/swiftshader/third_party/astc-encoder
441 + third_party/swiftshader/third_party/llvm-subzero
442 + third_party/swiftshader/third_party/marl
443 + third_party/swiftshader/third_party/subzero
444 + third_party/swiftshader/third_party/SPIRV-Headers/include/spirv/unified1
445 + third_party/unrar
446 + third_party/usrsctp
447 + third_party/vulkan
448 + third_party/web-animations-js
449 + third_party/webdriver
450 + third_party/webrtc
451 + third_party/webrtc/common_audio/third_party/ooura
452 + third_party/webrtc/common_audio/third_party/spl_sqrt_floor
453 + third_party/webrtc/modules/third_party/fft
454 + third_party/webrtc/modules/third_party/g711
455 + third_party/webrtc/modules/third_party/g722
456 + third_party/webrtc/rtc_base/third_party/base64
457 + third_party/webrtc/rtc_base/third_party/sigslot
458 + third_party/widevine
459 + third_party/woff2
460 + third_party/wuffs
461 + third_party/zlib/google
462 + tools/grit/third_party/six
463 + url/third_party/mozilla
464 + v8/src/third_party/siphash
465 + v8/src/third_party/valgrind
466 + v8/src/third_party/utf8-decoder
467 + v8/third_party/inspector_protocol
468 + v8/third_party/v8
469 +
470 + # gyp -> gn leftovers
471 + base/third_party/libevent
472 + third_party/adobe
473 + third_party/speech-dispatcher
474 + third_party/usb_ids
475 + third_party/xdg-utils
476 + )
477 + if ! use system-ffmpeg; then
478 + keeplibs+=( third_party/ffmpeg third_party/opus )
479 + fi
480 + if ! use system-icu; then
481 + keeplibs+=( third_party/icu )
482 + fi
483 + if ! use system-libvpx; then
484 + keeplibs+=( third_party/libvpx )
485 + keeplibs+=( third_party/libvpx/source/libvpx/third_party/x86inc )
486 +
487 + # we need to generate ppc64 stuff because upstream does not ship it yet
488 + # it has to be done before unbundling.
489 + if use ppc64; then
490 + pushd third_party/libvpx >/dev/null || die
491 + mkdir -p source/config/linux/ppc64 || die
492 + ./generate_gni.sh || die
493 + popd >/dev/null || die
494 + fi
495 + fi
496 + if use tcmalloc; then
497 + keeplibs+=( third_party/tcmalloc )
498 + fi
499 + if use ozone && use wayland && ! use headless ; then
500 + keeplibs+=( third_party/wayland )
501 + fi
502 + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
503 + keeplibs+=( third_party/libxml )
504 + keeplibs+=( third_party/libxslt )
505 + keeplibs+=( third_party/openh264 )
506 + keeplibs+=( third_party/re2 )
507 + keeplibs+=( third_party/snappy )
508 + if use system-icu; then
509 + keeplibs+=( third_party/icu )
510 + fi
511 + fi
512 + if use arm64 || use ppc64 ; then
513 + keeplibs+=( third_party/swiftshader/third_party/llvm-10.0 )
514 + fi
515 + # Remove most bundled libraries. Some are still needed.
516 + build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die
517 +}
518 +
519 +src_configure() {
520 + # Calling this here supports resumption via FEATURES=keepwork
521 + python_setup
522 +
523 + local myconf_gn=""
524 +
525 + # Make sure the build system will use the right tools, bug #340795.
526 + tc-export AR CC CXX NM
527 +
528 + if [[ ${CHROMIUM_FORCE_CLANG} == yes ]] && ! tc-is-clang; then
529 + # Force clang since gcc is pretty broken at the moment.
530 + CC=${CHOST}-clang
531 + CXX=${CHOST}-clang++
532 + strip-unsupported-flags
533 + fi
534 +
535 + if tc-is-clang; then
536 + myconf_gn+=" is_clang=true clang_use_chrome_plugins=false"
537 + else
538 + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
539 + die "Compiling with sys-libs/libcxx requires clang."
540 + fi
541 + myconf_gn+=" is_clang=false"
542 + fi
543 +
544 + # Define a custom toolchain for GN
545 + myconf_gn+=" custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
546 +
547 + if tc-is-cross-compiler; then
548 + tc-export BUILD_{AR,CC,CXX,NM}
549 + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:host\""
550 + myconf_gn+=" v8_snapshot_toolchain=\"//build/toolchain/linux/unbundle:host\""
551 + else
552 + myconf_gn+=" host_toolchain=\"//build/toolchain/linux/unbundle:default\""
553 + fi
554 +
555 + # GN needs explicit config for Debug/Release as opposed to inferring it from build directory.
556 + myconf_gn+=" is_debug=false"
557 +
558 + # Component build isn't generally intended for use by end users. It's mostly useful
559 + # for development and debugging.
560 + myconf_gn+=" is_component_build=$(usex component-build true false)"
561 +
562 + myconf_gn+=" use_allocator=$(usex tcmalloc \"tcmalloc\" \"none\")"
563 +
564 + # Disable nacl, we can't build without pnacl (http://crbug.com/269560).
565 + myconf_gn+=" enable_nacl=false"
566 +
567 + # Use system-provided libraries.
568 + # TODO: freetype -- remove sources (https://bugs.chromium.org/p/pdfium/issues/detail?id=733).
569 + # TODO: use_system_hunspell (upstream changes needed).
570 + # TODO: use_system_libsrtp (bug #459932).
571 + # TODO: use_system_protobuf (bug #525560).
572 + # TODO: use_system_ssl (http://crbug.com/58087).
573 + # TODO: use_system_sqlite (http://crbug.com/22208).
574 +
575 + # libevent: https://bugs.gentoo.org/593458
576 + local gn_system_libraries=(
577 + flac
578 + fontconfig
579 + freetype
580 + # Need harfbuzz_from_pkgconfig target
581 + #harfbuzz-ng
582 + libdrm
583 + libjpeg
584 + libpng
585 + libwebp
586 + zlib
587 + )
588 + if use system-ffmpeg; then
589 + gn_system_libraries+=( ffmpeg opus )
590 + fi
591 + if use system-icu; then
592 + gn_system_libraries+=( icu )
593 + fi
594 + if use system-libvpx; then
595 + gn_system_libraries+=( libvpx )
596 + fi
597 + if [[ ${CHROMIUM_FORCE_LIBCXX} != yes ]]; then
598 + # unbundle only without libc++, because libc++ is not fully ABI compatible with libstdc++
599 + gn_system_libraries+=( libxml )
600 + gn_system_libraries+=( libxslt )
601 + gn_system_libraries+=( openh264 )
602 + gn_system_libraries+=( re2 )
603 + gn_system_libraries+=( snappy )
604 + fi
605 + build/linux/unbundle/replace_gn_files.py --system-libraries "${gn_system_libraries[@]}" || die
606 +
607 + # See dependency logic in third_party/BUILD.gn
608 + myconf_gn+=" use_system_harfbuzz=true"
609 +
610 + # Disable deprecated libgnome-keyring dependency, bug #713012
611 + myconf_gn+=" use_gnome_keyring=false"
612 +
613 + # Optional dependencies.
614 + myconf_gn+=" closure_compile=$(usex closure-compile true false)"
615 + myconf_gn+=" enable_hangout_services_extension=$(usex hangouts true false)"
616 + myconf_gn+=" enable_widevine=$(usex widevine true false)"
617 + myconf_gn+=" use_cups=$(usex cups true false)"
618 + myconf_gn+=" use_kerberos=$(usex kerberos true false)"
619 + myconf_gn+=" use_pulseaudio=$(usex pulseaudio true false)"
620 +
621 + # TODO: link_pulseaudio=true for GN.
622 +
623 + myconf_gn+=" fieldtrial_testing_like_official_build=true"
624 +
625 + # Never use bundled gold binary. Disable gold linker flags for now.
626 + # Do not use bundled clang.
627 + # Trying to use gold results in linker crash.
628 + myconf_gn+=" use_gold=false use_sysroot=false use_custom_libcxx=false"
629 +
630 + # Disable forced lld, bug 641556
631 + myconf_gn+=" use_lld=false"
632 +
633 + ffmpeg_branding="$(usex proprietary-codecs Chrome Chromium)"
634 + myconf_gn+=" proprietary_codecs=$(usex proprietary-codecs true false)"
635 + myconf_gn+=" ffmpeg_branding=\"${ffmpeg_branding}\""
636 +
637 + # Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys .
638 + # Note: these are for Gentoo use ONLY. For your own distribution,
639 + # please get your own set of keys. Feel free to contact chromium@g.o
640 + # for more info.
641 + local google_api_key="AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc"
642 + local google_default_client_id="329227923882.apps.googleusercontent.com"
643 + local google_default_client_secret="vgKG0NNv7GoDpbtoFNLxCUXu"
644 + myconf_gn+=" google_api_key=\"${google_api_key}\""
645 + myconf_gn+=" google_default_client_id=\"${google_default_client_id}\""
646 + myconf_gn+=" google_default_client_secret=\"${google_default_client_secret}\""
647 + local myarch="$(tc-arch)"
648 +
649 + # Avoid CFLAGS problems, bug #352457, bug #390147.
650 + if ! use custom-cflags; then
651 + replace-flags "-Os" "-O2"
652 + strip-flags
653 +
654 + # Debug info section overflows without component build
655 + # Prevent linker from running out of address space, bug #471810 .
656 + if ! use component-build || use x86; then
657 + filter-flags "-g*"
658 + fi
659 +
660 + # Prevent libvpx build failures. Bug 530248, 544702, 546984.
661 + if [[ ${myarch} == amd64 || ${myarch} == x86 ]]; then
662 + filter-flags -mno-mmx -mno-sse2 -mno-ssse3 -mno-sse4.1 -mno-avx -mno-avx2 -mno-fma -mno-fma4
663 + fi
664 + fi
665 +
666 + if [[ ${CHROMIUM_FORCE_LIBCXX} == yes ]]; then
667 + append-flags -stdlib=libc++
668 + append-ldflags -stdlib=libc++
669 + fi
670 +
671 + if [[ $myarch = amd64 ]] ; then
672 + myconf_gn+=" target_cpu=\"x64\""
673 + ffmpeg_target_arch=x64
674 + elif [[ $myarch = x86 ]] ; then
675 + myconf_gn+=" target_cpu=\"x86\""
676 + ffmpeg_target_arch=ia32
677 +
678 + # This is normally defined by compiler_cpu_abi in
679 + # build/config/compiler/BUILD.gn, but we patch that part out.
680 + append-flags -msse2 -mfpmath=sse -mmmx
681 + elif [[ $myarch = arm64 ]] ; then
682 + myconf_gn+=" target_cpu=\"arm64\""
683 + ffmpeg_target_arch=arm64
684 + elif [[ $myarch = arm ]] ; then
685 + myconf_gn+=" target_cpu=\"arm\""
686 + ffmpeg_target_arch=$(usex cpu_flags_arm_neon arm-neon arm)
687 + elif [[ $myarch = ppc64 ]] ; then
688 + myconf_gn+=" target_cpu=\"ppc64\""
689 + ffmpeg_target_arch=ppc64
690 + else
691 + die "Failed to determine target arch, got '$myarch'."
692 + fi
693 +
694 + # Make sure that -Werror doesn't get added to CFLAGS by the build system.
695 + # Depending on GCC version the warnings are different and we don't want
696 + # the build to fail because of that.
697 + myconf_gn+=" treat_warnings_as_errors=false"
698 +
699 + # Disable fatal linker warnings, bug 506268.
700 + myconf_gn+=" fatal_linker_warnings=false"
701 +
702 + # Bug 491582.
703 + export TMPDIR="${WORKDIR}/temp"
704 + mkdir -p -m 755 "${TMPDIR}" || die
705 +
706 + # https://bugs.gentoo.org/654216
707 + addpredict /dev/dri/ #nowarn
708 +
709 + #if ! use system-ffmpeg; then
710 + if false; then
711 + local build_ffmpeg_args=""
712 + if use pic && [[ "${ffmpeg_target_arch}" == "ia32" ]]; then
713 + build_ffmpeg_args+=" --disable-asm"
714 + fi
715 +
716 + # Re-configure bundled ffmpeg. See bug #491378 for example reasons.
717 + einfo "Configuring bundled ffmpeg..."
718 + pushd third_party/ffmpeg > /dev/null || die
719 + chromium/scripts/build_ffmpeg.py linux ${ffmpeg_target_arch} \
720 + --branding ${ffmpeg_branding} -- ${build_ffmpeg_args} || die
721 + chromium/scripts/copy_config.sh || die
722 + chromium/scripts/generate_gn.py || die
723 + popd > /dev/null || die
724 + fi
725 +
726 + # Chromium relies on this, but was disabled in >=clang-10, crbug.com/1042470
727 + append-cxxflags $(test-flags-CXX -flax-vector-conversions=all)
728 +
729 + # Explicitly disable ICU data file support for system-icu builds.
730 + if use system-icu; then
731 + myconf_gn+=" icu_use_data_file=false"
732 + fi
733 +
734 + # Use bundled xcb-proto, bug #727000
735 + myconf_gn+=" xcbproto_path=\"${WORKDIR}/xcb-proto-${XCB_PROTO_VERSION}/src\""
736 +
737 + # Enable ozone support
738 + if use ozone; then
739 + myconf_gn+=" use_ozone=true ozone_auto_platforms=false"
740 + myconf_gn+=" ozone_platform_headless=true"
741 + if ! use headless; then
742 + myconf_gn+=" use_system_libdrm=true"
743 + myconf_gn+=" ozone_platform_wayland=$(usex wayland true false)"
744 + myconf_gn+=" ozone_platform_x11=true"
745 + myconf_gn+=" ozone_platform_headless=true"
746 + if use wayland; then
747 + myconf_gn+=" use_system_minigbm=true use_xkbcommon=true"
748 + myconf_gn+=" ozone_platform=\"wayland\""
749 + else
750 + myconf_gn+=" ozone_platform=\"x11\""
751 + fi
752 + else
753 + myconf_gn+=" ozone_platform=\"headless\""
754 + fi
755 + fi
756 +
757 + einfo "Configuring Chromium..."
758 + set -- gn gen --args="${myconf_gn} ${EXTRA_GN}" out/Release
759 + echo "$@"
760 + "$@" || die
761 +}
762 +
763 +src_compile() {
764 + # Final link uses lots of file descriptors.
765 + ulimit -n 2048
766 +
767 + # Calling this here supports resumption via FEATURES=keepwork
768 + python_setup
769 +
770 + # https://bugs.gentoo.org/717456
771 + # Use bundled xcb-proto, because system xcb-proto doesn't have Python 2.7 support
772 + local -x PYTHONPATH="${WORKDIR}/setuptools-44.1.0:${WORKDIR}/xcb-proto-${XCB_PROTO_VERSION}${PYTHONPATH+:}${PYTHONPATH}"
773 +
774 + #"${EPYTHON}" tools/clang/scripts/update.py --force-local-build --gcc-toolchain /usr --skip-checkout --use-system-cmake --without-android || die
775 +
776 + # Build mksnapshot and pax-mark it.
777 + local x
778 + for x in mksnapshot v8_context_snapshot_generator; do
779 + if tc-is-cross-compiler; then
780 + eninja -C out/Release "host/${x}"
781 + pax-mark m "out/Release/host/${x}"
782 + else
783 + eninja -C out/Release "${x}"
784 + pax-mark m "out/Release/${x}"
785 + fi
786 + done
787 +
788 + # Even though ninja autodetects number of CPUs, we respect
789 + # user's options, for debugging with -j 1 or any other reason.
790 + eninja -C out/Release chrome chromedriver
791 + use suid && eninja -C out/Release chrome_sandbox
792 +
793 + pax-mark m out/Release/chrome
794 +
795 + # Build manpage; bug #684550
796 + sed -e 's|@@PACKAGE@@|chromium-browser|g;
797 + s|@@MENUNAME@@|Chromium|g;' \
798 + chrome/app/resources/manpage.1.in > \
799 + out/Release/chromium-browser.1 || die
800 +
801 + # Build desktop file; bug #706786
802 + sed -e 's|@@MENUNAME@@|Chromium|g;
803 + s|@@USR_BIN_SYMLINK_NAME@@|chromium-browser|g;
804 + s|@@PACKAGE@@|chromium-browser|g;
805 + s|\(^Exec=\)/usr/bin/|\1|g;' \
806 + chrome/installer/linux/common/desktop.template > \
807 + out/Release/chromium-browser-chromium.desktop || die
808 +}
809 +
810 +src_install() {
811 + local CHROMIUM_HOME="/usr/$(get_libdir)/chromium-browser"
812 + exeinto "${CHROMIUM_HOME}"
813 + doexe out/Release/chrome
814 +
815 + if use suid; then
816 + newexe out/Release/chrome_sandbox chrome-sandbox
817 + fperms 4755 "${CHROMIUM_HOME}/chrome-sandbox"
818 + fi
819 +
820 + doexe out/Release/chromedriver
821 +
822 + ozone_auto_session () {
823 + use ozone && use wayland && ! use headless && echo true || echo false
824 + }
825 + local sedargs=( -e
826 + "s:/usr/lib/:/usr/$(get_libdir)/:g;
827 + s:@@OZONE_AUTO_SESSION@@:$(ozone_auto_session):g"
828 + )
829 + sed "${sedargs[@]}" "${FILESDIR}/chromium-launcher-r5.sh" > chromium-launcher.sh || die
830 + doexe chromium-launcher.sh
831 +
832 + # It is important that we name the target "chromium-browser",
833 + # xdg-utils expect it; bug #355517.
834 + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium-browser
835 + # keep the old symlink around for consistency
836 + dosym "${CHROMIUM_HOME}/chromium-launcher.sh" /usr/bin/chromium
837 +
838 + dosym "${CHROMIUM_HOME}/chromedriver" /usr/bin/chromedriver
839 +
840 + # Allow users to override command-line options, bug #357629.
841 + insinto /etc/chromium
842 + newins "${FILESDIR}/chromium.default" "default"
843 +
844 + pushd out/Release/locales > /dev/null || die
845 + chromium_remove_language_paks
846 + popd
847 +
848 + insinto "${CHROMIUM_HOME}"
849 + doins out/Release/*.bin
850 + doins out/Release/*.pak
851 + (
852 + shopt -s nullglob
853 + local files=(out/Release/*.so)
854 + [[ ${#files[@]} -gt 0 ]] && doins "${files[@]}"
855 + )
856 +
857 + if ! use system-icu; then
858 + doins out/Release/icudtl.dat
859 + fi
860 +
861 + doins -r out/Release/locales
862 + doins -r out/Release/resources
863 +
864 + if [[ -d out/Release/swiftshader ]]; then
865 + insinto "${CHROMIUM_HOME}/swiftshader"
866 + doins out/Release/swiftshader/*.so
867 + fi
868 +
869 + # Install icons
870 + local branding size
871 + for size in 16 24 32 48 64 128 256 ; do
872 + case ${size} in
873 + 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;;
874 + *) branding="chrome/app/theme/chromium" ;;
875 + esac
876 + newicon -s ${size} "${branding}/product_logo_${size}.png" \
877 + chromium-browser.png
878 + done
879 +
880 + # Install desktop entry
881 + domenu out/Release/chromium-browser-chromium.desktop
882 +
883 + # Install GNOME default application entry (bug #303100).
884 + insinto /usr/share/gnome-control-center/default-apps
885 + newins "${FILESDIR}"/chromium-browser.xml chromium-browser.xml
886 +
887 + # Install manpage; bug #684550
888 + doman out/Release/chromium-browser.1
889 + dosym chromium-browser.1 /usr/share/man/man1/chromium.1
890 +
891 + readme.gentoo_create_doc
892 +}
893 +
894 +pkg_postrm() {
895 + xdg_icon_cache_update
896 + xdg_desktop_database_update
897 +}
898 +
899 +pkg_postinst() {
900 + xdg_icon_cache_update
901 + xdg_desktop_database_update
902 + readme.gentoo_print_elog
903 +}