# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/prefix/package.use.mask,v 1.18 2012/01/14 11:03:44 xarthisius Exp $

# Kacper Kowalik <xarthisius@gentoo.org> (14 Jan 2012)
# sci-libs/mkl don't have prefix keywords
dev-python/numexpr mkl

# Fabian Groffen <grobian@gentoo.org> (08 Dec 2011)
# USE=vanilla produces a broken compiler for Prefix.  Only use this flag
# when you're absolutely sure what you're doing.  Do NOT report bugs
# about failing packages when using a vanilla compiler!
sys-devel/gcc vanilla

# Fabian Groffen <grobian@gentoo.org> (23 Oct 2010)
# IPC relies on pipes, selects, polls, and more stuff that Python is
# very bad with, that really causes way more issues than it is worth to
# have some boundary bugs solved and more robust subshell die support
sys-apps/portage ipc

# Rafael Goncalves Martins <rafaelmartins@gentoo.org> (29 Sep 2010)
# dev-libs/judy without prefix keywords
# (amd64-linux and x86-linux)
sci-electronics/gtkwave judy

# Michael Haubenwallner <haubi@gentoo.org> (17 Sep 2010)
# sys-apps/keyutils is a linux only package
app-crypt/mit-krb5 keyutils

# Jonathan Callen <abcd@gentoo.org> (22 Feb 2010)
# ppp is not available in Prefix
kde-base/kdenetwork-meta ppp

# Christian Faulhammer <fauli@gentoo.org> (09 Jan 2010)
# hesiod and m17n-lib are not available in Prefix
app-editors/emacs-vcs hesiod m17n-lib
app-editors/emacs hesiod m17n-lib

# Michael Haubenwallner <haubi@gentoo.org> (30 Sep 2009)
# Most prefix platforms do/can not have an uuid implementation (#230981).
x11-libs/libSM uuid

# Jeremy Olexa <darkside@gentoo.org> (30 Sep 2009)
# berkdb has hardcoded paths all over, breaks on linux at least. Use flag
# disappearing in next bump: prefix can be early and force it to be not used to
# save headaches.
# NOTE to prefix devs: if it needs to not be a global mask, talk to me because
# it currently causes failures on linux. It can be made a "less global" mask.
dev-lang/python berkdb

# Jeremy Olexa <darkside@gentoo.org> (02 Sep 2009)
# these don't work, because they rely on the host having sufficient xorg-server
# version.
xfce-base/xfce4-meta session

# Jeremy Olexa <darkside@gentoo.org> (13 Feb 2009)
# Can't make USE=ssl to work, bad build system. bug #256699
dev-lang/pike ssl

# Elias Pipping <pipping@gentoo.org> (18 Nov 2007)
# feynmf fails to build documentation
dev-tex/feynmf doc

# Elias Pipping <pipping@gentoo.org> (15 Nov 2007)
# pkg_postinst tries to create/delete a user, fails
dev-libs/cyrus-sasl berkdb gdbm
