# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/default/bsd/package.use.mask,v 1.41 2013/10/14 04:53:56 naota Exp $


# Naohiro Aota <naota@gentoo.org> (14 Oct 2013)
# libcap-ng is for Linux only
net-analyzer/tcpdump drop-root

# Richard Yao <ryao@gentoo.org> (09 Nov 2012)
# pm-utils is Linux-specific
kde-base/powerdevil pm-utils

# Diego Elio Pettenò <flameeyes@gentoo.org> (16 Jul 2012)
# Allow using iconv in blender
media-gfx/blender -iconv

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

app-misc/mc pam

# See http://bugzilla.gnome.org/show_bug.cgi?id=370847 for why we disable pam
gnome-extra/gnome-screensaver pam

# Requires Linux-only packages
app-accessibility/gok usb

# iproute2 - linux only
net-misc/openvpn iproute2

app-admin/sshguard -ipfilter
media-video/ffmpeg ieee1394 iec61883
net-libs/c-client pam
net-proxy/squid -ipf-transparent -pf-transparent
sys-apps/baselayout pam
sys-apps/coreutils acl
sys-apps/help2man nls

# NetworkManager is Linux-only, Zephyr requires kerberos
net-im/pidgin networkmanager zephyr

media-video/totem bluetooth

# Alexis Ballier <aballier@gentoo.org> (18 Jul 2008)
# Requires a linux only library,  bug #226085
dev-lang/erlang sctp

# Alexis Ballier <aballier@gentoo.org> (8 Aug 2008)
# Linux only useflags for vlc
media-video/vlc dc1394 ieee1394 fbosd

# Alexis Ballier <aballier@gentoo.org> (8 Aug 2008)
# Depends on torque which is a linux only thing
# lksctp-tools is linux only too
sys-cluster/openmpi openmpi_rm_pbs openmpi_fabrics_sctp

# Alexis Ballier <aballier@gentoo.org> (25 Sep 2008)
# elf -> dev-libs/elfutils is too tight to the gnu libc
# rpm could be masked but we have rpm 5 keyworded even if it's still masked.
net-analyzer/net-snmp elf

# Alexis Ballier <aballier@gentoo.org> (4 Oct 2008)
# clisp doesn't build out of the box but can be fixed, xindy's way of building
# its clisp module is confused by gmake vs bsdmake, mask it until we can
# properly keyword xindy.
app-text/texlive xindy

# Alexis Ballier <aballier@gentoo.org> (28 Nov 2008)
# Requires bluez-libs which is linux only
net-libs/libpcap bluetooth
gnome-base/gvfs bluetooth

# Alexis Ballier <aballier@gentoo.org> (22 Jan 2009)
# Requires gpm
www-client/links livecd

# Needs bluez and wicd which are linux only
kde-base/solid bluetooth wicd

# Needs DirectFB which is linux only
media-libs/xine-lib fusion

# needs udev
kde-base/kdelibs udisks upower
media-libs/mesa gbm
x11-base/xorg-drivers video_cards_radeonsi
x11-drivers/xf86-video-ati glamor
x11-drivers/xf86-video-intel glamor

# connman is Linux only
dev-qt/qtbearer connman

# udisks is linux only (for now?)
gnome-base/gvfs udisks

# joystick and video_cards_tdfx useflag are linux only #477750
media-video/mplayer joystick video_cards_tdfx

# linux only
media-libs/opencv ieee1394 cuda

# depends on networkmanager
app-misc/geoclue skyhook
