# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/amd64/package.use.mask,v 1.173 2013/11/19 10:15:16 radhermit Exp $

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

# Jeff Horelick <jdhore@gentoo.org> (1 Sep 2013)
# Dependency (media-libs/libsidplayfp) only keyworded
# on x86 and amd64. (masked in base)
>=media-plugins/audacious-plugins-3.4 -sid

# Tim Harder <radhermit@gentoo.org> (13 Aug 2013)
# dev-lang/luajit keyworded for amd64 (masked in base) 
# dev-scheme/racket keyworded for amd64 (masked in base) 
app-editors/vim -luajit -racket
app-editors/gvim -luajit -racket

# Kacper Kowalik <xarthisius@gentoo.org> (09 Aug 2013)
# Works on amd64
sys-apps/hwloc -cuda -gl -opencl

# Michał Górny <mgorny@gentoo.org> (22 Jul 2013)
# Meaningless on amd64 (it controls the 32-bit x86 JIT).
dev-python/pypy sse2

# Anthony G. Basile <blueness@gentoo.org> (18 Jun 2013)
# Works on amd64
net-libs/cyassl -aes-ni

# Michael Weber <xmw@gentoo.org> (18 Jun 2013)
# unsatisfied multilib dep on curl[abi_x86_32]
www-client/netsurf abi_x86_32

# Jeroen Roovers <jer@gentoo.org> (11 Jun 2013)
# The debug version of www-plugins/adobe-flash is 32-bit only
www-plugins/adobe-flash debug

# Justin Lecher <jlec@gentoo.org> (21 Feb 2013)
# cuda only works on x86 and amd64
sci-libs/cholmod -cuda

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

# Alexandre Rostovtsev <tetromino@gentoo.org> (30 Dec 2012)
# chromium, mono work on this arch (masked in base)
gnome-extra/zeitgeist-datasources -chromium -tomboy

# Christoph Jungans <ottxor@gentoo.org> (26 Dec 2012)
# cuda/openmm works on x86/amd64 (masked in base)
sci-chemistry/gromacs -cuda -mkl -openmm

# Diego Elio Pettenò <flameeyes@gentoo.org> (3 Nov 2012)
# Unmask here, as it's masked in base.
net-libs/gnutls -dane

# Johannes Huber <johu@gentoo.org> (15 Sep 2012)
# Masked for stabilization as the use flag pulls a dep tree of hell.
media-libs/phonon zeitgeist

# Michael Sterrett <mr_bones_@gentoo.org> (02 Sep 2012)
# Missing stable keyword on dev-php/igbinary
dev-php/pecl-memcached igbinary

# Ben de Groot <yngwin@gentoo.org> (30 Jul 2012)
# dependency keyworded here, masked in base
media-libs/freetype -infinality

# Rick Farina <zerochaos@gentoo.org> (05 July 2012)
# masked in base, unmask x86/amd64 only
app-crypt/johntheripper -cuda

# Mike Gilbert <floppym@gentoo.org> (29 Jun 2012)
# sys-fs/zfs is not available everywhere.
sys-boot/grub -libzfs

# 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

# Michał Górny <mgorny@gentoo.org> (11 Apr 2012)
# JIT compilation in libzpaq generates code for x86/amd64.
app-arch/libzpaq -jit

# Arun Raghavan <ford_prefect@gentoo.org> (29 Mar 2012)
# webrtc-audio-processing is only supported on x86/amd64. Possibly arm can be
# added.
# Arun Raghavan <ford_prefect@gentoo.org> (24 May 2012)
# Mask xen USE flag by default, unmask on x86/amd64 where it is supported.
media-sound/pulseaudio -webrtc-aec -xen

# Bernard Cafarelli <voyageur@gentoo.org> (27 Feb 2012)
# Masked in base profile, supported on this arch
gnustep-base/gnustep-make -libobjc2

# 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

# 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

# Samuli Suominen <ssuominen@gentoo.org> (16 Oct 2011)
# Masked in base, unmask per arch
gnome-base/gvfs -bluray

# Nirbheek Chauhan <nirbheek@gentoo.org> (17 Sep 2011)
# Systemtap is masked in base/package.use.mask
# Temporarily unmask in amd64/x86, bug 384647
dev-libs/glib -systemtap

# Kacper Kowalik <xarthisius@gentoo.org> (29 Jul 2011)
# mask assembler as it currently doesn't work
dev-lang/path64 assembler

# Robin H. Johnson <robbat2@gentoo.org> (10 Jul 2011)
# PPS should work on all arches, but only keyworded on amd64/x86
>=net-misc/ntp-4.2.6_p3-r1 -parse-clocks

# Alexey Shvetsov <alexxy@gentoo.org> (1 Jul 2011)
# Use mask infiniband for stable corosync and glusterfs
=sys-cluster/glusterfs-3.1.2 infiniband
=sys-cluster/corosync-1.3.0 infiniband

# Markos Chandras <hwoarang@gentoo.org> (10 Jun 2011)
# Unmask firebird on qtsql per bug #337451
dev-qt/qtsql -firebird

# Markos Chandras <hwoarang@gentoo.org> (03 May 2011)
# Unmask firebird only for php
dev-lang/php -firebird

# Luca Barbato <lu_zero@gentoo.org> (28 Feb 2011)
# Masked in base, unmask for amd64/x86
media-video/mplayer2 -bluray

# Tim Harder <radhermit@gentoo.org> (13 Feb 2011)
# Masked in base, unmask for amd64/x86
>=media-video/mplayer-1.0_rc4_p20101219 -bluray

# doomsday doesn't work on amd64 so mask off things that pull it in.
games-fps/doom-data doomsday

# Markos Chandras <hwoarang@gentoo.org> (19 Jan 2011)
# Masking md5sum on mail-mta/ssmtp since it is broken on
# earlier versions
mail-mta/ssmtp md5sum

# Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> (28 Nov 2010)
# sys-devel/llvm is keyworded on amd64
media-libs/mesa -llvm

# Nirbheek Chauhna <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

# Tomáš Chvátal <scarabeus@gentoo.org> (4 Apr 2010)
# x86 platforms works
sys-power/pm-utils -video_cards_intel -video_cards_radeon

# Mounir Lamouri <volkmar@gentoo.org> (07 Nov 2009)
# Masked in base, unmak for amd64/x86. Bug 267264
media-gfx/k3d -cuda

# Jean-Noël Rivasseau <elvanor@gentoo.org> (23 Sep 2009)
# X use flag only for amd64/x86, bug 285951.
media-gfx/iscan -X

# Bernard Cafarelli <voyageur@gentoo.org> (20 Mar 2009)
# Depends on packages not yet keyworded for amd64, cf bug #22042
app-backup/backup-manager s3

# Jeremy Olexa <darkside@gentoo.org> (07 Feb 2009)
# USE=mmx on imlib2 causes issues with other apps. See bug 218382 (comments
# 11-12)
media-libs/imlib2 mmx

# Serkan Kaba <serkan@gentoo.org> (5 Feb 2009)
# finally a 64bit java plugin
>=dev-java/sun-jre-bin-1.6.0.12 -nsplugin

# Jeremy Olexa <darkside@gentoo.org> (27 Dec 2008)
# Mask static USE flag because it just doesn't work on amd64. See bug 236591
>=app-arch/p7zip-4.58 static

# Jeremy Olexa <darkside@gentoo.org> (24 Dec 2008)
# unmask USE=bindist on amd64 - also unmasking the other flags that were under a
# bad comment heading. see bug #246144
media-video/mplayer -cpudetection -custom-cpuopts -bindist

# Vlastimil Babka <caster@gentoo.org> (12 Dec 2008)
# finally a 64bit java plugin
>=dev-java/sun-jdk-1.6.0.12_beta2 -nsplugin

# Tomas Chvatal <scarabeus@gentoo.org> (31 Jan 2009)
# masked in base, unmask for x86/amd64
sci-misc/boinc -cuda

# Serkan Kaba <serkan@gentoo.org> (20 Jul 2008)
app-text/enchant -zemberek

# assembler-section

# Oct 23th 2006; blubb@gentoo.org
# the asm is 64bit save, but it doesn't compile anyway
games-emulation/visualboyadvance mmx

# Oct 23th 2006; blubb@gentoo.org
# upstream forces sse2 for amd64; mmx flag does nothing
app-crypt/johntheripper mmx

# Oct 23th 2006; blubb@gentoo.org
# x86 asm only:
games-emulation/xmess mmx
media-gfx/inkscape mmx
media-libs/allegro mmx sse
media-libs/libfame mmx
media-libs/sdl-gfx mmx
media-libs/smpeg mmx
net-irc/xchat mmx
net-irc/xchat-gnome mmx
net-misc/asterisk mmx
x11-terms/eterm mmx
media-tv/xawtv mmx

# x86_64 opts are enabled with USE sse. so masking the rest
media-sound/mpg123 mmx 3dnow 3dnowext

# 8 May 2007: Alistair Bush <ali_bush@gentoo.org>
# Mask doc flag for fop as nearly impossible to
# run javadoc target.  see #177585
>=dev-java/fop-0.93 doc

# 8 Aug 2008: Alexis Ballier <aballier@gentoo.org>
# x86 asm only, it won't be built on amd64 if mmx useflag is enabled but that
# saves people from needlessly installing nasm
# Refs bug #93279
media-sound/lame mmx

# Robert Buchholz <rbu@gentoo.org> (16 Aug 2008)
# masked in base, unmask for x86/amd64
dev-python/kaa-base -tls

# Samuli Suominen <ssuominen@gentoo.org> (13 Mar 2013)
# Works with new wine, doesn't work with old wine wrt #461602
<app-emulation/wine-1.5.25 gstreamer
