summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/visible.py
blob: c50768dfbcad3b7e37e080a85f2e5cd1937b6b6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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