# 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

# 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-nds32le-cros-elf/nds32-gcc hardened
cross-nds32le-cros-elf/gcc hardened
cross-nds32le-cros-elf/nds32-newlib hardened
cross-nds32le-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

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