# Template file for 'texlive'
pkgname=texlive
version=20260301
revision=2
_year=${version%${version#????}}
_svn_tag=svn78399
build_wrksrc="build"
build_style=gnu-configure
configure_script="../configure"
configure_args="
 --prefix=/usr
 --sysconfdir=/etc
 --datarootdir=/usr/share
 --datadir=/usr/share
 --mandir=/usr/share/man
 --infodir=/usr/share/info
 --enable-biber
 --enable-dvipng
 --enable-dvipsk
 --enable-epsfwin
 --enable-ipc
 --enable-luahbtex
 --enable-luatex
 --enable-mflua
 --enable-mftalkwin
 --enable-ps2eps
 --enable-psutils
 --enable-regiswin
 --enable-shared
 --enable-tektronixwin
 --enable-unitermwin
 --enable-xetex
 --disable-bibtex-x
 --disable-chktex
 --disable-cjkutils
 --disable-detex
 --disable-dialog
 --disable-dvi2tty
 --disable-dvisvgm
 --disable-largefile
 --disable-lcdf-typetools
 --disable-multiplatform
 --disable-native-texlive-build
 --disable-pdfopen
 --disable-ps2pkm
 --disable-t1utils
 --disable-tex4htk
 --disable-ttf2pk2
 --disable-vlna
 --disable-xindy
 --disable-xpdfopen
 --with-banner-add=/VoidLinux
 --with-ps=gs
 --with-system-cairo
 --with-system-freetype2
 --with-system-gd
 --with-system-gmp
 --with-system-graphite2
 --with-system-harfbuzz
 --with-system-icu
 --with-system-libpaper
 --with-system-libpng
 --with-system-mpfr
 --with-system-pixman
 --with-system-teckit
 --with-system-zlib
 --with-system-zziplib
 --with-xdvi-x-toolkit=Xaw"
hostmakedepends="pkg-config perl lua52-BitOp texinfo libXaw-devel"
makedepends="cairo-devel freetype-devel gd-devel graphite-devel gmp-devel
 harfbuzz-devel icu-devel libpaper-devel libpng-devel mpfr-devel
 pixman-devel libteckit-devel zlib-devel zziplib-devel libXaw-devel"
depends="dialog ghostscript perl-Tk texlive-core>=${version}_1 xbps-triggers
 texlive-latexmk latexindent"
checkdepends="diffutils"
short_desc="TeX Live"
maintainer="dkwo <npiazza@disroot.org>"
license="GPL-2.0-or-later"
homepage="https://tug.org/texlive/"
distfiles="https://github.com/TeX-Live/texlive-source/archive/refs/tags/${_svn_tag}.tar.gz"
checksum=f28373c92760228b79bb99994d4dfdaa0a143fd9ef8f78b6706aca53f0d60114
python_version=3
# Virtual package cares only about year part of version
provides="tex-${_year}_1"
triggers="texmf-dist"

if [ -n "${CROSS_BUILD}" ] ; then
	# Tangle is required for cross compile
	hostmakedepends+=" texlive"
	# fixme: ld: cannot find -lgdi32: No such file or directory
	configure_args+=" --disable-xdvipsk"
fi

build_options="luajit"

# fixme: use system luajit when it will be available
# https://tug.org/pipermail/tex-live/2025-January/051045.html

if [ ! "${CROSS_BUILD}"] ; then
	build_options_default+=" luajit"
fi

if [ -n "${build_option_luajit}" ] ; then
	configure_args+="
		--enable-mfluajit
		--enable-mfluajit-nowin
		--enable-luajittex
		--enable-luajithbtex"
else
	configure_args+="
		--with-system-luajit
		--disable-luajittex
		--disable-mfluajit
		--disable-mfluajit-nowin
		--disable-luajithbtex"
fi

post_extract() {
	mkdir -p "${build_wrksrc}"
	cp -rf texk/web2c "${build_wrksrc}/web2c-host"

	# https://tug.org/pipermail/tlbuild/2025q1/005635.html
	if [ -n "${CROSS_BUILD}" ] ; then
		sed -i 's|\./himktables\$(EXEEXT)|#\./himktables\$(EXEEXT)|' texk/web2c/Makefile.in
		cp texk/web2c/hitexdir/hitables.c texk/web2c/hitables.c
	fi

	# fixme: texlive's build system blindly configures everything
	if [ ! "${build_option_luajit}" ] ; then
		rm -r libs/luajit
	fi
}

pre_build() {
	# fixme: web2c should not be cross
	mkdir -p "${wrksrc}/build/texk/web2c/web2c"
	cd "${wrksrc}/build/texk/web2c/web2c"
	unset CC CXX
	CFLAGS="$XBPS_CFLAGS" LDFLAGS="$XBPS_LDFLAGS" RANLIB=ranlib \
		../../../../texk/web2c/web2c/configure

	# Replace configure script with dummy script
	cd "${wrksrc}"
	cat > texk/web2c/web2c/configure << EOF
#!/bin/sh
printf "already complete\\n"
EOF
}

post_install() {
	# trick from Alpine Linux
	if [ ! "${CROSS_BUILD}" ] ; then
		export PATH="${DESTDIR}/usr/bin:$PATH"
		export LD_LIBRARY_PATH="${DESTDIR}/usr/lib:$LD_LIBRARY_PATH"
	fi
	texlinks -f ${DESTDIR}/usr/share/texmf-dist/web2c/fmtutil.cnf $DESTDIR/usr/bin

	# These tools are still useful for a texlive workflow, but are modified
	# psutils and conflict with psutils; rename them to have a tl- prefix
	for f in extractres includeres psbook psjoin psnup psresize psselect \
			 pstops epsffit ; do
		mv "${DESTDIR}/usr/share/man/man1/"{,tl-}"${f}.1"
		mv "${DESTDIR}/usr/bin/"{,tl-}"${f}"
	done

	rm -rf ${DESTDIR}/usr/share/texmf-dist
	rm -f ${DESTDIR}/usr/bin/tlmgr
}

subpackages="texlive-XeTeX texlive-LuaTeX texlive-LuaTeX-devel texlive-Xdvi
 libsynctex texlive-devel texlive-ConTeXt texlive-PythonTeX texlive-latexmk
 latexindent texlive-BibTeX texlive-dvi"

texlive-XeTeX_package() {
	depends="${sourcepkg}>=${version}_${revision} texlive-dvi"
	short_desc+=" - engine supporting modern typography"
	pkg_install() {
		vmove usr/bin/xetex
		vmove usr/share/man/man1/xe*.1
		vmove usr/bin/xelatex
		vmove usr/bin/xelatex-dev
	}
}

texlive-dvi_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - tools for dvi based workflow"
	pkg_install() {
		for i in afm2tfm bbox tl-extractres tl-includeres tl-psbook tl-psjoin \
				 tl-psnup tl-psresize tl-psselect tl-pstops ; do
			vmove "usr/bin/${i}"
			vmove "usr/share/man/man1/${i}.1"
		done
		vmove usr/bin/dvi*
		for _i in xdvipdfmx extractbb ebb ; do
			vmove "usr/bin/${_i}"
		done
		vmove usr/share/man/man1/xdvipdfmx.1
	}
}

texlive-LuaTeX_package() {
	depends="${sourcepkg}>=${version}_${revision} bash"
	short_desc+=" - extended pdfTeX using Lua"
	pkg_install() {
		if [ "$build_option_luajit" ] ; then
			for i in luajittex luajithbtex mfluajit mfluajit-nowin texluajit \
					 texluajitc ; do
				vmove "usr/bin/${i}"
			done
		fi
		for i in checkcites citeproc-lua cllualatex cluttex clxelatex \
			 diadia digestif dvilualatex dvilualatex-dev dviluatex \
			 explcheck getmapdl l3build l3sys-query llmk \
			 luacsplain luafindfont luahbtex lualatex lualatex-dev luaotfload-tool \
			 luatex lwarpmk makeglossaries-lite markdown2tex mflua \
			 mflua-nowin musixflx musixtex optex pmxchords \
			 ppmcheckpdf ptex2pdf rungs runtexfile runtexshebang \
			 show-pdf-tags texfindpkg texlua texluac xindex ; do
			vmove "usr/bin/${i}"
		done
		for i in dviluatex dvilualatex-dev luahbtex luajittex lualatex-dev luatex texlua texluac ; do
			vmove "usr/share/man/man1/${i}.1"
		done
		vmove "usr/lib/libtexlua*.so.*"
		if [ -f "${DESTDIR}/usr/bin/xdvipsk" ]; then
			vmove usr/bin/xdvipsk
			vmove usr/share/man/man1/xdvipsk.1
		fi
	}
}

texlive-LuaTeX-devel_package() {
	depends="${sourcepkg}-devel>=${version}_${revision}
	 ${sourcepkg}-LuaTeX>=${version}_${revision}"
	short_desc+=" - extended pdfTeX using Lua - development files"
	pkg_install() {
		for i in texlua53 $(vopt_if luajit texluajit); do
			vmove "usr/include/${i}"
			vmove "usr/lib/lib${i}.a"
			vmove "usr/lib/lib${i}.so"
			vmove "usr/lib/pkgconfig/${i}.pc"
		done
	}
}

texlive-Xdvi_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - displaying DVI files on the X window system"
	pkg_install() {
		for i in xdvi xdvi-xaw ; do
			vmove "usr/bin/${i}"
		done
		for i in xdvi ; do
			vmove "usr/share/man/man1/${i}.1"
		done
		vmove usr/share/applications/xdvi.desktop
	}
}

libsynctex_package() {
	short_desc+=" - libsynctex"
	pkg_install() {
		vmove "usr/lib/libsynctex.so.*"
	}
}

texlive-devel_package() {
	depends="${sourcepkg}>=${version}_${revision}"
	short_desc+=" - development files"
	pkg_install() {
		for i in kpathsea ptexenc synctex; do
			vmove "usr/include/${i}"
			vmove "usr/lib/lib${i}.a"
			vmove "usr/lib/lib${i}.so"
			vmove "usr/lib/pkgconfig/${i}.pc"
		done
	}
}

texlive-BibTeX_package() {
	depends="${sourcepkg}>=${version}_${revision} bash"
	replaces="texlive-bibtexextra<=2024_1"
	short_desc+=" - reference management software"
	pkg_install() {
		for i in bbl2bib ctanbib ; do
			vmove "usr/bin/${i}"
		done
		vmove usr/bin/bib*
		vmove usr/share/man/man1/bibtex.1
	}
}

texlive-ConTeXt_package() {
	metapackage=yes
	short_desc+=" (transitional package)"
	depends="texlive>=${version}_${revision}"
}

texlive-PythonTeX_package() {
	depends="${sourcepkg}>=${version}_${revision} python3"
	short_desc+=" - executing Python in LaTeX"
	pkg_install() {
		vmove usr/bin/*pythontex
	}
}

texlive-latexmk_package() {
	depends="perl"
	short_desc+=" - script for compiling the correct number of times"
	pkg_install() {
		vmove usr/bin/latexmk
	}
}

latexindent_package() {
	depends="perl perl-File-HomeDir perl-Tk perl-Unicode-LineBreak perl-YAML-Tiny"
	short_desc="Script to add indentation to LaTeX files"
	pkg_install() {
		vmove usr/bin/latexindent
	}
}
