# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-python/python-xlib/python-xlib-0.14.ebuild,v 1.7 2009/11/14 16:35:31 armin76 Exp $

inherit distutils

DESCRIPTION="A fully functional X client library for Python, written in Python"
HOMEPAGE="http://python-xlib.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="*"
IUSE="doc"
DEPEND="${RDEPEND}
	doc? ( virtual/latex-base
		>=sys-apps/texinfo-4.8-r2 )"

PYTHON_MODNAME="Xlib"

src_compile() {
	distutils_src_compile
	if use doc; then
		cd doc
		VARTEXFONTS="${T}"/fonts emake || die "make docs failed"
	fi
}

src_install () {
	distutils_src_install
	if use doc; then
		dohtml -r doc/html/
		dodoc doc/ps/python-xlib.ps
	fi
}

src_test() {
	distutils_python_version
	for pytest in $(ls test/*py); do
		PYTHONPATH=. "${python}" ${pytest} || die "test failed"
	done
}
