# 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 don't need integration with cvs, or subversion in git, so we can
# disable these for faster builds.
dev-vcs/git cvs subversion

# 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/gcc hardened
cross-arm-none-eabi/newlib hardened
cross-armv7m-cros-eabi/gcc hardened
cross-armv7m-cros-eabi/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-2_9 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
