# Maintainer: @naveen521kk on Github, Naveen M K <naveen521kk@gmail.com>

_realname=texlive-core
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2023.20230404
_revnr=${pkgver#2023.}
pkgrel=1
pkgdesc="TeX Live core distribution (mingw-w64)"
license=('GPL')
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64')
depends=(
    "${MINGW_PACKAGE_PREFIX}-texlive-bin"
    "${MINGW_PACKAGE_PREFIX}-perl"
)
makedepends=("${MINGW_PACKAGE_PREFIX}-cc")
optdepends=(
    #'dialog:      for texconfig'
    "${MINGW_PACKAGE_PREFIX}-ghostscript: for epstopdf, epspdf and other ConTeXt tools"
    #'java-runtime: for utilities like arara, texplate'
    #'perl-tk:     for texdoctk'
    #'psutils:     to manipulate the output of dvips'
    "${MINGW_PACKAGE_PREFIX}-python:      for de-macro, dviasm, pythontex"
    "${MINGW_PACKAGE_PREFIX}-ruby:        for old ConTeXT MkII and epspdf"
    #"t1utils:     can be useful when installing Type1 fonts"
)
groups=(
    "${MINGW_PACKAGE_PREFIX}-texlive-full"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-basic"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-bookpub"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-full"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-gust"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-medium"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-small"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-tetex"
    "${MINGW_PACKAGE_PREFIX}-texlive-scheme-context"
)
conflicts=(
    "${MINGW_PACKAGE_PREFIX}-texlive-xetex"
    "${MINGW_PACKAGE_PREFIX}-texlive-context"
    "${MINGW_PACKAGE_PREFIX}-texlive-base"
    "${MINGW_PACKAGE_PREFIX}-texlive-latex-base"
)
provides=(
    "${MINGW_PACKAGE_PREFIX}-texlive-xetex"
    "${MINGW_PACKAGE_PREFIX}-texlive-context"
    "${MINGW_PACKAGE_PREFIX}-texlive-base"
    "${MINGW_PACKAGE_PREFIX}-texlive-latex-base"
)
replaces=(
    "${MINGW_PACKAGE_PREFIX}-texlive-xetex"
    "${MINGW_PACKAGE_PREFIX}-texlive-context"
    "${MINGW_PACKAGE_PREFIX}-texlive-base"
    "${MINGW_PACKAGE_PREFIX}-texlive-latex-base"
)
url='https://tug.org/texlive/'
source=("${_realname}-${_revnr}.tar.xz::https://github.com/msys2/msys2-texlive/releases/download/${_revnr}/texlive-core-${_revnr}.tar.xz"
    "${_realname}-extra-files.tar.xz::https://github.com/msys2/msys2-texlive/releases/download/${_revnr}/${_realname}-extra-files.tar.xz"
    "mktexlsr.hook.in"
    "mktexlsr.script.in"
    "texlive-updmap.hook.in"
    "texlive-updmap.script.in"
    "texlive-fmtutil.hook.in"
    "texlive-fmtutil.script.in"
    "texmf.cnf.in"
    "texmfcnf.lua.in"
    "09-texlive-fonts.conf.in")
install=${_realname}-${MSYSTEM}.install
backup=("${MINGW_PREFIX:1}/etc/texmf/web2c/texmf.cnf"
    "${MINGW_PREFIX:1}/etc/texmf/dvipdfmx/dvipdfmx.cfg"
    "${MINGW_PREFIX:1}/etc/texmf/dvips/config/config.ps"
    "${MINGW_PREFIX:1}/etc/texmf/tex/generic/config/language.dat"
    "${MINGW_PREFIX:1}/etc/texmf/tex/generic/config/language.def"
    "${MINGW_PREFIX:1}/etc/texmf/tex/generic/tex-ini-files/pdftexconfig.tex"
    #"${MINGW_PREFIX:1}/etc/texmf/ttf2pk/ttf2pk.cfg"
    "${MINGW_PREFIX:1}/etc/texmf/web2c/fmtutil.cnf"
    "${MINGW_PREFIX:1}/etc/texmf/web2c/mktex.cnf"
    "${MINGW_PREFIX:1}/etc/texmf/xdvi/XDvi")
sha256sums=('46637e1e2ad574b3ca518b9c01b9a85f670e24c2ddf3c2eb7b31610c7c17f06e'
            'f6945ee9fd006af0d909edfc06d45c2daea07ea753fb7bdc4fa29c76fd0f45d6'
            '542f68cd8e1a00f1598db8532e70e1bb77adc0516daee84e5aa92707f58fdf04'
            '773e9c8f60c4241a57adafda8abac765c53f7e6e24c86b87366b037ade29077b'
            'bffaa8a7f5d78aed138a760dfa1073ad7c419a61a9739cafbc28dce330aae911'
            'e154d58543dc8d9957f502b3d162023f0be4a650860d3be5289ff2ac880ccca2'
            'd615d040d1943bcdf7b1c7a649644a7bd47703317b79963062a058e1300602f3'
            'dd286733d0b596708ee049aa22d641129d20f61113298c6f11ad37500bf9f1fb'
            '3d65f3babd5306d85e32ff427a86f94004f10270dd00f11694ea4699abf10d40'
            '8ededf35132ffbe26434c0c778b3d4a159ce428452abe6ebc8d94161f02bd7e9'
            '87eddde958848d041ded1625e14009e89b3bd5953e7ae39b6aac2f65d3856485')

build() {
    cd "$srcdir"
    msg "   --> extracting all packages... "
    for p in *.tar.xz; do
        bsdtar -xf $p
        echo $p
    done
    echo "done"
    rm -rf source doc
}

copy_file_message() {
    local from="$1"
    local to="$2"
    msg2 "Copying $from to $to"
    cp $from $to
}

package() {
    cd "$srcdir"

    msg "Installing Pacman hooks"
    # First lets sed all files for prefix changes.
    for hook in 'mktexlsr' 'texlive-fmtutil' 'texlive-updmap'; do
        local hook_path="${srcdir}/${MINGW_PACKAGE_PREFIX}-${hook}.hook"
        cp "${srcdir}/${hook}.hook.in" "${hook_path}"
        sed -s "s|@MINGW_HOOK_TARGET_PREFIX@|${MINGW_PREFIX:1}|g" -i "${hook_path}"
        sed -s "s|@MINGW_PREFIX@|${MINGW_PREFIX}|g" -i "${hook_path}"
        sed -s "s|@MINGW_PACKAGE_PREFIX@|${MINGW_PACKAGE_PREFIX}|g" -i "${hook_path}"
        sed -s "s|@TEMP@|$(cygpath -w $TMP)|g" -i "${hook_path}"
        install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 "${hook_path}"
    done

    for script in 'mktexlsr' 'texlive-fmtutil' 'texlive-updmap'; do
        local script_path="${srcdir}/${MINGW_PACKAGE_PREFIX}-${script}.script"
        cp "${srcdir}/${script}.script.in" "${script_path}"
        sed -s "s|@MINGW_PREFIX@|${MINGW_PREFIX}|g" -i "${script_path}"
        sed -s "s|@MINGW_HOOK_TARGET_PREFIX@|${MINGW_PREFIX:1}|g" -i "${script_path}"
        install -Dt "$pkgdir/usr/share/libalpm/scripts" -m644 "${script_path}"
    done

    for file_conf in '09-texlive-fonts.conf' 'texmfcnf.lua' 'texmf.cnf'; do
        local conf_path="${srcdir}/${file_conf}"
        cp "${srcdir}/${file_conf}.in" "${conf_path}"
        sed -s "s|@MINGW_HOOK_TARGET_PREFIX@|${MINGW_PREFIX:1}|g" -i "${conf_path}"
        sed -s "s|@MINGW_PREFIX@|${MINGW_PREFIX}|g" -i "${conf_path}"
        sed -s "s|@MINGW_PACKAGE_PREFIX@|${MINGW_PACKAGE_PREFIX}|g" -i "${conf_path}"
        sed -s "s|@TEMP@|$(cygpath -u $TMP)|g" -i "${conf_path}"
    done

    msg "Installing Package"
    # Install packages.
    install -m755 -d "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs"
    sed -i '/^#/d' CONTENTS
    install -m644 CONTENTS "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/${pkgname}_${_revnr}.pkgs"
    install -m644 $_realname.maps "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/"
    install -m644 $_realname.fmts "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/"

    # language files for hooks
    sed -i 's/\% test//' $_realname.dat
    install -m644 $_realname.dat "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/"

    sed -i 's/-- test//' $_realname.dat.lua
    install -m644 $_realname.dat.lua "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/"

    sed -i 's/\% test//' $_realname.def
    install -m644 $_realname.def "${pkgdir}${MINGW_PREFIX}/var/lib/texmf/msys2/installedpkgs/"

    install -m755 -d "${pkgdir}${MINGW_PREFIX}/share"
    wanteddirs=$(for d in *; do test -d $d && [[ $d != texmf* ]] && echo $d; done) || true
    for dir in $wanteddirs; do
        find $dir -type d -exec install -d -m755 "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/'{}' \;
        find $dir -type f -exec install -m644 '{}' "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/'{}' \;
    done
    find texmf-dist -type d -exec install -d -m755 "${pkgdir}${MINGW_PREFIX}"/share/'{}' \;
    find texmf-dist -type f -exec install -m644 '{}' "${pkgdir}${MINGW_PREFIX}"/share/'{}' \;
    find texmf-dist -type f -executable -exec chmod 755 "${pkgdir}${MINGW_PREFIX}"/share/'{}' \;

    #############################################################
    ### install texmf tree
    msg "Installing the /etc/texmf tree"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/web2c/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/chktex/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/dvips/config/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/dvipdfmx/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/config/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/tex-ini-files/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/ttf2pk/"
    install -d -m755 "${pkgdir}${MINGW_PREFIX}/etc/texmf/xdvi/"

    install -d -m755 "${pkgdir}${MINGW_PREFIX}/share/fontconfig/conf.avail"
    install -m644 "$srcdir"/09-texlive-fonts.conf \
        "${pkgdir}${MINGW_PREFIX}/share/fontconfig/conf.avail/"

    # Remove manpages (already in texlive-bin).
    rm -rf "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/doc/man"

    msg "Copying config files to TEXMFCONFIG tree"
    # copy config files to $TEXMFCONFIG tree
    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/web2c/mktex.cnf" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/web2c/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/web2c/updmap-hdr.cfg" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/web2c/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/web2c/fmtutil-hdr.cnf" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/web2c/fmtutil.cnf"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/dvips/config/config.ps" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/dvips/config/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/dvipdfmx/dvipdfmx.cfg" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/dvipdfmx/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/tex/generic/tex-ini-files/pdftexconfig.tex" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/tex-ini-files/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/tex/generic/config/language.us" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/config/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/tex/generic/config/language.us.def" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/config/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/tex/generic/config/language.us.lua" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/tex/generic/config/"

    # collection fontutils
    # copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/ttf2pk/ttf2pk.cfg" \
    # 	  "${pkgdir}${MINGW_PREFIX}/etc/texmf/ttf2pk/"

    copy_file_message "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/xdvi/XDvi" \
        "${pkgdir}${MINGW_PREFIX}/etc/texmf/xdvi/"

    msg 'remove TL specific warnings in the language.{dat,def} files'
    # remove TL specific warnings in the language.{dat,def} files:
    sed -i -e '/DO NOT EDIT/,+3 d' "${pkgdir}${MINGW_PREFIX}"/etc/texmf/tex/generic/config/language.*

    msg "Replace upstream texmf.cnf with ours"
    # replace upstream texmf.cnf with ours
    rm -f "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/web2c/texmf.cnf
    install -m644 "$srcdir"/texmf.cnf "${pkgdir}${MINGW_PREFIX}"/etc/texmf/web2c/texmf.cnf
    install -m644 "${pkgdir}${MINGW_PREFIX}"/etc/texmf/web2c/texmf.cnf "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/web2c/texmf.cnf
    # replace upstream texmfcnf.lua with ours
    install -m644 "$srcdir"/texmfcnf.lua "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/web2c/texmfcnf.lua

    msg "Configure Languages Hypens"
    # remove upstream's language.*
    rm -f "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/tex/generic/config/language.dat
    rm -f "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/tex/generic/config/language.def
    rm -f "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/tex/generic/config/language.dat.lua

    msg "Install Perl libraries"
    # install Perl libraries
    mv "${pkgdir}${MINGW_PREFIX}"/share/texmf-dist/tlpkg "${pkgdir}${MINGW_PREFIX}"/share
    rm -rf "${pkgdir}${MINGW_PREFIX}"/share/tlpkg/tlpobj

    msg "remove Upstream updmap.cfg and fmtutil.cnf"
    # remove upstream updmap.cfg: it contains too many maps.
    rm "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/web2c/updmap.cfg"
    # remove upstream fmtutil.cnf: it will be autogenerated
    rm "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/web2c/fmtutil.cnf"

    # Create lauchers for all these Scripts.
    # There is a `runscript.exe` which can be copied
    # with these script names and things should work
    # automatically. It is from texlive-bin
    msg "Creating Launchers."
    # get the list from
    # this should be in source.
    # remove comment
    sed -i 's/# This file contains linked scripts list for the package.//' "${srcdir}/${_realname}.scripts"
    # remove useless files
    sed -i /.*NEWS/d "${srcdir}/${_realname}.scripts"

    . "${srcdir}/${_realname}.scripts"
    install -m755 -d "${pkgdir}${MINGW_PREFIX}"/bin
    for _script in ${linked_scripts}; do
        _scriptbase=$(basename $_script)
        _scriptbase=${_scriptbase%.*}
        install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/${_scriptbase}.exe"
    done

    # now copy mktexlsr
    install -D -m755 "${pkgdir}${MINGW_PREFIX}/share/texmf-dist/scripts/texlive/mktexlsr.pl" \
        "${pkgdir}${MINGW_PREFIX}/bin/mktexlsr"

    # copy mtxrun.lua, this is required for some scripts
    install -D -m755 "${srcdir}/texmf-dist/scripts/context/lua/mtxrun.lua" \
        "${pkgdir}${MINGW_PREFIX}/bin/mtxrun.lua"

    msg "Creating additional symlinks."

    # additional installs links
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/allec.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/cllualatex.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/clxelatex.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/repstopdf.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/kpsepath.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/kpsexpand.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/mkluatexfontdb.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/rpdfcrop.exe"
    install -D -m755 ${MINGW_PREFIX}/bin/runscript.exe "${pkgdir}${MINGW_PREFIX}/bin/latexdef.exe"
}
