matplotlib: import & fix cross-compile

The setupext.py code hardcodes a lot of paths to / which causes the code
to compile & link against the wrong things.  Change it to cross-compile
properly.

BUG=chromium:488089
TEST=`emerge-samux matplotlib` no longer links w/-L/usr/lib

Change-Id: Id248c30d1bc7d713e024bad08b1eadbf4e333b68
Reviewed-on: https://chromium-review.googlesource.com/271214
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Simran Basi <sbasi@chromium.org>
diff --git a/dev-python/matplotlib/matplotlib-1.3.1.ebuild b/dev-python/matplotlib/matplotlib-1.3.1.ebuild
new file mode 100644
index 0000000..889455d
--- /dev/null
+++ b/dev-python/matplotlib/matplotlib-1.3.1.ebuild
@@ -0,0 +1,242 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-python/matplotlib/matplotlib-1.3.1.ebuild,v 1.2 2013/12/26 18:55:53 jlec Exp $
+
+EAPI=5
+
+PYTHON_COMPAT=( python{2_7,3_3} )
+
+PYTHON_REQ_USE='tk?'
+
+VIRTUALX_REQUIRED="always"
+
+inherit distutils-r1 eutils flag-o-matic virtualx toolchain-funcs
+
+DESCRIPTION="Pure python plotting library with matlab like syntax"
+HOMEPAGE="http://matplotlib.org/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+SLOT="0"
+# Main license: matplotlib
+# Some modules: BSD
+# matplotlib/backends/qt4_editor: MIT
+# Fonts: BitstreamVera, OFL-1.1
+LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
+KEYWORDS="*"
+IUSE="cairo doc excel examples fltk gtk gtk3 latex pyside qt4 test tk wxwidgets"
+
+# #456704 -- a lot of py2-only deps
+PY2_USEDEP=$(python_gen_usedep 'python2*')
+PY3_USEDEP=$(python_gen_usedep python3_3)
+COMMON_DEPEND="
+	dev-python/numpy[${PYTHON_USEDEP}]
+	dev-python/python-dateutil:0[${PYTHON_USEDEP}]
+	dev-python/pytz[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]
+	media-fonts/stix-fonts
+	media-libs/freetype:2
+	media-libs/libpng:0
+	gtk? ( dev-python/pygtk[${PY2_USEDEP}] )
+	wxwidgets? ( >=dev-python/wxpython-2.8[${PY2_USEDEP}] )"
+
+# internal copy of pycxx highly patched
+#	dev-python/pycxx
+
+DEPEND="${COMMON_DEPEND}
+	virtual/pkgconfig
+	doc? (
+		app-text/dvipng
+		virtual/python-imaging[${PYTHON_USEDEP}]
+		dev-python/ipython[${PYTHON_USEDEP}]
+		dev-python/numpydoc[${PY2_USEDEP}]
+		dev-python/xlwt[${PY2_USEDEP}]
+		dev-python/sphinx[${PYTHON_USEDEP}]
+		dev-texlive/texlive-latexextra
+		dev-texlive/texlive-fontsrecommended
+		dev-texlive/texlive-latexrecommended
+		media-gfx/graphviz[cairo]
+	)
+	test? ( dev-python/nose[${PYTHON_USEDEP}] )"
+
+RDEPEND="${COMMON_DEPEND}
+	dev-python/pyparsing[${PYTHON_USEDEP}]
+	cairo? ( dev-python/pycairo[${PYTHON_USEDEP}] )
+	excel? ( dev-python/xlwt[${PY2_USEDEP}] )
+	fltk? ( dev-python/pyfltk[${PY2_USEDEP}] )
+	gtk3? (
+		dev-python/pygobject:3[${PYTHON_USEDEP}]
+		x11-libs/gtk+:3[introspection] )
+	latex? (
+		virtual/latex-base
+		app-text/ghostscript-gpl
+		app-text/dvipng
+		app-text/poppler[utils]
+		dev-texlive/texlive-fontsrecommended
+		dev-texlive/texlive-latexextra
+		dev-texlive/texlive-xetex
+	)
+	pyside? ( dev-python/pyside[X,${PYTHON_USEDEP}] )
+	qt4? ( dev-python/PyQt4[X,${PYTHON_USEDEP}] )"
+
+PY2_FLAGS="|| ( $(python_gen_useflags python2*) )"
+REQUIRED_USE="
+	doc? ( ${PY2_FLAGS} )
+	excel? ( ${PY2_FLAGS} )
+	fltk? ( ${PY2_FLAGS} )
+	gtk? ( ${PY2_FLAGS} )
+	wxwidgets? ( ${PY2_FLAGS} )
+	test? (
+		cairo fltk latex pyside qt4 tk wxwidgets
+		|| ( gtk gtk3 )
+		)"
+
+RESTRICT="mirror"
+
+# A few C++ source files are written to srcdir.
+# Other than that, the ebuild shall be fit for out-of-source build.
+DISTUTILS_IN_SOURCE_BUILD=1
+
+use_setup() {
+	local uword="${2:-${1}}"
+	if use ${1}; then
+		echo "${uword} = True"
+		echo "${uword}agg = True"
+	else
+		echo "${uword} = False"
+		echo "${uword}agg = False"
+	fi
+}
+
+python_prepare_all() {
+# Generates test failures, but fedora does it
+#	local PATCHES=(
+#		"${FILESDIR}"/${P}-unbundle-pycxx.patch
+#		"${FILESDIR}"/${P}-unbundle-agg.patch
+#	)
+#	rm -r agg24 CXX || die
+#	rm -r agg24 || die
+
+	sed -i \
+		-e "s:\<pkg-config\>:$(tc-getPKG_CONFIG):" \
+		setupext.py || die
+	epatch "${FILESDIR}"/${P}-cross-compile.patch
+
+	sed \
+		-e 's/matplotlib.pyparsing_py[23]/pyparsing/g' \
+		-i lib/matplotlib/{mathtext,fontconfig_pattern}.py \
+		|| die "sed pyparsing failed"
+
+	# suggested by upstream
+	sed \
+		-e '/tol/s:32:35:g' \
+		-i lib/matplotlib/tests/test_mathtext.py || die
+
+	if use gtk || use gtk3; then
+		export XDG_RUNTIME_DIR="${T}/runtime-dir"
+		mkdir "${XDG_RUNTIME_DIR}" || die
+		chmod 0700 "${XDG_RUNTIME_DIR}" || die
+	fi
+
+	distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+	append-flags -fno-strict-aliasing
+}
+
+python_configure() {
+	mkdir -p "${BUILD_DIR}" || die
+
+	# create setup.cfg (see setup.cfg.template for any changes).
+
+	# common switches.
+	cat > "${BUILD_DIR}"/setup.cfg <<-EOF
+		[directories]
+		basedirlist = ${EPREFIX}/usr
+		[provide_packages]
+		pytz = False
+		dateutil = False
+		[gui_support]
+		agg = True
+		$(use_setup cairo)
+		$(use_setup pyside)
+		$(use_setup qt4)
+		$(use_setup tk)
+	EOF
+
+	if use gtk3 && use cairo; then
+		echo "gtk3cairo = True" >> "${BUILD_DIR}"/setup.cfg || die
+	else
+		echo "gtk3cairo = False" >> "${BUILD_DIR}"/setup.cfg || die
+	fi
+
+	if $(python_is_python3); then
+		cat >> "${BUILD_DIR}"/setup.cfg <<-EOF
+			six = True
+			fltk = False
+			fltkagg = False
+			gtk = False
+			gtkagg = False
+			wx = False
+			wxagg = False
+		EOF
+	else
+		cat >> "${BUILD_DIR}"/setup.cfg <<-EOF
+			six = False
+			$(use_setup fltk)
+			$(use_setup gtk)
+			$(use_setup gtk3)
+			$(use_setup wxwidgets wx)
+		EOF
+	fi
+}
+
+wrap_setup() {
+	local MPLSETUPCFG=${BUILD_DIR}/setup.cfg
+	export MPLSETUPCFG
+
+	# Note: remove build... if switching to out-of-source build
+	"${@}" build --build-lib="${BUILD_DIR}"/build/lib
+}
+
+python_compile() {
+	VIRTUALX_COMMAND="wrap_setup distutils-r1_python_compile"
+	virtualmake
+}
+
+python_compile_all() {
+	if use doc; then
+		cd doc || die
+
+		# necessary for in-source build
+		local -x PYTHONPATH="${BUILD_DIR}"/build/lib:${PYTHONPATH}
+
+		unset DISPLAY # bug #278524
+		VARTEXFONTS="${T}"/fonts \
+		"${PYTHON}" ./make.py --small html || die
+	fi
+}
+
+python_test() {
+	wrap_setup distutils_install_for_testing
+
+	cd "${TMPDIR}" || die
+	VIRTUALX_COMMAND="${PYTHON}"
+	virtualmake -c "import sys, matplotlib as m; sys.exit(0 if m.test(verbosity=2) else 1)" || \
+		die "Tests fail with ${EPYTHON}"
+}
+
+python_install() {
+	wrap_setup distutils-r1_python_install
+}
+
+python_install_all() {
+	use doc && local HTML_DOCS=( doc/build/html/. )
+
+	distutils-r1_python_install_all
+
+	if use examples; then
+		dodoc -r examples
+		docompress -x /usr/share/doc/${PF}/examples
+	fi
+}