# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/default/linux/package.use.mask,v 1.16 2009/08/20 18:55:43 flameeyes Exp $

sys-devel/gcc hardened
sys-libs/glibc hardened

# If building dpkg with nls it pulls in a bunch of packages, including po4a
# which will hang if output is redirected. This was stalling our buildbots.
app-arch/dpkg nls

# We use asynchronous dns resolution instead of threaded dns resolution.
net-misc/curl threads

# Han Shen <shenhan@chromium.org> (16 Mar 2012)
#
# Disable hardened glibc for arm - current glibc for arm port has a bug in
# setjmp.S and __longjmp.S, this needs to be fixed before arm glibc could be
# hardened.
cross-armv7a-cros-linux-gnueabi/glibc hardened
cross-armv7a-cros-linux-gnueabihf/glibc hardened

# Han Shen <shenhan@chromium.org> (21 Mar 2012)
#
# Disable hardened for bare-metal toolchains.
cross-arm-none-eabi/binutils hardened
cross-arm-none-eabi/gcc hardened
cross-arm-none-eabi/newlib hardened
cross-armv7m-cros-eabi/binutils hardened
cross-armv7m-cros-eabi/gcc hardened
cross-armv7m-cros-eabi/newlib hardened
cross-riscv64-cros-elf/binutils hardened
cross-riscv64-cros-elf/gcc hardened
cross-riscv64-cros-elf/newlib hardened

# yasm-python is blocked until we upgrade to python 2.7.
dev-lang/yasm python

# We don't care about pam support in developer-only tool.
app-misc/screen pam

# We split out the protobuf python bindings into the protobuf-python package.
dev-libs/protobuf python

# We don't care about python bindings with the module tools.
sys-apps/kmod python

# We don't care about the ssl lib.
dev-libs/libevent ssl

# Don't inject CACert/SPI certs into NSS. They are not trusted CAs
# Don't include the NSS PEM parsing routines. They are experimental and not
#   yet upstreamed.
dev-libs/nss cacert nss-pem
app-crypt/nss cacert nss-pem

# librsvg does not really depend on GTK (which is prohibited in chromiumos).
gnome-base/librsvg gtk

# USE=bindist only controls elliptic curve support now, and we want it.
dev-libs/openssl bindist
# openssh tracks USE=bindist only because openssl does.
net-misc/openssh bindist
# We want WPA3 features, which currently aren't available with openssl's
# USE=bindist.
net-wireless/wpa_supplicant-cros bindist

# Resolve circular dependency between libcap and pam.
# http://crbug.com/508630 (see #8)
sys-libs/libcap pam

# We don't care about smartcard support in GPG, and USB is only used for that.
app-crypt/gnupg smartcard usb

# Pulls in packages we don't have or want, like app-crypt/p11-kit. But we may
# enable 'smartcard' for the sake of other packages.
net-libs/glib-networking smartcard
