# Copyright 1999-2009 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.12 2009/09/27 13:26:40 maekke Exp $

# Lutz Justen <ljusten@chromium.org> (16 Feb 2017)
# authpolicy lacks arm-specific seccomp filters and depends on Samba, which
# doesn't compile for arm yet.
chromeos-base/chromeos-chrome authpolicy

# 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

# Gilles Dartiguelongue <eva@gentoo.org> (19 Oct 2007)
# gdm depends on zenity which is not keyworded
>=gnome-base/gdm-2.20 remote

# Gilles Dartiguelongue <eva@gentoo.org> (23 Oct 2007)
# gdm depends on zenity which is not keyworded
>=media-video/totem-2.20 galago

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

# missing keywords
media-sound/sox amrnb amrwb ladspa
media-plugins/gst-plugins-meta lame taglib

# David Hendricks <dhendrix@chromium.org> (10 Oct 2011)
# libpci will cause program to exit(1) during init if PCI not present in system
sys-apps/flashrom drkaiser gfxnvidia nicintel nicintel_spi nicrealtek ogp_spi satasii

# These are only used on 32-bit ARM targets.
sys-devel/gcc -hardfp -thumb
sys-libs/gcc-libs -hardfp -thumb

# Masking as Lacros isn't supported on this arch.
virtual/target-chromium-os lacros_rootfs
