Version bump now with the correct binary

This commit is contained in:
Gerben Jan Dijkman 2021-06-29 14:16:02 +02:00
parent 9f5808e217
commit c45e6e27c8
22 changed files with 941 additions and 4258 deletions

View File

@ -0,0 +1,21 @@
DIST chromium-bin-91.0.4472.106-1-common-aarch64.tar.xz 5930796 BLAKE2B 6818da8bbea6cf3e8b3168d5774b174e00c75a9b8612a7ac64f6aa9a623148cc68befb7525aad8f7ac8a8fd18198e34747c7bfdae1a1cb637a8ffe238d524299 SHA512 83c5cb05d51a61f064dff260be3c253bf29f7060fbe00ab77c0f9262fd122defe4d5c3883ccce1fcce88d5e335dbf72e63ae3ecd082262f282edfabbb445ca27
DIST chromium-bin-91.0.4472.106-1-common-i686.tar.xz 2185968 BLAKE2B 1997a1b6a3c721e5aafa2b2b922cd7a866864c6c2dac1b1c634f1767b3167673101befee87a0b53452bb477ae92510e216decf5eb472667a86c1b6c693c4ccdf SHA512 9e04b05fc2638258c8f84c7c3287c53045036efd783f6989ea6c39093f1c04e357d634285cabc43680de98c059b93554bb25ff683941aa3cb61e08e55050605c
DIST chromium-bin-91.0.4472.106-1-common-x86_64.tar.xz 1646160 BLAKE2B 4388a05754a478d3f181232f3219321755b34d69aabcebe2c60d31294e83548825e87ee9a79552bba3bf1eb88584cb6daf02f016edff4fa8533661c8fd45e555 SHA512 df869d884c49328129ffab0367192a103a61215b49ddf6008f3d70f8448c062a17ad987c683484ba530d257ace1d574f5b584f34c7257b1b74890f2dc5333dcd
DIST chromium-bin-91.0.4472.106-1-common.tar.xz 1683952 BLAKE2B d5ec29277d5b29b1562911d2ab2b9f6ad7b29f8befeaf7f4199da42779ff6c032bfd55a907e978ccf651d55a8b915158e09841f9bad5e472f059811ca59fc7ac SHA512 6e4f98aac5deabfef3babe400f5c5fed2775104ad6f974f50aadbf5ed3756487b60d88ba948e93a7b96a36c42b821d469219e26946e4df0d82ac3bacee7afa77
DIST chromium-bin-91.0.4472.106-1-l10n.tar.xz 3891632 BLAKE2B 503c107feaba4ff5cd7168c93efe196a1d9e51690f492159a95c910528c09b27a4975ecf63a5b440930fbf49a9d13d25f249398b9673d39d58d60bb04fbc450c SHA512 98f3deb7b11889466677ac8285b499e88685de29ba187be42a7a4dfe8facc6fc76e5608250d8e791970456442e28cceff542af48c85154fd7e6e0f2593c0362d
DIST chromium-bin-91.0.4472.106-1-resources.tar.xz 21392 BLAKE2B 1e79b097a9219d7065c231c29b8481d882f6f40269693c7cfb7fc31b281d2f2e8a27d06a62ad08e2909c6b05c51d3fdc844ffc2033930fea9668838709ecebf6 SHA512 aae907ef9f01a3d195b7f6082e85d1b5288bae99704d11889d5f0f3bf899d96e01dda0f1fc6d39752196209dc077d8049562e5ad5cff2cd0d3cb43235dda3314
DIST chromium-bin-91.0.4472.106-1-wayland-aarch64.tar.xz 71839688 BLAKE2B 4fdee681472f28a6e7af106ae2a788060845998a56ae6ddbeb549e799ecff98c11bf5ef3f3338930fb92a33ae3a091956423e8ff90bc4f04add4e7e193b23efb SHA512 46b06fd4079676febfde57c9bcdf9e215dd95686529f9559f4843d39f1d521137983ddd5f0e62e15ff4f0d3031b6704f4aabde3e9d80e1e5c446cdb1c8139010
DIST chromium-bin-91.0.4472.106-1-wayland-i686.tar.xz 95064280 BLAKE2B c015c5c01bc934e27cfa791b94f3025193424745e613df5b6915956886a39ead62e1fdf081a98f0b78f19acf57843800aa443f91e5edec0e705ddb3220bd8418 SHA512 73a976145c361ec8c5402a6d456dba2e7f38c086fbb2901e8ef43799b3c04c1f853208d8b362bb202066458ffcfb34ed4ac727434c25b41f0ef0718772fdf18a
DIST chromium-bin-91.0.4472.106-1-wayland-x86_64.tar.xz 74067276 BLAKE2B eb4445cab1fe02affe75dbd2163cfe38daebc5df5a6f1ecc6912e7f480b6f23a5862cf2fd2517bc0b3803a5bbc97d4ee238cace31b58ffb84376ae235a332873 SHA512 d633122e7c4368735d0d9cf39001589a774c04fe3914c51fe79d17e99f8e9bde5dace097b9202fe57b8be8fa912e088d89022331e00163f774f1b09bb99c3b7d
DIST chromium-bin-91.0.4472.106-1-x11-aarch64.tar.xz 71640280 BLAKE2B 1ec58ea0a0a0fae29140b91e0645211543e971d58b47f102d46ba38fa7a6b61260ecba2c33ba98de29406e1942d036e30b9f4893ff3d61194ac058f11b0fee0b SHA512 3f1febd6da0182a881e872fe29b38df554eb6a3b5c82ba58d59040cbe3cbf78eb966ee66292b40622ea2c7a73a77e863c6e54dca98360623503a78fac94fe31f
DIST chromium-bin-91.0.4472.106-1-x11-i686.tar.xz 94910168 BLAKE2B 3fb7e9832a621ab59a4c8afd691d3bd88ed95f1271e0c03cb39085ecd715c849325c4d93758796c07db1b8c5140be7da0948a18cf1bdbb5fb4d5cbf7ea49da95 SHA512 424e017cb7e5f19869c4e259adbbf53982d91f222037cc691c612699bbd43c9ee1f0a4e6db62eaf5e95e0365f718d6302aaa7c2d60b58227d1d061f884d09772
DIST chromium-bin-91.0.4472.106-1-x11-x86_64.tar.xz 73909708 BLAKE2B ffa4c5f3390b5f34a8f676f18fb1dee895b88fe7967bf50795fc8921552edfcb7b73e44f0409247874a4683718cdd23cde19129418b2308aaf37239392fa1dd8 SHA512 308a83e578df0371e5ba658d02a5367f07e457e94b98e8087adf0af37a24b5eb581460f036f1ac204d20fd3484de02326da22075eff127eefd063f39d9d8a50c
DIST chromium-bin-91.0.4472.114-1-common-i686.tar.xz 2186180 BLAKE2B f910811901be5769b750eff2d49cd1c84b636ffb913d3e4a7512212bd911c8a86a2788da281ee87cd4b69277d931b67094d68e596f408bad730e11201b13a2e4 SHA512 716882b9548c6aee9c8037cd1249509e6388ba631d9cb68912e2150708ab9f597599168390b39524573b6f80366e204ef148507cacef50377891bc0d13564891
DIST chromium-bin-91.0.4472.114-1-common-x86_64.tar.xz 1645624 BLAKE2B 2d6c64c58d8e5769e0ebf06d40ffaea6a3d6f94fb9f7bbf113a3c437fa873e48734700dc8de1962abe4b0b3aa182832d4b7417f3b3e2e09e6a6393af5f936096 SHA512 972cfecdf0969cb375b1ff44118babfa8880223f6768175a6e94a69be8545eec93b35500aafd91e0b1f82d67c3b936677632ae85f1724825f860cee6b9b294f3
DIST chromium-bin-91.0.4472.114-1-common.tar.xz 1683900 BLAKE2B c9f1acff299a957735eb263d7b29bf23741ed140264d02a87da117166bdad4a25ca25a853cc32385198bb9ccdaf667c9ef4ecfff37849e0e4cc4842c7258f208 SHA512 75aecf0ceaaaa65a32bb7ebebe0d615e140a0197f3a1163ea47d88837b3df2728afe62e15f77f8112e191ca99bddf2d5f66d96c9b0fc7fd75c9e2bb652d27680
DIST chromium-bin-91.0.4472.114-1-l10n.tar.xz 3893496 BLAKE2B 90936bd99d6f0158069bb2d62211eca368082dc1361a72f6ed0d921b8adf943077d97374c8f062091ce268a546be0bad31bd274c0adbe764e9d2a1e3d96b25ad SHA512 bb66bc151ed2f7905c387c69452ddb78a65cf92792d2feaacad2c7435f69f00135490958c7217cac134d066838ac6aa5c6dc5db93ad475a9cd9d7a49ea93ac34
DIST chromium-bin-91.0.4472.114-1-resources.tar.xz 21400 BLAKE2B c78c24dc497de3c2eea45453002633525e8279c1885ed4383d71e463a512ac6e5a02a20c458a4a547c9d23ad3a0a9c51345e21d077be341f517ea332e887d728 SHA512 8607c22d5430fd578464437659cc2b02b99244ae4350206c245399bd3178f7bac6d38f4a45d04573d6b8b11432eb427dfb0e653138879d3e7d0ed4d81150d7fb
DIST chromium-bin-91.0.4472.114-1-wayland-i686.tar.xz 95044376 BLAKE2B e4ba807b466ceb840b8f69e9135ab69278e86f0fdff6354d0a183c20b8aafbf7994d2ee59fe4715945cd9e3a0fa1ffcf46cc5b403e819f4bd879b916b1c2542a SHA512 a1814493b3535dec9f8bf8ea12cbf1f4833f90ea2dc7dd66de9ce17675a15a5d085111900b5ed2ddead56c6f6cce2b09998045cedfbd435568d21b6773fb2e32
DIST chromium-bin-91.0.4472.114-1-wayland-x86_64.tar.xz 74066832 BLAKE2B 89ed73e08ce3320957fa2c1635096d23ea49060cac9d166619cce839d5891716f07810c3309a73cd1348fae78f85ce77c8e4bd7e00a342263b7d65d5d3e6462c SHA512 4cec55016f44b30fb8bcfe71852fcd91277978832cfd0a889eba74cf92889f99a3c283f9f9803baf0c1d60ca280ffb23248302729c14b342c5d6981e18142d14
DIST chromium-bin-91.0.4472.114-1-x11-i686.tar.xz 94828952 BLAKE2B 4636116e84c155988a382c2cc87ba67913436ee431acb7bd314cd3c22c82a7ff99effc209bbcb1808bbc5325b1c702a4e9db07a6f1bdaf03943324f4bd74060a SHA512 22acc0beff7265391ac9db017ea814ea235aaa10c514ebb36c0c32b0605ed71e2182e2edb686bd713a10d7d175b85195a6c961442f0fcece1340aa324464305c
DIST chromium-bin-91.0.4472.114-1-x11-x86_64.tar.xz 73884448 BLAKE2B a19145d45f169982cfcf110b9c3b6615d5b450127244764a22b2351f9e1b96f62c381cdf97fa2106e4ab6b637afbf5b1e7129292aba320b113e7e68c0f4b7f0a SHA512 bf73f02c8a42ec6a097f8027051c5367c3737e16fe54e1ae0ae57b93fe75291693cf2bc676cfdc103aa04cdff1fa68b038d9ef1bbd575ea71ae670c38de8f7fd

View File

@ -0,0 +1,238 @@
# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=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 chromium-2 desktop pax-utils readme.gentoo-r1 unpacker xdg-utils
DESCRIPTION="Open-source version of Google Chrome web browser"
HOMEPAGE="https://chromium.org/"
MY_P=${P}-1
SRC_URI="https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common.tar.xz
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-l10n.tar.xz
devtools? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-resources.tar.xz )
amd64? (
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common-x86_64.tar.xz
wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-wayland-x86_64.tar.xz )
!wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-x11-x86_64.tar.xz )
)
arm64? (
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common-aarch64.tar.xz
wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-wayland-aarch64.tar.xz )
!wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-x11-aarch64.tar.xz )
)
x86? (
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common-i686.tar.xz
wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-wayland-i686.tar.xz )
!wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-x11-i686.tar.xz )
)"
LICENSE="BSD"
SLOT="0"
KEYWORDS="-* ~arm64"
IUSE="cpu_flags_x86_sse2 devtools selinux suid +swiftshader wayland widevine"
RDEPEND="
app-accessibility/at-spi2-atk:2
app-accessibility/at-spi2-core:2
app-arch/snappy
dev-libs/atk
dev-libs/expat
dev-libs/glib:2
dev-libs/icu:0/69.1
dev-libs/libxml2[icu]
dev-libs/libxslt
dev-libs/nspr
>=dev-libs/nss-3.26
dev-libs/re2:0/9
media-libs/alsa-lib
media-libs/flac
media-libs/fontconfig
media-libs/freetype
media-libs/harfbuzz[icu(-)]
media-libs/libjpeg-turbo
media-libs/libpng
media-libs/libwebp
media-libs/mesa[gbm]
media-libs/openh264
media-libs/opus
>=media-video/ffmpeg-4.3
|| (
>=media-video/ffmpeg-4.3[-samba]
net-fs/samba[-debug(-)]
)
net-print/cups
sys-apps/dbus
>=sys-devel/gcc-9.3.0
>=sys-libs/glibc-2.32
sys-libs/zlib[minizip]
virtual/ttf-fonts
x11-libs/cairo
x11-libs/gdk-pixbuf:2
x11-libs/gtk+:3[X]
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXrandr
x11-libs/libXtst
x11-libs/libxcb
x11-libs/libxkbcommon
x11-libs/libxshmfence
x11-libs/pango
x11-misc/xdg-utils
amd64? (
widevine? ( www-plugins/chrome-binary-plugins )
)
selinux? ( sec-policy/selinux-chromium )
wayland? (
dev-libs/wayland
dev-libs/libffi
x11-libs/gtk+:3[wayland,X]
x11-libs/libdrm
)
"
S=${WORKDIR}
QA_PREBUILT="*"
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_BIN_FLAGS
in /etc/chromium-bin/default.
"
pkg_pretend() {
if use amd64 || use x86; then
if ! use cpu_flags_x86_sse2; then
eerror "This package requires a CPU supporting the SSE2 instruction set."
die "SSE2 support missing"
fi
fi
}
pkg_setup() {
chromium_suid_sandbox_check_kernel_config
if ! use amd64 && use widevine; then
ewarn "Widevine CDM plugin is not available for your architecture."
fi
}
src_unpack() {
:
}
src_install() {
dodir /
cd "${ED}" || die
unpacker
local CHROMIUM_BIN_HOME="opt/chromium-bin"
if ! use suid; then
rm "${CHROMIUM_BIN_HOME}/chrome-sandbox" || die
fi
# Remove SwiftShader OpenGL libraries
if ! use swiftshader; then
rm -r "${CHROMIUM_BIN_HOME}/swiftshader" || die
fi
# Clean unneeded languages
pushd "${CHROMIUM_BIN_HOME}/locales" > /dev/null || die
chromium_remove_language_paks
popd > /dev/null || die
# Install icons
local size
for size in 16 24 32 48 64 128 256 ; do
newicon -s ${size} "${CHROMIUM_BIN_HOME}/icons/hicolor/${size}x${size}/apps/chromium-browser.png" ${PN}-browser.png
done
rm -r "${CHROMIUM_BIN_HOME}/icons"
# Allow users to override command-line options, bug #357629.
insinto /etc/chromium-bin
newins "${FILESDIR}/chromium-bin.default" "default"
# Install desktop entry
domenu "${FILESDIR}/chromium-bin-browser-chromium.desktop"
# Install GNOME default application entry (bug #303100).
insinto /usr/share/gnome-control-center/default-apps
newins "${FILESDIR}/chromium-bin-browser.xml" chromium-bin-browser.xml
# Install manpage; bug #684550
doman "${FILESDIR}/chromium-bin-browser.1"
dosym chromium-bin-browser.1 /usr/share/man/man1/chromium-bin.1
pax-mark m "${CHROMIUM_BIN_HOME}/chrome"
# Symlink Widevine CDM
if use widevine && use amd64; then
dosym "../../usr/$(get_libdir)/chromium-browser/WidevineCdm" "${CHROMIUM_BIN_HOME}/WidevineCdm"
fi
# Install launcher
exeinto "${CHROMIUM_BIN_HOME}"
doexe "${FILESDIR}/chromium-bin-launcher.sh"
# It is important that we name the target "chromium-bin-browser",
# xdg-utils expect it; bug #355517.
dosym "../../${CHROMIUM_BIN_HOME}/chromium-bin-launcher.sh" /usr/bin/chromium-bin-browser
# keep the old symlink around for consistency
dosym "../../${CHROMIUM_BIN_HOME}/chromium-bin-launcher.sh" /usr/bin/chromium-bin
dosym "../../${CHROMIUM_BIN_HOME}/chromedriver" /usr/bin/chromedriver-bin
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
elog "For VA-API support you need to install x11-libs/libva with"
elog "USE=X and USE=drm enabled."
elog
elog "VA-API is disabled by default at runtime. Either enable it"
elog "by navigating to chrome://flags/#enable-accelerated-video-decode"
elog "inside Chromium or add --enable-accelerated-video-decode"
elog "to CHROMIUM_BIN_FLAGS in /etc/chromium-bin/default."
}

View File

@ -0,0 +1,233 @@
# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=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 chromium-2 desktop pax-utils readme.gentoo-r1 unpacker xdg-utils
DESCRIPTION="Open-source version of Google Chrome web browser"
HOMEPAGE="https://chromium.org/"
MY_P=${P}-1
SRC_URI="https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common.tar.xz
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-l10n.tar.xz
devtools? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-resources.tar.xz )
amd64? (
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common-x86_64.tar.xz
wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-wayland-x86_64.tar.xz )
!wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-x11-x86_64.tar.xz )
)
x86? (
https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-common-i686.tar.xz
wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-wayland-i686.tar.xz )
!wayland? ( https://dev.gentoo.org/~sultan/distfiles/www-client/chromium-bin/${MY_P}-x11-i686.tar.xz )
)"
LICENSE="BSD"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
IUSE="cpu_flags_x86_sse2 devtools selinux suid +swiftshader wayland widevine"
RDEPEND="
app-accessibility/at-spi2-atk:2
app-accessibility/at-spi2-core:2
app-arch/snappy
dev-libs/atk
dev-libs/expat
dev-libs/glib:2
dev-libs/icu:0/69.1
dev-libs/libxml2[icu]
dev-libs/libxslt
dev-libs/nspr
>=dev-libs/nss-3.26
dev-libs/re2:0/9
media-libs/alsa-lib
media-libs/flac
media-libs/fontconfig
media-libs/freetype
media-libs/harfbuzz[icu(-)]
media-libs/libjpeg-turbo
media-libs/libpng
media-libs/libwebp
media-libs/mesa[gbm]
media-libs/openh264
media-libs/opus
>=media-video/ffmpeg-4.3
|| (
>=media-video/ffmpeg-4.3[-samba]
net-fs/samba[-debug(-)]
)
net-print/cups
sys-apps/dbus
>=sys-devel/gcc-9.3.0
>=sys-libs/glibc-2.32
sys-libs/zlib[minizip]
virtual/ttf-fonts
x11-libs/cairo
x11-libs/gdk-pixbuf:2
x11-libs/gtk+:3[X]
x11-libs/libX11
x11-libs/libXcomposite
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXrandr
x11-libs/libXtst
x11-libs/libxcb
x11-libs/libxkbcommon
x11-libs/libxshmfence
x11-libs/pango
x11-misc/xdg-utils
amd64? (
widevine? ( www-plugins/chrome-binary-plugins )
)
selinux? ( sec-policy/selinux-chromium )
wayland? (
dev-libs/wayland
dev-libs/libffi
x11-libs/gtk+:3[wayland,X]
x11-libs/libdrm
)
"
S=${WORKDIR}
QA_PREBUILT="*"
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_BIN_FLAGS
in /etc/chromium-bin/default.
"
pkg_pretend() {
if use amd64 || use x86; then
if ! use cpu_flags_x86_sse2; then
eerror "This package requires a CPU supporting the SSE2 instruction set."
die "SSE2 support missing"
fi
fi
}
pkg_setup() {
chromium_suid_sandbox_check_kernel_config
if ! use amd64 && use widevine; then
ewarn "Widevine CDM plugin is not available for your architecture."
fi
}
src_unpack() {
:
}
src_install() {
dodir /
cd "${ED}" || die
unpacker
local CHROMIUM_BIN_HOME="opt/chromium-bin"
if ! use suid; then
rm "${CHROMIUM_BIN_HOME}/chrome-sandbox" || die
fi
# Remove SwiftShader OpenGL libraries
if ! use swiftshader; then
rm -r "${CHROMIUM_BIN_HOME}/swiftshader" || die
fi
# Clean unneeded languages
pushd "${CHROMIUM_BIN_HOME}/locales" > /dev/null || die
chromium_remove_language_paks
popd > /dev/null || die
# Install icons
local size
for size in 16 24 32 48 64 128 256 ; do
newicon -s ${size} "${CHROMIUM_BIN_HOME}/icons/hicolor/${size}x${size}/apps/chromium-browser.png" ${PN}-browser.png
done
rm -r "${CHROMIUM_BIN_HOME}/icons"
# Allow users to override command-line options, bug #357629.
insinto /etc/chromium-bin
newins "${FILESDIR}/chromium-bin.default" "default"
# Install desktop entry
domenu "${FILESDIR}/chromium-bin-browser-chromium.desktop"
# Install GNOME default application entry (bug #303100).
insinto /usr/share/gnome-control-center/default-apps
newins "${FILESDIR}/chromium-bin-browser.xml" chromium-bin-browser.xml
# Install manpage; bug #684550
doman "${FILESDIR}/chromium-bin-browser.1"
dosym chromium-bin-browser.1 /usr/share/man/man1/chromium-bin.1
pax-mark m "${CHROMIUM_BIN_HOME}/chrome"
# Symlink Widevine CDM
if use widevine && use amd64; then
dosym "../../usr/$(get_libdir)/chromium-browser/WidevineCdm" "${CHROMIUM_BIN_HOME}/WidevineCdm"
fi
# Install launcher
exeinto "${CHROMIUM_BIN_HOME}"
doexe "${FILESDIR}/chromium-bin-launcher.sh"
# It is important that we name the target "chromium-bin-browser",
# xdg-utils expect it; bug #355517.
dosym "../../${CHROMIUM_BIN_HOME}/chromium-bin-launcher.sh" /usr/bin/chromium-bin-browser
# keep the old symlink around for consistency
dosym "../../${CHROMIUM_BIN_HOME}/chromium-bin-launcher.sh" /usr/bin/chromium-bin
dosym "../../${CHROMIUM_BIN_HOME}/chromedriver" /usr/bin/chromedriver-bin
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
elog "For VA-API support you need to install x11-libs/libva with"
elog "USE=X and USE=drm enabled."
elog
elog "VA-API is disabled by default at runtime. Either enable it"
elog "by navigating to chrome://flags/#enable-accelerated-video-decode"
elog "inside Chromium or add --enable-accelerated-video-decode"
elog "to CHROMIUM_BIN_FLAGS in /etc/chromium-bin/default."
}

View File

@ -0,0 +1,221 @@
[Desktop Entry]
Version=1.0
Name=Chromium (Bin)
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[ar]=متصفح الشبكة
GenericName[bg]=Уеб браузър
GenericName[ca]=Navegador web
GenericName[cs]=WWW prohlížeč
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής ιστού
GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gu]=
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=
GenericName[kn]=
GenericName[ko]=
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Tīmekļa pārlūks
GenericName[ml]=
GenericName[mr]=
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador da Internet
GenericName[ro]=Navigator de Internet
GenericName[ru]=Веб-браузер
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[ta]= ி
GenericName[th]=
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[zh_CN]=
GenericName[zh_HK]=
GenericName[zh_TW]=
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
GenericName[bn]=
GenericName[fil]=Web Browser
GenericName[hr]=Web preglednik
GenericName[id]=Browser Web
GenericName[or]=
GenericName[sk]=WWW prehliadač
GenericName[sr]=Интернет прегледник
GenericName[te]= ి
GenericName[vi]=B duyt Web
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[ar]=الدخول إلى الإنترنت
Comment[bg]=Достъп до интернет
Comment[bn]=ি
Comment[ca]=Accedeix a Internet
Comment[cs]=Přístup k internetu
Comment[da]=Få adgang til internettet
Comment[de]=Internetzugriff
Comment[el]=Πρόσβαση στο Διαδίκτυο
Comment[en_GB]=Access the Internet
Comment[es]=Accede a Internet.
Comment[et]=Pääs Internetti
Comment[fi]=Käytä internetiä
Comment[fil]=I-access ang Internet
Comment[fr]=Accéder à Internet
Comment[gu]=
Comment[he]=גישה אל האינטרנט
Comment[hi]= ि
Comment[hr]=Pristup Internetu
Comment[hu]=Internetelérés
Comment[id]=Akses Internet
Comment[it]=Accesso a Internet
Comment[ja]=
Comment[kn]= ಿಿ
Comment[ko]=
Comment[lt]=Interneto prieiga
Comment[lv]=Piekļūt internetam
Comment[ml]=
Comment[mr]=
Comment[nb]=Gå til Internett
Comment[nl]=Verbinding maken met internet
Comment[or]=
Comment[pl]=Skorzystaj z internetu
Comment[pt]=Aceder à Internet
Comment[pt_BR]=Acessar a internet
Comment[ro]=Accesaţi Internetul
Comment[ru]=Доступ в Интернет
Comment[sk]=Prístup do siete Internet
Comment[sl]=Dostop do interneta
Comment[sr]=Приступите Интернету
Comment[sv]=Gå ut på Internet
Comment[ta]=
Comment[te]= ి
Comment[th]=
Comment[tr]=İnternet'e erişin
Comment[uk]=Доступ до Інтернету
Comment[vi]=Truy cp Internet
Comment[zh_CN]=访
Comment[zh_HK]=
Comment[zh_TW]=
Exec=chromium-bin-browser %U
StartupNotify=true
Terminal=false
Icon=chromium-bin-browser
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/ftp;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[am]=
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=
Name[kn]= ಿ
Name[ko]=
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Ca s Mi
Name[zh_CN]=
Name[zh_TW]=
Exec=chromium-bin-browser
[Desktop Action new-private-window]
Name=New Incognito Window
Name[ar]=نافذة جديدة للتصفح المتخفي
Name[bg]=Нов прозорец инкогнито
Name[bn]=
Name[ca]=Finestra d'incògnit nova
Name[cs]=Nové anonymní okno
Name[da]=Nyt inkognitovindue
Name[de]=Neues Inkognito-Fenster
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
Name[en_GB]=New Incognito window
Name[es]=Nueva ventana de incógnito
Name[et]=Uus inkognito aken
Name[fa]=پنجره جدید حالت ناشناس
Name[fi]=Uusi incognito-ikkuna
Name[fil]=Bagong Incognito window
Name[fr]=Nouvelle fenêtre de navigation privée
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi anoniman prozor
Name[hu]=Új Inkognitóablak
Name[id]=Jendela Penyamaran baru
Name[it]=Nuova finestra di navigazione in incognito
Name[iw]=חלון חדש לגלישה בסתר
Name[ja]=
Name[kn]= ಿ
Name[ko]= 릿
Name[lt]=Naujas inkognito langas
Name[lv]=Jauns inkognito režīma logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw incognitovenster
Name[no]=Nytt inkognitovindu
Name[pl]=Nowe okno incognito
Name[pt]=Nova janela de navegação anónima
Name[pt_BR]=Nova janela anônima
Name[ro]=Fereastră nouă incognito
Name[ru]=Новое окно в режиме инкогнито
Name[sk]=Nové okno inkognito
Name[sl]=Novo okno brez beleženja zgodovine
Name[sr]=Нови прозор за прегледање без архивирања
Name[sv]=Nytt inkognitofönster
Name[ta]=ி ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Gizli pencere
Name[uk]=Нове вікно в режимі анонімного перегляду
Name[vi]=Ca s n danh mi
Name[zh_CN]=
Name[zh_TW]=
Exec=chromium-bin-browser --incognito

View File

@ -0,0 +1,170 @@
.\" This file is processed to generate manpages in the
.\" build diretory.
.TH chromium-bin 1 "" "" "USER COMMANDS"
.SH NAME
chromium-bin \- the web browser from Google
.SH SYNOPSIS
.B chromium-bin
[\fIOPTION\fR] [\fIPATH\fR|\fIURL\fR]
.SH DESCRIPTION
See the Google Chrome help center for help on using the browser.
.IP
<https://support.google.com/chrome/>
.PP
This manpage only describes invocation, environment, and arguments.
.SH OPTIONS
Chromium has hundreds of undocumented command-line flags that are added
and removed at the whim of the developers. Here, we document relatively
stable flags.
.TP
\fB\-\-user\-data\-dir\fR=\fIDIR\fR
Specifies the directory that user data (your "profile") is kept in.
Defaults to
.I $HOME/.config/chromium-bin .
Separate instances of Chromium must use separate user data directories;
repeated invocations of chromium-bin will reuse an existing process for
a given user data directory.
.TP
\fB\-\-app\fR=\fIURL\fR
Runs
.I URL
in "app mode": with no browser toolbars.
.TP
\fB\-\-incognito\fR
Open in incognito mode.
.TP
\fB\-\-new-window\fR
If \fIPATH\fR or \fIURL\fR is given, open it in a new window.
.TP
\fB\-\-proxy-server\fR=\fIhost:port\fR
Specify the HTTP/SOCKS4/SOCKS5 proxy server to use for requests. This
overrides any environment variables or settings picked via the options dialog.
An individual proxy server is specified using the format:
[<proxy-scheme>://]<proxy-host>[:<proxy-port>]
Where <proxy-scheme> is the protocol of the proxy server, and is one of:
"http", "socks", "socks4", "socks5".
If the <proxy-scheme> is omitted, it defaults to "http". Also note that
"socks" is equivalent to "socks5".
Examples:
--proxy-server="foopy:99"
Use the HTTP proxy "foopy:99" to load all URLs.
--proxy-server="socks://foobar:1080"
Use the SOCKS v5 proxy "foobar:1080" to load all URLs.
--proxy-server="socks4://foobar:1080"
Use the SOCKS v4 proxy "foobar:1080" to load all URLs.
--proxy-server="socks5://foobar:66"
Use the SOCKS v5 proxy "foobar:66" to load all URLs.
It is also possible to specify a separate proxy server for different URL types,
by prefixing the proxy server specifier with a URL specifier:
Example:
--proxy-server="https=proxy1:80;http=socks4://baz:1080"
Load https://* URLs using the HTTP proxy "proxy1:80". And load http://*
URLs using the SOCKS v4 proxy "baz:1080".
.TP
\fB\-\-no-proxy-server\fR
Disables the proxy server. Overrides any environment variables or
settings picked via the options dialog.
.TP
\fB\-\-proxy-auto-detect\fR
Autodetect proxy configuration. Overrides any environment variables
or settings picked via the options dialog.
.TP
\fB\-\-proxy-pac-url\fR=\fIURL\fR
Specify proxy autoconfiguration URL. Overrides any environment variables
or settings picked via the options dialog.
.TP
\fB\-\-password-store\fR=<\fIbasic\fR|\fIgnome\fR|\fIkwallet\fR>
Set the password store to use. The default is to automatically detect based
on the desktop environment. \fIbasic\fR selects the built in, unencrypted
password store. \fIgnome\fR selects Gnome keyring. \fIkwallet\fR selects
(KDE) KWallet. (Note that KWallet may not work reliably outside KDE.)
.TP
\fB\-\-version\fR
Show version information.
.PP
As a GTK+ app, Chromium also obeys GTK+ command-line flags, such
as
.BR \-\-display .
See the GTK documentation for more:
.IP
<http://library.gnome.org/devel/gtk/stable/gtk-running.html>
<http://library.gnome.org/devel/gtk/stable/gtk-x11.html>
.SH ENVIRONMENT
Chromium obeys the following environment variables:
.TP
.B all_proxy
Shorthand for specifying all of
.B http_proxy, https_proxy, ftp_proxy
.TP
.B http_proxy, https_proxy, ftp_proxy
The proxy servers used for HTTP, HTTPS, and FTP.
.I Note:
because Gnome/KDE proxy settings may propagate into these variables
in some terminals, this variable is ignored (in preference for actual
system proxy settings) when running under Gnome or KDE. Use the
command-line flags to set these when you want to force their values.
.TP
.B auto_proxy
Specify proxy autoconfiguration. Defined and empty autodetects; otherwise,
it should be an autoconfig URL. But see above note about Gnome/KDE.
.TP
.B SOCKS_SERVER
SOCKS proxy server (defaults to SOCKS v4, also set
.B SOCKS_VERSION=5
to use SOCKS v5).
.TP
.B no_proxy
Comma separated list of hosts or patterns to bypass proxying.
.SH FILES
.TP
.I $HOME/.config/chromium-bin
Default directory for configuration data.
.TP
.I $HOME/.cache/chromium-bin
Default directory for cache data. (Why? See
<http://standards.freedesktop.org/basedir-spec/latest/> .)
.SH BUGS
Bug tracker:
.IP
http://code.google.com/p/chromium/issues/list
.PP
Be sure to do your search within "All Issues" before reporting bugs,
and be sure to pick the "Defect on Linux" template when filing a new one.
.SH AUTHOR
The Chromium team \- <http://www.chromium.org>

View File

@ -3,10 +3,10 @@
<default-apps>
<web-browsers>
<web-browser>
<name>Chromium</name>
<executable>chromium-browser</executable>
<command>chromium-browser %s</command>
<icon-name>chromium-browser</icon-name>
<name>Chromium (Bin)</name>
<executable>chromium-bin-browser</executable>
<command>chromium-bin-browser %s</command>
<icon-name>chromium-bin-browser</icon-name>
<run-in-terminal>false</run-in-terminal>
</web-browser>
</web-browsers>

View File

@ -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-bin/*; do
[[ -f ${f} ]] && source "${f}"
done
# Prefer user defined CHROMIUM_BIN_USER_FLAGS (from env) over system
# default CHROMIUM_BIN_FLAGS (from /etc/chromium-bin/default).
CHROMIUM_BIN_FLAGS=${CHROMIUM_BIN_USER_FLAGS:-"$CHROMIUM_BIN_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_BIN_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/chromium
${CHROMIUM_BIN_FLAGS}"
fi
# Set the .desktop file name
export CHROME_DESKTOP="chromium-bin-browser-chromium.desktop"
exec -a "chromium-bin-browser" "$PROGDIR/chrome" --extra-plugin-dir=/usr/lib/nsbrowser/plugins ${CHROMIUM_BIN_FLAGS} "$@"

View File

@ -0,0 +1,5 @@
# Default settings for chromium-bin. This file is sourced by /bin/bash from
# the chromium-bin launcher.
# Options to pass to chromium-bin.
#CHROMIUM_BIN_FLAGS=""

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<use>
<flag name="devtools">Install developer tools. Usually not needed for general use.</flag>
<flag name="suid">Build the SUID sandbox, which is only needed on CONFIG_USER_NS=n kernels</flag>
<flag name="swiftshader">Install SwiftShader OpenGL libaries.</flag>
<flag name="widevine">Unsupported closed-source DRM capability (required by Netflix VOD)</flag>
</use>
</pkgmetadata>

View File

@ -1,6 +0,0 @@
DIST chromium-93-patchset-4.tar.xz 4452 BLAKE2B a697175dceb03ae19175860c29f93b7f58bb212ba4932822c5c85dd8230a50b0cfefd3968ebb872d0b62fb4371b065fc51192f657c7f0fd5667bb3531344abed SHA512 836cbb1580f3559fc55e110b61120282cd2384da028d244fab5b9bdba475f3162e952bc45b7a827019ca0ebf92127dc0a89ba32c5718bded349c8ba25eecd207
DIST chromium-93.0.4554.0.tar.xz 1034478300 BLAKE2B dba3de63f59e226c4afc0794aadd27d5c1cf35ad270b83842f6179732dfcaf3505645bb119a1fec16675f6a3cfb57b7beebfbd40396075005a226848fdb97700 SHA512 d20a787ea024b3b282ea2e28d060b9b875dfa75dec9956238b62d36b4f54f93ecc8295a0b3d7426d34f7bdd22b991a580d48630d425a0a76beb7dbf8fa761a04
DIST chromium-93.0.4555.0.tar.xz 1034664960 BLAKE2B a4426656efe3b3517c89307cf5ed5610dee29266447b4954c9c91563dfcf384424bfd216a069ab2850562ac5a5cee55de65ec15a196b9c19c147418926f38848 SHA512 7601cd8feb5b6a0d1044d455f887ed0e06e28e4c5f717c740abc8ab94641f618203f63b55c3642b52e3ee0eccf8b6b9df9dec2dae524ae9a367403cad4ea5965
DIST chromium-93.0.4556.0.tar.xz 1034720588 BLAKE2B 7d310aa34f8fea7c3002cd9286f11270fa4bb4d4e46d08a3c57218da2808ed0cb01b5b5cac7623744f291fec7e5ec83aba73d0e2741cb4b0ca9bc6dc424352cb SHA512 21cda144df46693c87c3a8a84a042bfb72e75d0efca15bb66a63a69e4f74cf29fde0e81c7336a4c7434340658cd7926790e5b5667ea536b1257f8ebe49c5f43f
DIST chromium-93.0.4557.0.tar.xz 1034661560 BLAKE2B 01d1ff39b0df7cf746b1c4aee30dce7929e533605f85004eb96b0e32e6c2f6e83e0e5c2fec584c0818d4f3f2f45dbe4febf92ee7d18c9544891dc379e689b621 SHA512 04a1b02a88e5de92686407b22074319000ebd5b0b607e8e111b6ccaaced24b27fc9fa540d0ad61828ed0dfeb52c62677eece94ce50cbd1f61b0f2970766c5a6c
DIST highway-0.12.1.tar.gz 1480579 BLAKE2B 2889f96e33ae4411b14dae2229d86b0581f2044f50d6bb829a83417f0d67f0c9a8c03d552d09a985231ea11e88497fa405efcb85d158b5734b477bec5764a1eb SHA512 d14aeffc80739a5993177fb190ac03998d495004e9c54126c0e0b174c28be52a3f3fe581d8a08db67c34bd00045223d1850e7b384a2e7fe37a8150d7908004cb

View File

@ -1,960 +0,0 @@
# Copyright 2009-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8,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/"
PATCHSET="4"
PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz
arm64? ( https://github.com/google/highway/archive/refs/tags/0.12.1.tar.gz -> highway-0.12.1.tar.gz )"
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}
$(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="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
# remove unneeded/merged/updated patches
local UNUSED_PATCHES=(
"chromium-93-PendingMessage-constructor.patch"
"chromium-93-model_execution_manager-include.patch"
)
for patch in "${UNUSED_PATCHES[@]}"; do
rm "${WORKDIR}/patches/${patch}" || die
done
local PATCHES=(
"${WORKDIR}/patches"
"${FILESDIR}/chromium-92-EnumTable-crash.patch"
"${FILESDIR}/chromium-93-InkDropHost-crash.patch"
"${FILESDIR}/chromium-93-dawn-raw-string-literal.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-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 version
sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
# bundled highway library does not support arm64 with GCC
if use arm64; then
rm -r third_party/highway/src || die
ln -s "${WORKDIR}/highway-0.12.1" third_party/highway/src || die
fi
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/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/six
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
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"
# 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)
# highway/libjxl relies on this with arm64
if use arm64 && tc-is-gcc; then
append-cxxflags -flax-vector-conversions
fi
# 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
# 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
}

View File

@ -1,960 +0,0 @@
# Copyright 2009-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8,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/"
PATCHSET="4"
PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz
arm64? ( https://github.com/google/highway/archive/refs/tags/0.12.1.tar.gz -> highway-0.12.1.tar.gz )"
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}
$(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="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
# remove unneeded/merged/updated patches
local UNUSED_PATCHES=(
"chromium-93-PendingMessage-constructor.patch"
"chromium-93-model_execution_manager-include.patch"
)
for patch in "${UNUSED_PATCHES[@]}"; do
rm "${WORKDIR}/patches/${patch}" || die
done
local PATCHES=(
"${WORKDIR}/patches"
"${FILESDIR}/chromium-92-EnumTable-crash.patch"
"${FILESDIR}/chromium-93-InkDropHost-crash.patch"
"${FILESDIR}/chromium-93-dawn-raw-string-literal.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-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 version
sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
# bundled highway library does not support arm64 with GCC
if use arm64; then
rm -r third_party/highway/src || die
ln -s "${WORKDIR}/highway-0.12.1" third_party/highway/src || die
fi
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/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/six
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
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"
# 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)
# highway/libjxl relies on this with arm64
if use arm64 && tc-is-gcc; then
append-cxxflags -flax-vector-conversions
fi
# 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
# 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
}

View File

@ -1,960 +0,0 @@
# Copyright 2009-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8,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/"
PATCHSET="4"
PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz
arm64? ( https://github.com/google/highway/archive/refs/tags/0.12.1.tar.gz -> highway-0.12.1.tar.gz )"
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}
$(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="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
# remove unneeded/merged/updated patches
local UNUSED_PATCHES=(
"chromium-93-PendingMessage-constructor.patch"
"chromium-93-model_execution_manager-include.patch"
)
for patch in "${UNUSED_PATCHES[@]}"; do
rm "${WORKDIR}/patches/${patch}" || die
done
local PATCHES=(
"${WORKDIR}/patches"
"${FILESDIR}/chromium-92-EnumTable-crash.patch"
"${FILESDIR}/chromium-93-InkDropHost-crash.patch"
"${FILESDIR}/chromium-93-dawn-raw-string-literal.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-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 version
sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
# bundled highway library does not support arm64 with GCC
if use arm64; then
rm -r third_party/highway/src || die
ln -s "${WORKDIR}/highway-0.12.1" third_party/highway/src || die
fi
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/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/six
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
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"
# 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)
# highway/libjxl relies on this with arm64
if use arm64 && tc-is-gcc; then
append-cxxflags -flax-vector-conversions
fi
# 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
# 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
}

View File

@ -1,960 +0,0 @@
# Copyright 2009-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8,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/"
PATCHSET="4"
PATCHSET_NAME="chromium-$(ver_cut 1)-patchset-${PATCHSET}"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.xz
https://github.com/stha09/chromium-patches/releases/download/${PATCHSET_NAME}/${PATCHSET_NAME}.tar.xz
arm64? ( https://github.com/google/highway/archive/refs/tags/0.12.1.tar.gz -> highway-0.12.1.tar.gz )"
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}
$(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="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
# remove unneeded/merged/updated patches
local UNUSED_PATCHES=(
"chromium-93-PendingMessage-constructor.patch"
"chromium-93-model_execution_manager-include.patch"
)
for patch in "${UNUSED_PATCHES[@]}"; do
rm "${WORKDIR}/patches/${patch}" || die
done
local PATCHES=(
"${WORKDIR}/patches"
"${FILESDIR}/chromium-92-EnumTable-crash.patch"
"${FILESDIR}/chromium-93-InkDropHost-crash.patch"
"${FILESDIR}/chromium-93-dawn-raw-string-literal.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-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 version
sed -i -e "s|\(^script_executable = \).*|\1\"${EPYTHON}\"|g" .gn || die
# bundled highway library does not support arm64 with GCC
if use arm64; then
rm -r third_party/highway/src || die
ln -s "${WORKDIR}/highway-0.12.1" third_party/highway/src || die
fi
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/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/six
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
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"
# 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)
# highway/libjxl relies on this with arm64
if use arm64 && tc-is-gcc; then
append-cxxflags -flax-vector-conversions
fi
# 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
# 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
}

View File

@ -1,71 +0,0 @@
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 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
@@ -342,8 +340,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>();
}
@@ -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()))

View File

@ -1,25 +0,0 @@
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_;

View File

@ -1,48 +0,0 @@
From 857a3a2ea2647eea68caf9a7bc5d2b10857888e0 Mon Sep 17 00:00:00 2001
From: Corentin Wallez <cwallez@chromium.org>
Date: Fri, 25 Jun 2021 17:23:26 +0200
Subject: [PATCH] CopyTextureForBrowser(): Fix macro declaration
This is fixup for the
https://dawn-review.googlesource.com/c/dawn/+/54800
where the macre was not properly declared.
Clang doesn't claims about it, but GCC does.
The errors example for GCC 9.3.0:
/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp:40:5:
error: unterminated raw string
40 | R"(
| ^
/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp:46:6:
warning: missing terminating " character
46 | )"
| ^
Bug: chromium:1217153, chromium:819294
Change-Id: I47aa2dac37d9dfa7c02532caeb3341edd22fcd07
---
diff --git a/third_party/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp b/third_party/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp
index 8dbc9aa..46da2c8 100644
--- a/third_party/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp
+++ b/third_party/dawn/src/dawn_native/CopyTextureForBrowserHelper.cpp
@@ -36,14 +36,12 @@
// TODO(crbug.com/1221110): Remove this header macro by merging vertex and
// fragment shaders into one shader source. Now it blocks by
// crbug.com/dawn/947 and crbug.com/tint/915
-#define HEADER \
- R"(
- [[block]] struct Uniforms {
- u_scale: vec2<f32>;
- u_offset: vec2<f32>;
- u_alphaOp: u32;
- };
- )"
+#define HEADER \
+ " [[block]] struct Uniforms {\n" \
+ " u_scale: vec2<f32>;\n" \
+ " u_offset: vec2<f32>;\n" \
+ " u_alphaOp: u32;\n" \
+ " };\n"
static const char sCopyTextureForBrowserVertex[] = HEADER R"(
[[binding(0), group(0)]] var<uniform> uniforms : Uniforms;

View File

@ -1,141 +0,0 @@
diff -up chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc.fstatfix chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
--- chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc.fstatfix 2021-01-25 10:11:45.427436398 -0500
+++ chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-25 10:12:51.337699003 -0500
@@ -257,6 +257,18 @@ ResultExpr EvaluateSyscallImpl(int fs_de
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
+
if (SyscallSets::IsFileSystem(sysno) ||
SyscallSets::IsCurrentDirectory(sysno)) {
return Error(fs_denied_errno);
diff -up chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc.fstatfix chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
--- chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc.fstatfix 2021-01-25 10:13:10.179774081 -0500
+++ chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-25 10:16:18.790525746 -0500
@@ -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
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 -up chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h.fstatfix chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
--- chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h.fstatfix 2021-01-25 10:16:36.982598236 -0500
+++ chromium-88.0.4324.96/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-25 10:18:45.705111027 -0500
@@ -62,6 +62,10 @@ SANDBOX_EXPORT intptr_t SIGSYSPtraceFail
// 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 Crash
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 -up chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.cc.fstatfix chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.cc
--- chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.cc.fstatfix 2021-01-25 10:18:53.307141311 -0500
+++ chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.cc 2021-01-25 10:19:46.982355293 -0500
@@ -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 -up chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.h.fstatfix chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.h
--- chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.h.fstatfix 2021-01-25 10:19:53.115379741 -0500
+++ chromium-88.0.4324.96/sandbox/linux/services/syscall_wrappers.h 2021-01-25 10:20:45.485588421 -0500
@@ -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 sig
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_

View File

@ -1,48 +0,0 @@
#!/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} "$@"

View File

@ -1,48 +0,0 @@
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

View File

@ -1,5 +0,0 @@
# Default settings for chromium. This file is sourced by /bin/bash from
# the chromium launcher.
# Options to pass to chromium.
#CHROMIUM_FLAGS=""

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>chromium@gentoo.org</email>
<name>Chromium in Gentoo Project</name>
</maintainer>
<use>
<flag name="js-type-check">Enable JavaScript type-checking for Chrome's web technology-based UI. Requires Java.</flag>
<flag name="component-build">Split build into more shared libraries to speed up linking. Mostly intended for debugging and development, NOT RECOMMENDED for general use.</flag>
<flag name="headless">Build Ozone only with headless backend, NOT RECOMMENDED for general use.</flag>
<flag name="hangouts">Enable support for Google Hangouts features such as screen sharing</flag>
<flag name="official">Enable Official build instead of Developer build.</flag>
<flag name="pic">Disable optimized assembly code that is not PIC friendly</flag>
<flag name="proprietary-codecs">Enable codecs for patent-encumbered audio and video formats.</flag>
<flag name="screencast">Enable support for remote desktop and screen cast using <pkg>media-video/pipewire</pkg></flag>
<flag name="suid">Build the SUID sandbox, which is only needed on CONFIG_USER_NS=n kernels</flag>
<flag name="system-ffmpeg">Use system ffmpeg instead of the bundled one</flag>
<flag name="system-icu">Use system icu instead of the bundled one</flag>
<flag name="widevine">Unsupported closed-source DRM capability (required by Netflix VOD)</flag>
</use>
</pkgmetadata>