blob: c50768dfbcad3b7e37e080a85f2e5cd1937b6b6e [file] [log] [blame]
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
import portage
def visible(pkgsettings, pkg, ignore=None):
"""
Check if a package is visible. This can raise an InvalidDependString
exception if LICENSE is invalid.
TODO: optionally generate a list of masking reasons
@rtype: Boolean
@returns: True if the package is visible, False otherwise.
"""
if not pkg.metadata["SLOT"]:
return False
if not pkg.installed:
if pkg.invalid:
return False
if not pkgsettings._accept_chost(pkg.cpv, pkg.metadata):
return False
eapi = pkg.metadata["EAPI"]
if not portage.eapi_is_supported(eapi):
return False
if not pkg.installed:
if portage._eapi_is_deprecated(eapi):
return False
if pkgsettings._getMissingKeywords(pkg.cpv, pkg.metadata):
return False
try:
if pkgsettings._getMissingProperties(pkg.cpv, pkg.metadata):
return False
except portage.exception.InvalidDependString:
return False
if pkgsettings._getMaskAtom(pkg.cpv, pkg.metadata):
return False
if pkgsettings._getProfileMaskAtom(pkg.cpv, pkg.metadata):
return False
try:
if pkgsettings._getMissingLicenses(pkg.cpv, pkg.metadata):
if ignore is None or 'LICENSE' not in ignore:
return False
except portage.exception.InvalidDependString:
return False
return True