# Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 PYTHON_COMPAT=( python{2_7,3_{5,6,7}} ) CHROMIUM_LANGS=" am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW " inherit check-reqs chromium-2 desktop flag-o-matic ninja-utils pax-utils python-r1 readme.gentoo-r1 toolchain-funcs xdg-utils UGC_PV="${PV/21_pre/09-1}" UGC_P="${PN}-${UGC_PV}" UGC_WD="${WORKDIR}/${UGC_P}" DESCRIPTION="Modifications to Chromium for removing Google integration and enhancing privacy" HOMEPAGE="https://www.chromium.org/Home https://github.com/Eloston/ungoogled-chromium" SRC_URI=" https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${PV/_*}.tar.xz https://github.com/Eloston/${PN}/archive/${UGC_PV}.tar.gz -> ${UGC_P}.tar.gz https://dev.gentoo.org/~floppym/dist/chromium-webrtc-includes-r1.patch.xz " LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE=" +cfi closure-compile cups custom-cflags gnome gold jumbo-build kerberos libcxx +lld new-tcmalloc optimize-thinlto optimize-webui +pdf +proprietary-codecs pulseaudio selinux +suid +system-ffmpeg system-harfbuzz +system-icu +system-jsoncpp +system-libevent +system-libvpx +system-openh264 +system-openjpeg +tcmalloc +thinlto vaapi widevine " REQUIRED_USE=" ^^ ( gold lld ) || ( $(python_gen_useflags 'python3*') ) || ( $(python_gen_useflags 'python2*') ) cfi? ( thinlto ) libcxx? ( new-tcmalloc ) new-tcmalloc? ( tcmalloc ) optimize-thinlto? ( thinlto ) system-openjpeg? ( pdf ) x86? ( !lld !thinlto !widevine ) " RESTRICT=" !system-ffmpeg? ( proprietary-codecs? ( bindist ) ) !system-openh264? ( bindist ) " CDEPEND=" >=app-accessibility/at-spi2-atk-2.26:2 app-arch/snappy:= >=dev-libs/atk-2.26 dev-libs/expat:= dev-libs/glib:2 >=dev-libs/libxml2-2.9.4-r3:=[icu] dev-libs/libxslt:= dev-libs/nspr:= >=dev-libs/nss-3.26:= >=dev-libs/re2-0.2018.10.01:= >=media-libs/alsa-lib-1.0.19:= media-libs/flac:= media-libs/fontconfig:= media-libs/libjpeg-turbo:= media-libs/libpng:= >=media-libs/libwebp-0.4.0:= sys-apps/dbus:= sys-apps/pciutils:= sys-libs/zlib:=[minizip] virtual/udev x11-libs/cairo:= x11-libs/gdk-pixbuf:2 x11-libs/gtk+:3[X] x11-libs/libX11:= x11-libs/libXcomposite:= x11-libs/libXcursor:= x11-libs/libXdamage:= x11-libs/libXext:= x11-libs/libXfixes:= >=x11-libs/libXi-1.6.0:= x11-libs/libXrandr:= x11-libs/libXrender:= x11-libs/libXScrnSaver:= x11-libs/libXtst:= x11-libs/pango:= closure-compile? ( virtual/jre:* ) cups? ( >=net-print/cups-1.3.11:= ) kerberos? ( virtual/krb5 ) pdf? ( media-libs/lcms:= ) pulseaudio? ( media-sound/pulseaudio:= ) system-ffmpeg? ( >=media-video/ffmpeg-3.4.5:= || ( media-video/ffmpeg[-samba] >=net-fs/samba-4.5.16[-debug(-)] ) media-libs/opus:= ) system-harfbuzz? ( media-libs/freetype:= >=media-libs/harfbuzz-2.0.0:0=[icu(-)] ) system-icu? ( >=dev-libs/icu-58.2:= ) system-jsoncpp? ( dev-libs/jsoncpp ) system-libevent? ( dev-libs/libevent ) system-libvpx? ( >=media-libs/libvpx-1.7.0:=[postproc,svc] ) system-openh264? ( >=media-libs/openh264-1.6.0:= ) system-openjpeg? ( media-libs/openjpeg:2= ) vaapi? ( x11-libs/libva:= ) " RDEPEND="${CDEPEND} virtual/opengl virtual/ttf-fonts x11-misc/xdg-utils selinux? ( sec-policy/selinux-chromium ) widevine? ( !x86? ( www-plugins/chrome-binary-plugins[widevine(-)] ) ) !www-client/chromium !www-client/ungoogled-chromium-bin " # dev-vcs/git (Bug #593476) # sys-apps/sandbox - https://crbug.com/586444 DEPEND="${CDEPEND}" BDEPEND=" app-arch/bzip2:= >=app-arch/gzip-1.7 dev-lang/perl dev-lang/yasm dev-util/gn >=dev-util/gperf-3.0.3 >=dev-util/ninja-1.7.2 dev-vcs/git sys-apps/hwids[usb(+)] >=sys-devel/bison-2.4.3 >=sys-devel/clang-7.0.0 sys-devel/flex >=sys-devel/llvm-7.0.0[gold?] virtual/libusb:1 virtual/pkgconfig cfi? ( >=sys-devel/clang-runtime-7.0.0[sanitize] ) libcxx? ( sys-libs/libcxx sys-libs/libcxxabi ) lld? ( >=sys-devel/lld-7.0.0 ) optimize-webui? ( >=net-libs/nodejs-7.6.0[inspector] ) " # shellcheck disable=SC2086 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/noto-emoji - media-fonts/ja-ipafonts - media-fonts/takao-fonts - media-fonts/wqy-microhei - media-fonts/wqy-zenhei To fix broken icons on the Downloads page, you should install an icon theme that covers the appropriate MIME types, and configure this as your GTK+ icon theme. " PATCHES=( "${FILESDIR}/${PN}-compiler-r5.patch" "${FILESDIR}/${PN}-gold-r2.patch" # Extra patches taken from openSUSE "${FILESDIR}/${PN}-libusb-interrupt-event-handler-r0.patch" "${FILESDIR}/${PN}-system-libusb-r0.patch" ) S="${WORKDIR}/chromium-${PV/_*}" pre_build_checks() { # Check build requirements (Bug #541816) CHECKREQS_MEMORY="3G" CHECKREQS_DISK_BUILD="5G" if use custom-cflags && ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then CHECKREQS_DISK_BUILD="25G" fi check-reqs_pkg_setup } pkg_pretend() { if use custom-cflags && [[ "${MERGE_TYPE}" != binary ]]; then ewarn ewarn "USE=custom-cflags bypass strip-flags; you are on your own." ewarn "Expect build failures. Don't file bugs using that unsupported USE flag!" ewarn fi pre_build_checks } pkg_setup() { pre_build_checks chromium_suid_sandbox_check_kernel_config } src_prepare() { # Calling this here supports resumption via FEATURES=keepwork python_setup 'python3*' default pushd third_party/webrtc >/dev/null || die eapply "${WORKDIR}"/chromium-webrtc-includes-r1.patch popd >/dev/null || die if use optimize-webui; then 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 fi # Hack for libusb stuff (taken from openSUSE) rm third_party/libusb/src/libusb/libusb.h || die cp -a "${EPREFIX}/usr/include/libusb-1.0/libusb.h" \ third_party/libusb/src/libusb/libusb.h || die # From here we adapt ungoogled-chromium's patches to our needs local ugc_cli="${UGC_WD}/run_buildkit_cli.py" local ugc_config="${UGC_WD}/config_bundles/linux_rooted" local ugc_common_dir="${UGC_WD}/config_bundles/common" local ugc_rooted_dir="${UGC_WD}/config_bundles/linux_rooted" local ugc_unneeded=( # ARM related patches common:crashpad common:gcc_skcms_ice common:skia-aarch64-buildfix # GCC specific fixes/warnings common:alignof common:as-needed common:enum-compare common:explicit-constructor common:initialization common:int-in-bool-context common:member-assignment common:multichar common:null-destination common:printf rooted:attribute # GN bootstrap common:parallel rooted:libcxx ) local ugc_use=( system-icu:convertutf system-icu:icu system-jsoncpp:jsoncpp system-libevent:event system-libvpx:vpx vaapi:enable-vaapi vaapi:chromium-vaapi-relax-the-version-check-for-VA-API vaapi:chromium-enable-mojo-video-decoders-by-default vaapi:chromium-vaapi-fix-the-VA_CHECK_VERSION ) local ugc_p ugc_dir for p in "${ugc_unneeded[@]}"; do ugc_p="${p#*:}" ugc_dir="ugc_${p%:*}_dir" einfo "Removing ${ugc_p}.patch" sed -i "/${ugc_p}.patch/d" "${!ugc_dir}/patch_order.list" || die done for p in "${ugc_use[@]}"; do if ! use "${p%:*}"; then ugc_p="${p#*:}" einfo "Removing ${ugc_p}.patch" sed -i "/${ugc_p}.patch/d" "${ugc_rooted_dir}/patch_order.list" || die fi done if use system-ffmpeg && has_version ' /dev/null || die chromium_remove_language_paks popd > /dev/null || die insinto "${CHROMIUM_HOME}" doins out/Release/*.bin doins out/Release/*.pak doins out/Release/*.so use system-icu || doins out/Release/icudtl.dat doins -r out/Release/locales doins -r out/Release/resources # Install icons and desktop entry local branding size for size in 16 22 24 32 48 64 128 256; do case ${size} in 16|32) branding="chrome/app/theme/default_100_percent/chromium" ;; *) branding="chrome/app/theme/chromium" ;; esac newicon -s ${size} "${branding}/product_logo_${size}.png" chromium-browser.png done local mime_types="text/html;text/xml;application/xhtml+xml;" mime_types+="x-scheme-handler/http;x-scheme-handler/https;" # Bug #360797 mime_types+="x-scheme-handler/ftp;" # Bug #412185 mime_types+="x-scheme-handler/mailto;x-scheme-handler/webcal;" # Bug #416393 make_desktop_entry \ chromium-browser \ "Chromium" \ chromium-browser \ "Network;WebBrowser" \ "MimeType=${mime_types}\\nStartupWMClass=chromium-browser" sed -i "/^Exec/s/$/ %U/" "${ED}"/usr/share/applications/*.desktop || die # Install GNOME default application entry (Bug #303100) insinto /usr/share/gnome-control-center/default-apps doins "${FILESDIR}/chromium-browser.xml" readme.gentoo_create_doc } usetf() { usex "$1" true false } update_caches() { if type gtk-update-icon-cache &>/dev/null; then ebegin "Updating GTK icon cache" gtk-update-icon-cache "${EROOT}/usr/share/icons/hicolor" eend $? || die fi xdg_desktop_database_update } pkg_postrm() { update_caches } pkg_postinst() { update_caches readme.gentoo_print_elog }