# 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 ---

# Pacho Ramos <pacho@gentoo.org> (02 Ago 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
