Gentoo Archives: gentoo-commits

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