# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-text/ptex/ptex-3.1.10_p20071203.ebuild,v 1.9 2008/02/14 16:05:47 matsuu Exp $

TETEX_PV=3.0_p1

inherit eutils tetex-3 flag-o-matic autotools multilib

SMALL_PV="${TETEX_PV/_p*}"
TETEX_TEXMF_PV="${SMALL_PV}"
TETEX_S="${WORKDIR}/tetex-src-${SMALL_PV}"

DESCRIPTION="TeX distribution teTeX with Japanese patch collection 'ptetex3'"
HOMEPAGE="http://www.nn.iij4u.or.jp/~tutimura/tex/ptetex.html"

#TETEX_SRC="tetex-src-${TETEX_PV}.tar.gz"
TETEX_SRC="tetex-src-${SMALL_PV}.tar.gz"
TETEX_TEXMF="tetex-texmf-${TETEX_TEXMF_PV:-${TETEX_PV}}"
TETEX_TEXMF_SRC="tetex-texmf-${TETEX_TEXMF_PV:-${TETEX_PV}}po.tar.gz"
PTETEX="ptetex3-${PV/*_p}"
PTETEX_CMAP="ptetex-cmap-20051117"

SRC_PATH_TETEX="ftp://cam.ctan.org/tex-archive/systems/unix/teTeX/3.0/distrib"
SRC_URI="${SRC_PATH_TETEX}/${TETEX_SRC}
	${SRC_PATH_TETEX}/${TETEX_TEXMF_SRC}
	http://tutimura.ath.cx/~nob/tex/ptetex/ptetex3/${PTETEX}.tar.gz
	http://tutimura.ath.cx/~nob/tex/ptetex/ptetex-cmap/${PTETEX_CMAP}.tar.gz
	mirror://gentoo/${PN}-3.1.10_p20071122-dviljk-security-fixes.patch.bz2"
#	mirror://gentoo/tetex-${TETEX_PV}-gentoo.tar.gz

KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sh sparc x86"

BUILD_DIR="${WORKDIR}/build/usr"

LICENSE="GPL-2 BSD"
IUSE="X motif Xaw3d neXt iconv unicode"

DEPEND="!app-text/tetex
	!<app-text/ptetex-3.1.9
	!app-text/dvipdfmx
	!app-text/xdvik
	media-libs/t1lib
	media-libs/gd
	X? (
		>=media-libs/freetype-2.3.4
		|| (
			media-fonts/ja-ipafonts
			media-fonts/ipamonafont
			media-fonts/vlgothic
			media-fonts/sazanami
			media-fonts/kochi-substitute
		)
	)"

S="${WORKDIR}/${PTETEX}"

# Sorry this provides tetex again...
PROVIDE="virtual/tetex"

src_unpack() {
	#tetex-3_src_unpack
	mkdir -p "${WORKDIR}/${TETEX_TEXMF}"
	cd "${WORKDIR}/${TETEX_TEXMF}"
	unpack ${TETEX_TEXMF_SRC}
	cd "${WORKDIR}"
	unpack ${TETEX_SRC}
	cd "${WORKDIR}"
	unpack ${PN}-3.1.10_p20071122-dviljk-security-fixes.patch.bz2
	unpack ${PTETEX}.tar.gz
	unpack ${PTETEX_CMAP}.tar.gz
	echo ">>> Unpacking jis and morisawa fonts ..."
	tar xzf "${WORKDIR}"/${PTETEX}/archive/jis.tar.gz -C "${WORKDIR}" || die
	tar xzf "${WORKDIR}"/${PTETEX}/archive/morisawa.tar.gz -C "${WORKDIR}" || die

	# Gentoo box reserves variable ${P}!!
	cd "${S}"
	epatch "${FILESDIR}"/${P}-gentoo.patch

	cat <<EOF > "${S}"/my_option
SRC_DIR="${WORKDIR}"
TMP_PREFIX="${BUILD_DIR}"
PREFIX=/usr
DATADIR=/usr/share
TEXMFDIST="${WORKDIR}/${TETEX_TEXMF}"
TEXSRC_EXTRACTED="${WORKDIR}"
#make_option vartexfonts=/var/lib/texmf
make_option vartexfonts="${T}/texfonts"
make_option CC="$(tc-getCC)"
make_option CXX="$(tc-getCXX)"
JAPANESE=international
XDVI=echo
PXDVI=echo
PLATEX209=no
conf_option --without-dviljk
conf_option --without-dvipng
conf_option --without-info
conf_option --without-texi2html
conf_option --without-texinfo

conf_option --with-system-zlib
conf_option --with-system-pnglib
conf_option --with-system-gd
conf_option --with-system-ncurses
conf_option --with-system-t1lib
conf_option --enable-shared
EOF

	if use iconv ; then
		echo "conf_option --enable-kanji-iconv" >> "${S}"/my_option
	fi

	if use unicode ; then
		echo "KANJI_CODE=UTF8" >> "${S}"/my_option
	else
		echo "KANJI_CODE=EUC" >> "${S}"/my_option
	fi

	# copied from tetex-3.eclass and modified
	if use X ; then
		if use motif ; then
			append-ldflags $(motif-config --libs)
			export CPPFLAGS="${CPPFLAGS} $(motif-config --cflags)"
			toolkit="motif"
		elif use neXt ; then
			toolkit="neXtaw"
		elif use Xaw3d ; then
			toolkit="xaw3d"
		else
			toolkit="xaw"
		fi
		append-ldflags $(freetype-config --libs)
		echo "export CPPFLAGS=\"${CPPFLAGS} $(freetype-config --cflags)\"" >> "${S}"/my_option
		echo "conf_option --with-xdvi-x-toolkit=${toolkit}" >> "${S}"/my_option
	else
		echo "conf_option --without-x" >> "${S}"/my_option
		echo "conf_option --without-xdvik" >> "${S}"/my_option
		echo "conf_option --without-pxdvik" >> "${S}"/my_option
	fi

	cd "${S}"
	unset TEXMFMAIN TEXMF HOME
	emake -j1 x || die "emake x failed"

	cd "${TETEX_S}"

	epatch "${FILESDIR}/tetex-${SMALL_PV}-kpathsea-pic.patch"

	# bug 85404
	epatch "${FILESDIR}/${PN}-3.1.10_p20071122-epstopdf-wrong-rotation.patch"

	# ptetex included
	#epatch "${FILESDIR}/tetex-${TETEX_PV}-amd64-xdvik-wp.patch"
	epatch "${FILESDIR}/tetex-${TETEX_PV}-mptest.patch"

	#bug 98029
	# no need
	#epatch "${FILESDIR}/${PN}-3.1.10_p20071122-fmtutil-etex.patch"

	#bug 115775
	# ptex included
	#epatch "${FILESDIR}/tetex-${TETEX_PV}-xpdf-vulnerabilities.patch"

	# bug 94860
	epatch "${FILESDIR}/${PN}-3.1.10_p20071122-pdftosrc-install.patch"

	# bug 126918
	epatch "${FILESDIR}/tetex-${TETEX_PV}-create-empty-files.patch"

	# bug 94901
	epatch "${FILESDIR}/tetex-${TETEX_PV}-dvipdfm-timezone.patch"

	# security bug #170861
	# ptetex included
	# epatch "${FILESDIR}/tetex-${TETEX_PV}-CVE-2007-0650.patch"

	# security bug #188172
	# ptetex included
	#epatch "${FILESDIR}/tetex-${TETEX_PV}-xpdf-CVE-2007-3387.patch"

	# security bug #198238
	epatch "${FILESDIR}/tetex-${TETEX_PV}-dvips_bufferoverflow.patch"

	# securty bug #196735
	epatch "${FILESDIR}/xpdf-3.02pl2.patch"

	# Construct a Gentoo site texmf directory
	# that overlays the upstream supplied
	# target not found
	#epatch "${FILESDIR}/tetex-${TETEX_PV}-texmf-site.patch"

	# security bug #198238
	epatch "${WORKDIR}/${PN}-3.1.10_p20071122-dviljk-security-fixes.patch"

	# security bug #198238 and bug #193437
	epatch "${FILESDIR}/tetex-${TETEX_PV}-t1lib-SA26241_buffer_overflow.patch"

	cd "${TETEX_S}/texk/dviljk"
	eautoreconf
}

src_compile() {
	unset TEXMFMAIN TEXMF HOME

	emake -j1 c || die "emake c failed"
	emake -j1 macro || die "emake macro failed"
	emake -j1 otf || die "emake otf failed"
	emake -j1 fonty || die "emake fonty failed"
	emake -j1 babel || die "emake babel failed"

	einfo "Setting ptetex-cmap ..."
	cd "${WORKDIR}/${PTETEX_CMAP}"
	PATH="${BUILD_DIR}/bin:$PATH" ./setup.sh "${BUILD_DIR}"/share/texmf/fonts/cmap
}

src_test() {
	emake -j1 test || die "emake test failed"
}

src_install() {
	#tetex-3_src_install
	einfo "Installing ptetex3 binaries ..."
	dobin "${BUILD_DIR}"/bin/*
	dolib "${BUILD_DIR}"/lib/*

	einfo "Installing /usr/include/* files ..."
	insinto /usr/include
	doins -r "${BUILD_DIR}"/include/*

	einfo "Installing /usr/share/* files ..."
	insinto /usr/share
	#doins -r "${BUILD_DIR}"/share/*
	cp -dr "${BUILD_DIR}"/share/* "${D}"/usr/share

	einfo "Installing document files ..."
	doman "${BUILD_DIR}"/man/*/*
	doinfo "${BUILD_DIR}"/info/*

	einfo "Installing jis and morisawa fonts ..."
	insinto /usr/share/texmf/fonts/tfm
	doins -r "${WORKDIR}"/jis/tfm/*        || die "installing jis/tfm failed"
	doins -r "${WORKDIR}"/morisawa/tfm/*   || die "installing morisawa/tfm failed"

	einfo "Installing texmf files ..."
	find "${WORKDIR}"/${TETEX_TEXMF} -maxdepth 1 -mindepth 1 -type f | xargs rm -f
	insinto /usr/share/texmf
	doins -r "${WORKDIR}"/${TETEX_TEXMF}/*

	einfo "Installing other files ..."
	insinto /usr/share/texmf/fonts/map/dvips/tetex
	doins "${WORKDIR}"/${TETEX_S}/texk/pdvipsk/psfonts_jp.map
	#insinto /var/lib/texmf/web2c
	insinto /usr/share/texmf/web2c
	doins -r "${BUILD_DIR}"/share/texmf-config/web2c/*
	doins -r "${BUILD_DIR}"/share/texmf-var/web2c/*.fmt

	einfo "Removing unnecessary files ..."
	rm -r "${D}"/usr/share/texmf/doc
	#rm -r "${D}"/usr/share/texmf-config
	#rm -r "${D}"/usr/share/texmf-var
	rm -r "${D}"/usr/share/texmf/web2c/texmf.cnf.*
	rm -r "${D}"/usr/share/texmf/web2c/fmtutil.cnf.*
	rm -r "${D}"/usr/info/dir
	find "${D}"/usr/share/texmf | grep "ls-R" | xargs rm -f

	einfo "Installing texmf-update scripte ..."
	dosbin "${FILESDIR}"/texmf-update
	#einfo "Making ls-R files ..."
	#TEXMF="${D}"/usr/share/texmf "${D}"/usr/bin/mktexlsr || die
}

pkg_postinst() {
	tetex-3_pkg_postinst

	elog
	elog "Japanese dvips and xdvi have been renamed to pdvipsk and pxdvik."
	#elog "You also need to emerge app-text/dvipdfmx to convert dvi into PDF."
	elog
}