# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/arm64/package.use.mask,v 1.2 2014/01/18 04:22:28 vapier Exp $

# Rick Farina <zerochaos@gentoo.org> (09 Jan 2014)
# rjb doesn't work on arm, so no java hacks for metasploit
net-analyzer/metasploit java

# Julian Ospald <hasufell@gentoo.org> (04 Jan 2014)
# no keyword for media-libs/swfdec and media-libs/libtimidity
>=dev-libs/DirectFB-1.7.1 timidity swfdec

# Markus Meier <maekke@gentoo.org> (26 Dec 2013)
# Unkeyworded deps, bug #493780
=dev-ruby/rack-1.4.5 test

# Markus Meier <maekke@gentoo.org> (26 Dec 2013)
# Unkeyworded deps, bug #488724
app-office/gnumeric libgda

# Pacho Ramos <pacho@gentoo.org> (28 Nov 2013)
# Missing keywords, bug #492820
net-im/telepathy-connection-managers sipe

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

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

# Tobias Klausmann <klausman@gentoo.org> (02 Nov 2011)
# libpcre jit is not supported on alpha
dev-libs/libpcre jit

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

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