# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/arm/package.use.mask,v 1.180 2013/11/10 15:47:03 chithanh Exp $

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (10 Nov 2013)
# <sys-devel/llvm-3.2 is not keyworded
=media-libs/mesa-7.10* llvm

# Pacho Ramos <pacho@gentoo.org> (31 Oct 2013)
# Missing keywords, bug #478254
gnome-base/gnome classic

# Benda Xu <heroxbd@gentoo.org> (31 Oct 2013)
# Missing keywords from dev-ml/lablgtk, bug #487722
net-p2p/mldonkey gtk guionly

# Tom Wijsman <TomWij@gentoo.org> (16 Oct 2013)
# Mask luajit on ~media-video/mpv-0.2.0 because it only has amd64 x86 keywords. See bug #488318.
>=media-video/mpv-0.2.0 luajit

# Pacho Ramos <pacho@gentoo.org> (22 Sep 2013)
# Missing keywords, bug #484734
media-sound/rhythmbox visualizer

# Markus Meier <maekke@gentoo.org> (15 Sep 2013)
# Unkeyworded deps, bug #481462
dev-python/ipython nbconvert

# Johannes Huber <johu@gentoo.org> (15 Sep 2013)
# Depends on kde-misc/networkmanagement, not keyworded yet.
kde-base/solid-runtime networkmanager

# Sergey Popov <pinkbyte@gentoo.org> (06 Sep 2013)
# sci-libs/hdf does not build properly on arm
dev-perl/PDL	hdf

# Michael Weber <xmw@gentoo.org> (23 Aug 2013)
# Unkeyworded deps
media-gfx/fim graphicsmagick svg

# Markus Meier <maekke@gentoo.org> (04 Aug 2013)
# Unkeyworded deps, bug #474026
app-admin/conky lua-cairo lua-imlib xmms2 audacious moc

# Sergey Popov <pinkbyte@gentoo.org> (30 Jul 2013)
# Not tested
media-libs/devil allegro nvtt

# Agostino Sarubbo <ago@gentoo.org> (23 Jul 2013)
# java is not stable on arm
dev-libs/protobuf java

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (13 Jul 2013)
# requires net-misc/freerdp which is not keyworded on arm
dev-libs/weston rdp

# Patrick Lauer <patrick@gentoo.org> (17 June 2013)
# Fix per-arch mask of phonon[zeitgeist] #460140
media-libs/phonon zeitgeist

# Patrick Lauer <patrick@gentoo.org> (31 May 2013)
# no stable jdk+java-config
net-misc/tightvnc java

# 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

# Andreas K. Huettel <dilfridge@gentoo.org> (27 May 2013)
# Firmware loader not keyworded yet
sci-libs/linux-gpib firmware

# Christian Ruppert <idl0r@gentoo.org> (13 May 2013)
# Mask nic3com re bug 454024
sys-apps/flashrom nic3com

# Markus Meier <maekke@gentoo.org> (11 May 2013)
# unkeyworded deps for x11-wm/enlightenment
x11-wm/enlightenment emotion

# Markus Meier <maekke@gentoo.org> (10 May 2013)
# unkeyworded deps for dev-python/ipython
dev-python/ipython mongodb

# Markus Meier <maekke@gentoo.org> (09 May 2013)
# unkeyworded deps for x11-misc/lightdm
x11-misc/lightdm razor

# Agostino Sarubbo <ago@gentoo.org> (05 May 2013)
# dev-util/google-perftools is not keyworded for arm
>=dev-libs/libmemcached-0.50 tcmalloc

# Christoph Junghans <ottxor@gentoo.org> (29 Apr 2013)
# MKL not available on this arch
media-gfx/povray mkl

# Benda Xu <heroxbd@gentoo.org> (1 Apr 2013)
# dev-ml/lablgtk not keyworded
net-misc/unison gtk

# Julian Ospald <hasufell@gentoo.org> (31 Mar 2013)
# depends on mono
>=net-irc/hexchat-2.9.4-r1 theme-manager

# Agostino Sarubbo <ago@gentoo.org> (18 Mar 2013)
# Mask java because of bug #461108 comment #7
dev-libs/xapian-bindings java

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (20 Feb 2013)
# Mask flags of calligra and dependencies due to lack of keywords
app-office/calligra openexr postgres spacenav
media-gfx/pstoedit emf

# Eray Aslan <eras@gentoo.org> (16 Feb 2013)
# Mask further java flag
=dev-libs/cyrus-sasl-2.1.25-r4 java
=dev-libs/cyrus-sasl-2.1.26-r3 java
=dev-libs/cyrus-sasl-2.1.23-r7 java

# Rick Farina <zerochaos@gentoo.org> (05 Feb 2013)
# masking all stable packages with java use flag
dev-util/oprofile java
=dev-db/qdbm-1.8.78-r1 java
=dev-libs/beecrypt-4.2.1 java
=dev-libs/cyrus-sasl-2.1.23-r6 java
=dev-libs/cyrus-sasl-2.1.25-r3 java
=dev-libs/xapian-bindings-1.2.12 java
=dev-libs/xapian-bindings-1.2.12-r1 java
dev-tex/tex4ht java
dev-vcs/subversion java
=media-gfx/graphviz-2.26.3-r3 java
=media-gfx/graphviz-2.26.3-r4 java
=media-libs/libcaca-0.99_beta17 java
media-libs/libjpeg-turbo java
net-dns/libidn java
net-misc/tigervnc java
net-print/cups java
=sys-devel/gettext-0.18.1.1-r1 java
=sys-devel/gettext-0.18.1.1-r3 java
=sys-devel/gettext-0.18.2 java
=sys-libs/db-1.85-r3 java
=sys-libs/db-3.2.9_p2 java
=sys-libs/db-4.2.52_p5-r1 java
=sys-libs/db-4.3.29_p1-r1 java
=sys-libs/db-4.5.20_p2 java
=sys-libs/db-4.5.20_p2-r1 java
=sys-libs/db-4.6.21_p4 java
=sys-libs/db-4.7.25_p4 java
=sys-libs/db-4.8.30 java
=www-client/seamonkey-2.0.14-r1 java

# Michał Górny <mgorny@gentoo.org> (01 Feb 2013)
# virtual/cblas not keyworded on arm, bug #455050.
dev-python/numpy lapack

# Alexandre Rostovtsev <tetromino@gentoo.org> (22 Jan 2013)
# remove mask if/when media-gfx/argyllcms is keywored here.
x11-misc/colord extra-print-profiles

# Alexandre Rostovtsev <tetromino@gentoo.org> (31 Dec 2012)
# requires app-office/unoconv, which requires virtual/ooo, which is not
# keyworded here. Remove mask if this situation changes.
gnome-extra/sushi office

# Alexandre Rostovtsev <tetromino@gentoo.org> (30 Dec 2012)
# sys-apps/systemd works on this arch (masked in base)
sys-kernel/dracut -dracut_modules_systemd

# Alexandre Rostovtsev <tetromino@gentoo.org> (30 Dec 2012)
# requires dev-util/bustle, which is written in haskell
# remove mask if/when dev-lang/ghc is keywoded for arm
dev-util/dbus-test-runner test

# Alexandre Rostovtsev <tetromino@gentoo.org> (27 Dec 2012)
# remove mask when app-text/yelp-tools is keyworded here
>=gnome-extra/zenity-3.6 test

# Alexandre Rostovtsev <tetromino@gentoo.org> (27 Dec 2012)
# remove mask when >=app-editors/gedit-3.6 is keyworded here
dev-util/devhelp gedit

# Alexandre Rostovtsev <tetromino@gentoo.org> (27 Dec 2012)
# remove mask when app-crypt/libsecret is keyworded here
>=gnome-base/gvfs-1.14 gnome-keyring

# Markus Meier <maekke@gentoo.org> (25 Dez 2012)
# unkeyworded deps for app-accessibility/speech-dispatcher
app-accessibility/speech-dispatcher espeak flite

# Markus Meier <maekke@gentoo.org> (23 Dec 2012)
# mask kde-base/* flags due to unkeyworded dependencies
kde-base/kalzium editor solver
kde-base/krdc rdesktop
kde-base/kopete jingle msn sms
kde-base/kdeplasma-addons fcitx oauth qwt scim
kde-base/okular ebook chm
kde-base/kstars indi
kde-base/kdeutils-meta floppy
kde-base/kdenetwork-meta ppp
kde-base/kdesdk-misc extras
kde-base/smokeqt qscintilla qwt
kde-base/qtruby qscintilla qwt
kde-base/perlqt qscintilla qwt

# Alexandre Rostovtsev <tetromino@gentoo.org> (15 Dec 2012)
# media-video/coherence not keyworded
=media-video/totem-2* upnp-av

# Markus Meier <maekke@gentoo.org> (08 Dec 2012)
# mask app-office/libreoffice java extensions
app-office/libreoffice libreoffice_extensions_scripting-beanshell libreoffice_extensions_scripting-javascript libreoffice_extensions_wiki-publisher

# Markus Meier <maekke@gentoo.org> (17 Oct 2012)
# spidermonkey is broken on arm see bug #420471
=net-libs/libproxy-0.4.10 spidermonkey

# Steev Klimaszewski <steev@gentoo.org> (03 Aug 2012)
# No java on ARM
net-analyzer/wireshark doc-pdf

# Markus Meier <maekke@gentoo.org> (25 Jul 2012)
# no stable media-video/vlc yet, bug #401313
media-libs/phonon vlc

# Chí-Thanh Christopher Nguyen <chithanh@gentoo.org> (02 Jun 2012)
# Mask udis86 flag for llvm, which is of limited use outside x86/amd64.
sys-devel/llvm udis86

# Alexandre Rostovtsev <tetromino@gentoo.org> (12 Apr 2012)
# Temporary mask-in-base, unmask-in-arch for dev-python/mako keywording for
# gobject-introspection[doctool], bug #411761
dev-libs/gobject-introspection -doctool

# Michael Sterrett <mr_bones_@gentoo.org> (04 Mar 2012)
# arm is missing keywords for >=dev-libs/json-glib-0.12
app-admin/syslog-ng json

# Alexandre Rostovtsev <tetromino@gentoo.org> (09 Jan 2012)
# jsc JIT compilation is supported only on amd64/arm/x86 and their prefixes, so
# it's masked in base profile and unmasked here (bug #396313).
net-libs/webkit-gtk -jit
www-client/epiphany -jit

# Anthony G. Basile <blueness@gentoo.org> (Dec 21, 2011)
# Mask the vde flag on tinc because net-misc/vde is not
# keyworded for arm
net-misc/tinc vde

# Davide Pesavento <pesa@gentoo.org> (30 Nov 2011)
# JavaScriptCore JIT is supported only on amd64/arm/x86,
# so it's masked in base profile and unmasked here.
dev-qt/qtscript -jit
dev-qt/qtwebkit -jit

# Patrick McLean <chutzpah@gentoo.org> (08 Nov 2011)
# mask conntrack USE flag for dnsmasq as dep is not keyworded
net-dns/dnsmasq conntrack

# Alexandre Rostovtsev <tetromino@gentoo.org> (03 Nov 2011)
# Missing keywords in gst-plugins-{faac,lame,speex,twolame}, bug #389433
gnome-extra/gnome-media aac mp3 speex twolame

# Markus Meier <maekke@gentoo.org> (05 Sep 2011)
# unkeyworded deps for bug 379657 and bug 379651
gnome-base/gnome-control-center socialweb
app-admin/packagekit-base entropy

# Robin H. Johnson <robbat2@gentoo.org> (03 Sep 2011)
# Remove this for your arch after you keyword dev-utils/google-perftools and virtual/gsasl (bug #381737)
dev-libs/libmemcached sasl

# Pacho Ramos <pacho@gentoo.org> (19 Jul 2011)
# Missing keywords on dependencies
app-cdr/brasero vcd

# Pacho Ramos <pacho@gentoo.org> (02 Apr 2011)
# quvi support is needed to play youtube files now
media-video/totem flash youtube

# Markus Meier <maekke@gentoo.org> (13 Mar 2011)
# needs stable kde stuff
sys-auth/polkit kde

# Sebastian Pipping <sping@gentoo.org> (22 Feb 2011)
# No media-sound/lilypond here, yet (bug #356069)
app-text/asciidoc test

# Michael Weber <xmw@gentoo.org> (10 Feb 2011)
# kde-base/kdelibs is not stable for arm
net-libs/libproxy kde

# Justin Lecher <jlec@gentoo.org> (14 Jen 2011)
# x11-libs/fltk is not keyworded for arm
app-misc/nut X

# Nirbheek Chauhan <nirbheek@gentoo.org> (26 Jun 2010)
# Inter-process communication doesn't work on anything except x86/amd64/arm
# due to lack of atomic ops, bug 325185
www-client/firefox -ipc

# Pacho Ramos <pacho@gentoo.org> (13 Jun 2010)
# Needs app-mobilephone/obex-data-server keyworded, bug 305913
gnome-base/gvfs bluetooth

# Jeremy Olexa <darkside@gentoo.org> (04 Apr 2010)
# mask net-misc/mediatomb[lastfm] as lastfmlib isn't keyworded
net-misc/mediatomb lastfm

# Raúl Porcel <armin76@gentoo.org> (28 Mar 2010)
# Needs kde-4 stable
dev-vcs/subversion kde

# Raúl Porcel <armin76@gentoo.org> (20 Jan 2010)
# Needs mplayer
kde-base/dolphin thumbnail

# Markus Meier <maekke@gentoo.org> (27 Sep 2009)
# mask media-gfx/imagemagick[autotrace] as autotrace is not keyworded
media-gfx/imagemagick autotrace

# Jim Ramsay <lack@gentoo.org> (5 Nov 2008)
# app-admin/gkrellm may pull in net-libs/libntlm, which is not keyworded
app-admin/gkrellm ntlm

# Masking this so repoman shuts up about paludis
sys-apps/paludis ruby-bindings

# missing keyword for sys-cluster/openmpi sys-cluster/mpich2
dev-libs/boost mpi

# missing keywords
media-sound/sox ladspa
media-plugins/gst-plugins-meta aac dts dv lame libvisual taglib vcd wavpack

# projectm not keyworded, bug #314969
media-video/vlc projectm

# Ultrabug <ultrabug@gentoo.org) (05 Sept 2011)
# missing keyword for net-libs/zeromq
app-admin/rsyslog zeromq
