# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/amd64-fbsd/todo/package.use.mask,v 1.336 2013/11/17 14:13:57 aballier Exp $

# Mask useflags that require deps with missing keywords.
# Anyone is allowed and _very welcome_ to add masks there.
# We will pick them up and keyword as time permits and prefer having a sane
# deptree with missing features than a broken one.
# Do *NOT* add a ChangeLog entry when modifying this file: it is intended as
# temporary and cvs log is more than enough for getting its history.
# 
# Syntax is: # mising dep(s)
#            mask
# Keep it simple, we do not really care about the date or who masked it, we want
# to be easily able to determine what we need to keyword.

# net-libs/gnome-online-accounts
gnome-base/gvfs gnome-online-accounts

# media-libs/gavl (missing clock_nanosleep on fbsd)
media-plugins/frei0r-plugins scale0tilt

# net-fs/openafs
app-crypt/heimdal afs

# app-accessibility/flite (fails at install)
media-video/ffmpeg flite

# dev-vcs/darcs
app-portage/layman darcs

# dev-python/mysql-python
dev-vcs/mercurial bugzilla

# net-libs/axtls
net-misc/curl curl_ssl_axtls

# media-libs/libmetalink -> undefined references on TEMP_FAILURE_RETRY (macro
# provided by glibc)
net-misc/curl metalink

# net-libs/cyassl (fails to build)
net-misc/curl curl_ssl_cyassl

# sys-process/numactl
sys-apps/hwloc numa

# dev-lang/mono
net-dns/libidn mono
media-libs/libcaca mono
dev-java/antlr mono

# dev-lang/mono
# >=dev-dotnet/gtk-sharp-2
net-dns/avahi mono

# net-misc/netkit-rsh
x11-apps/xsm rsh

# net-libs/libtirpc
sys-apps/xinetd rpc

# sci-libs/cfitsio
media-gfx/ufraw fits

# >=media-gfx/gimp-2
media-gfx/ufraw gimp

# net-libs/libproxy
net-libs/neon libproxy
net-libs/glib-networking libproxy
media-video/vlc libproxy

# dev-libs/pakchois
net-libs/neon pkcs11

# app-text/texlive[extra]
app-doc/doxygen latex

# x11-misc/colord
x11-libs/gtk+ colord

# sys-auth/polkit
sys-auth/consolekit policykit
gnome-base/gconf policykit

# media-sound/pulseaudio
media-libs/libsdl pulseaudio
media-libs/openal pulseaudio
media-video/ffmpeg pulseaudio
media-libs/libcanberra pulseaudio
media-libs/phonon pulseaudio
media-video/vlc pulseaudio
media-sound/mpg123 pulseaudio
media-video/mplayer pulseaudio
media-libs/xine-lib pulseaudio

# >=media-plugins/gst-plugins-pulse-0.10
media-plugins/gst-plugins-meta pulseaudio

# >=app-pda/libimobiledevice-1.1.0
gnome-base/gvfs ios

# >=sys-fs/fuse-2.8.0
gnome-base/gvfs fuse

# >=gnome-base/libgdu-3.0.2
gnome-base/gvfs gdu

# >=x11-libs/libva-0.32
media-video/ffmpeg vaapi
virtual/ffmpeg vaapi
media-video/vlc vaapi
media-libs/xine-lib vaapi

# media-libs/nas
media-libs/libsdl nas
dev-qt/qtgui nas
app-editors/xemacs nas
media-sound/mpg123 nas
media-video/mplayer nas

# net-misc/openntpd
net-misc/ntp openntpd

# fails to build, need to investigate why
net-libs/webkit-gtk introspection

# virtual/mysql
sci-mathematics/glpk mysql
dev-libs/apr-util mysql
dev-qt/qtsql mysql
dev-libs/redland mysql
dev-libs/cyrus-sasl mysql
dev-lang/php mysql mysqli
net-libs/courier-authlib mysql

# does not build
x11-libs/libdrm libkms
media-libs/mesa video_cards_vmware
media-libs/mesa video_cards_r600
media-libs/mesa video_cards_radeon

# x11-libs/libdrm[libkms]
media-libs/mesa xorg

# x11-drivers/xf86-video-sis
x11-base/xorg-drivers video_cards_sis

# x11-drivers/xf86-video-tdfx
x11-base/xorg-drivers video_cards_tdfx

# x11-drivers/xf86-video-vmware
# x11-libs/libdrm[libkms,video_cards_vmware]
x11-base/xorg-drivers video_cards_vmware

# >=dev-cpp/clucene-0.9.21[-debug]
app-misc/strigi clucene

# >=sys-auth/polkit-qt-0.103.0
# >=kde-misc/polkit-kde-kcmodules-0.98_pre20101127
# >=sys-auth/polkit-kde-agent-0.99
kde-base/kdelibs policykit

# <=sci-geosciences/gpsd-2.95-r1
app-misc/geoclue gps

# >=sys-devel/binutils-2.22
sys-devel/llvm gold

# media-libs/liboggz
media-libs/libkate wxwidgets

# media-sound/fluidsynth
media-video/vlc fluidsynth

# sys-cluster/knem
sys-cluster/openmpi openmpi_fabrics_knem

# sys-infiniband/dapl
sys-cluster/openmpi openmpi_fabrics_dapl

# sys-infiniband/ofed
sys-cluster/openmpi openmpi_fabrics_ofed

# sys-infiniband/infinipath-psm
sys-cluster/openmpi openmpi_fabrics_psm

# sys-infiniband/librdmacm
sys-cluster/openmpi openmpi_ofed_features_rdmacm

# sys-cluster/open-mx
sys-cluster/openmpi openmpi_fabrics_open-mx

# sys-cluster/slurm
sys-cluster/openmpi openmpi_rm_slurm

# x11-libs/dnd
app-editors/xemacs dnd

# app-i18n/canna
app-editors/xemacs canna

# app-i18n/freewnn
app-editors/xemacs freewnn

# media-libs/devil[png,jpeg]
media-gfx/graphviz devil

# sys-apps/util-linux (libuuid)
net-misc/wget uuid

# dev-util/valgrind
dev-libs/eina valgrind

# dev-util/lcov
dev-libs/eina test
dev-libs/eet test

# net-misc/freerdp (doesnt build)
media-video/vlc rdp
