# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/mips/package.use.mask,v 1.57 2013/09/02 07:02:22 pinkbyte Exp $

# Sergey Popov <pinkbyte@gentoo.org> (02 Sep 2013)
# Not tested
media-libs/leptonica	webp
app-text/tesseract	webp

# Pacho Ramos <pacho@gentoo.org> (01 Sep 2013)
# CONFIG_AUDITSYSCALL=y is not implemented, bug #438368
sys-apps/systemd pam
sys-auth/consolekit pam

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (28 May 2013)
# depends on sys-devel/llvm[video_cards_radeon]
media-libs/mesa r600-llvm-compiler

# Kacper Kowalik <xarthisius@gentoo.org> (20 May 2011)
# depends on dev-libs/dmalloc which is not keyworded
net-nds/ypbind debug

# Richard Brown <rbrown@gentoo.org> (21 Jan 2008)
# Needs dev-ruby/builder, which isn't keyworded
dev-ruby/rubygems server

# Wolfram Schlich <wschlich@gentoo.org> (20 Nov 2007)
# dependency can't be fulfilled at the moment
net-im/mcabber otr

# Jim Ramsay <lack@gentoo.org> (7 Sep 2007)
# app-admin/gkrellm may pull in hddtemp, which is not yet available here
app-admin/gkrellm hddtemp

# Christian Heim <phreak@gentoo.org> (07 Jul 2007)
# virtual/mysql-5 not keyworded yet, still apr-util has the mips keyword.
dev-libs/apr-util mysql

# Stuart Longland <redhatter@gentoo.org> (07 Sep 2007)
# mplayer not tested with these flags yet.  I may remove these slowly as I test
# more functions of mplayer.
media-video/mplayer bidi bl cddb cdio cdparanoia cpudetection dga dv dvb enca joystick live mad openal pnm pvr radio rar rtc svga tga xanim xinerama zoran

# Gilles Dartiguelongue <eva@gentoo.org> (19 Oct 2007)
# gdm depends on zenity which is not keyworded
>=gnome-base/gdm-2.20 remote

# Steve Dibb <beandog@gentoo.org> (01 Nov 2007)
# needs media-libs/ladspa-sdk keyworded
media-video/mplayer ladspa

# Richard Brown <rbrown@gentoo.org> (23 Dec 2007)
# app-xemacs/ruby-modes is not keyworded on this arch
dev-lang/ruby xemacs

# Sebastian Pipping <sping@gentoo.org> (27 Jan 2010)
# dev-vcs/bzr is not keyworded on this arch
# dev-vcs/darcs is not keyworded on this arch
app-portage/layman bazaar
app-portage/layman darcs

# deps missing keywords
games-strategy/freeciv auth ggz

# Mart Raudsepp <leio@gentoo.org> (27 Sept 2010)
# Extra functionality that has external unkeyworded dependencies
# and is not tested yet
net-fs/samba ads cluster debug

# Matt Turner <mattst88@gentoo.org> (06 Dec 2010)
# dev-db/tokyocabinet not keyworded
mail-client/mutt tokyocabinet

# Matt Turner <mattst88@gentoo.org> (26 Dec 2010)
# dev-lang/spidermonkey not keyworded
www-client/elinks javascript

# Matt Turner <mattst88@gentoo.org> (26 Dec 2010)
# media-gfx/ufraw not keyworded
media-gfx/imagemagick raw

# Matt Turner <mattst88@gentoo.org> (12 Jun 2011)
# dev-python/mysql-python not keyworded
dev-vcs/mercurial bugzilla

# Matt Turner <mattst88@gentoo.org> (09 Feb 2012)
# dev-vcs/git[cgi] requires app-text/highlight which requires boost
dev-vcs/git cgi

# Matt Turner <mattst88@gentoo.org> (09 Feb 2012)
# mips only use flags
>=sci-libs/fftw-3 -paired-single -zbus
