# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

# When you add an entry to the top of this file, add your name, the date, and
# an explanation of why something is getting masked. Please be extremely
# careful not to commit atoms that are not valid, as it can cause large-scale
# breakage, especially if it ends up in the daily snapshot.
#
## Example:
##
## # Dev E. Loper <developer@gentoo.org> (28 Jun 2012)
## # Masking foo USE flag until we can get the
## # foo stuff to work properly again (bug 12345)
## =media-video/mplayer-0.90_pre5 foo
## =media-video/mplayer-0.90_pre5-r1 foo
#

#--- END OF EXAMPLES ---

# Davide Pesavento <pesa@gentoo.org> (18 Oct 2015)
# Requires dev-python/PyQt4, which is not stable on sparc
media-sound/pulseaudio equalizer

# Pacho Ramos <pacho@gentoo.org> (02 Aug 2015)
# Missing keywords
dev-libs/protobuf python
dev-python/pyquery test
sys-fs/dmraid klibc

# Pacho Ramos <pacho@gentoo.org> (02 Jul 2014)
# Mask due Gnome3 not going to be stabilized on this arch
dev-util/geany-plugins devhelp markdown webkit
>=gnome-base/gnome-desktop-2.32.1-r2 license-docs
>=net-libs/webkit-gtk-2.4 geoloc
>=x11-libs/gtk+-3.12.2 cloudprint
x11-libs/gksu gnome
x11-wm/icewm gnome
