# 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> (08 Mar 2015)
# mayavi is broken, bug #500104
dev-python/apptools test

# Michał Górny <mgorny@gentoo.org> (21 Feb 2015)
# The external QCA plugins are not stable on this arch. Since
# this is only a temporary measure and nothing depends on them,
# just masking them until the new version goes stable.
<app-crypt/qca-2.1 pkcs11

# Tim Harder <radhermit@gentoo.org> (11 Oct 2014)
# Masked since skype isn't stable
net-im/bitlbee skype

# Andreas K. Huettel <dilfridge@gentoo.org> (29 Jun 2014)
# Not yet stabilized dependencies blocking sec bug 514886
# we need to repeat this here likely because of the use.mask entry
app-office/libreoffice firebird

# Michał Górny <mgorny@gentoo.org> (30 Mar 2014)
# Don't apply stable masks to python-exec since we're forcing every
# impl there anyway. Please keep this in sync with use.stable.mask.
dev-lang/python-exec -python_targets_pypy
dev-lang/python-exec -python_single_target_pypy
dev-lang/python-exec -python_targets_pypy3
dev-lang/python-exec -python_single_target_pypy3

# Tom Wijsman <TomWij@gentoo.org> (06 Feb 2014)
# [QA] Masked jit USE flag on www-apps/cgit as dev-lang/luajit is not stable.
www-apps/cgit jit

# Ben de Groot <yngwin@gentoo.org (19 Apr 2015)
# >=opus-1.0.3 is still not stable (bug 500868)
media-video/vlc opus
