# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/eapi-5-files/package.use.stable.mask,v 1.31 2013/11/17 09:03:01 pacho Exp $

# This file requires eapi 5 or later. New entries go on top.
# Please use the same syntax as in package.use.mask

# Pacho Ramos <pacho@gentoo.org> (17 Nov 2013)
# Still needs gnutls-3
>=net-nntp/pan-0.139 ssl

# Michał Górny <mgorny@gentoo.org> (16 Nov 2013)
# 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_python3_3
dev-lang/python-exec -python_single_target_python3_3
dev-python/python-exec -python_targets_python3_3
dev-python/python-exec -python_single_target_python3_3

# Sergey Popov <pinkbyte@gentoo.org> (28 Oct 2013)
# sys-cluster/cman is still in ~arch.
sys-cluster/pacemaker cman

# Alexandre Rostovtsev <tetromino@gentoo.org> (02 Oct 2013)
# We want to stabilize zukitwo before gnome-shell
x11-themes/zukitwo gnome-shell

# Mike Gilbert <floppym@gentoo.org> (21 Sep 2013)
# sys-fs/zfs isn't going stable anytime soon.
sys-boot/grub libzfs

# Doug Goldstein <cardoe@gentoo.org> (12 Sep 2013)
# Waiting on glusterfs maintainers in bug #484016
app-emulation/qemu glusterfs

# Pacho Ramos <pacho@gentoo.org> (07 Sep 2013)
# It requires newer emul sets to be stabilized (#477182#c5)
~sci-libs/fftw-3.3.3 abi_x86_32

# Agostino Sarubbo <ago@gentoo.org> (31 Aug 2013)
# Clang is not stable
app-portage/eix clang

# Samuli Suominen <ssuominen@gentoo.org> (01 Aug 2013)
# The dependencies for these flags are still in ~arch.
sys-fs/lvm2 clvm cman

# Chris Reffett <creffett@gentoo.org> (23 Nov 2012)
# CMake's PHP module can't find our install location, so
# libkolab(xml) fails with the php flag enabled, bug #430858.
net-libs/libkolab php
net-libs/libkolabxml php

# Samuli Suominen <ssuominen@gentoo.org> (12 Apr 2013)
# Waiting for >=app-cdr/brasero-3 stabilization
app-pda/gtkpod cdr

# Pacho Ramos <pacho@gentoo.org> (01 Apr 2013)
# Needed to stabilize anjuta-3.6
=dev-util/devhelp-3.6.1-r1 gedit

# Andreas K. Huettel <dilfridge@gentoo.org> (28 Mar 2013)
# No stable sci-chemistry/avogadro yet but we want kde-4.10 to go stable
>=kde-base/kalzium-4.10.0 editor

# Sergey Popov <pinkbyte@gentoo.org> (08 Jun 2013)
# Mask unstable dependencies in leechcraft metapackage
app-leechcraft/leechcraft-meta unstable
