# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="8"

DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11..13} )

inherit distutils-r1

DESCRIPTION="Transform DocBook using TeX macros"
HOMEPAGE="https://dblatex.sourceforge.net/"
SRC_URI="https://downloads.sourceforge.net/project/dblatex/dblatex/${P}/${PN}3-${PV}.tar.bz2"
S="${WORKDIR}/${PN}3-${PV}"

LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="inkscape test"
RESTRICT="!test? ( test )"

RDEPEND="
	app-text/docbook-xml-dtd:4.5
	dev-libs/kpathsea
	dev-libs/libxslt
	dev-texlive/texlive-fontutils
	dev-texlive/texlive-latex
	dev-texlive/texlive-latexextra
	dev-texlive/texlive-latexrecommended
	dev-texlive/texlive-mathscience
	dev-texlive/texlive-pictures
	dev-texlive/texlive-xetex
	gnome-base/librsvg
	media-gfx/imagemagick
	>=media-gfx/fig2dev-3.2.9-r1
	inkscape? ( media-gfx/inkscape )
"
DEPEND="
	${RDEPEND}
"
BDEPEND="
	${RDEPEND}
	test? ( ~${CATEGORY}/${P}[${PYTHON_USEDEP}] )
"

PATCHES=(
	"${FILESDIR}/${PN}-0.3.11-path-logging.patch"
	"${FILESDIR}/${PN}-0.3.11-setup.patch"
	"${FILESDIR}/${PN}-0.3.11-encode.patch"
	"${FILESDIR}/${P}-replace-imp-by-importlib.patch"
	"${FILESDIR}/${P}-adjust-submodule-imports.patch"
)

python_prepare_all() {
	# Manual page is precomressed, but we will use our own compression later.
	gunzip docs/manpage/dblatex.1.gz || die
	if use inkscape; then
		# If we use inscape we want to make dblatex compatible with v1.0
		eapply "${FILESDIR}/${PN}-0.3.11-inkscape-1.0.patch"
	else
		# If we don't have inkscape we need to use an alternative SVG converter
		eapply "${FILESDIR}/${PN}-0.3.11-no-inkscape-dependency.patch"
	fi

	distutils-r1_python_prepare_all
}

python_install() {
	distutils-r1_python_install

	# After migrating to PEP517 setuptool's distutils behaves a bit differently.
	# Rather than rewriting the entire build setup we follow Debian's path with
	# a predefined script.
	python_newscript - dblatex <<-EOF
		#!${EPREFIX}/usr/bin/python
		import sys
		import os

		package_base = r"${EPREFIX}/usr/share/dblatex"

		from dbtexmf.dblatex import dblatex
		dblatex.main(base=package_base)
	EOF
}

python_install_all() {
	distutils-r1_python_install_all

	# Move package documentation to a folder name containing version number
	mv "${ED}"/usr/share/doc/${PN} "${ED}"/usr/share/doc/${PF} || die
}

python_test() {
	emake -C tests/mathml
}
