# Maintainer (arch): Rémy Oudompheng <remy@archlinux.org>
# Contributor: francois <francois.archlinux.org>
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
# Contributor: André Silva <emulatorman@hyperbola.info>
# Contributor: Michał Masłowski <mtjm@mtjm.eu>
# Contributor: Isaac David <isacdaavid(at)isacdaavid!info>
# Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
# Contrbutor: bill-auger <bill-auger@programmer.net>


# parabola changes and rationale:
#  - rebrand for parabola
#  - pin to strongly-coupled dependency versions
#  - disable xindy on armv7h


pkgname=('texlive-bin' 'libsynctex')
pkgver=2021.58686
pkgrel=2
pkgrel+=.parabola2
license=('GPL')
arch=('x86_64')
arch+=('i686' 'armv7h')
makedepends=('git' 'cairo' 'pixman' 'graphite' 't1lib' 'gd'
             'libsigsegv' 'zziplib' 'libpng' 'libjpeg' 'freetype2'
             'icu' 'harfbuzz' 'harfbuzz-icu' 'gmp' 'mpfr' 'potrace' 'libpaper'
             'perl' 'clisp' 'ffcall' 'libxcrypt')
[[ "${CARCH}" == 'armv7h' ]] && makedepends=( $(sed -E 's/clisp|ffcall//g' <<<${makedepends[@]}) )
url='https://tug.org/texlive/'
_commit=ccb6338507149edf2772bfccb9933b72761f4cc4 # svn://tug.org/texlive/trunk/Build/source@58686
source=("git+https://github.com/Tex-Live/texlive-source.git#commit=${_commit}")
sha256sums=('SKIP')

prepare() {
    cd "$srcdir/texlive-source"

    # t4ht expects to be un /usr/share/texmf/bin/t4ht (FS#27251)
    sed -i s/SELFAUTOPARENT/TEXMFROOT/ texk/tex4htk/t4ht.c
}

build() {
   cd "$srcdir/texlive-source"

   #############################################################
   ### configure
   mkdir -p Work
   cd Work
   echo "--> Initial configuration..."
   # we use temporary prefix to avoid messing the existing
   # $pkgdir/usr/share/texmf tree
   ../configure --prefix=/usr -C \
     --sysconfdir=/etc \
     --datarootdir=/usr/share \
     --datadir=/usr/share \
     --mandir=/usr/share/man \
     --disable-native-texlive-build \
     --with-banner-add="/Parabola GNU/Linux-libre" \
     --disable-multiplatform \
     --disable-dialog \
     --disable-psutils \
     --disable-t1utils \
     --disable-bibtexu \
     --disable-xz \
     --enable-shared \
     --disable-static \
     --with-system-zlib \
     --with-system-zziplib \
     --with-system-pnglib \
     --with-system-ncurses \
     --with-system-t1lib \
     --with-system-gd \
     --with-system-freetype2 \
     --with-system-pixman \
     --with-system-cairo \
     --with-system-harfbuzz \
     --with-system-graphite \
     --with-system-icu \
     --with-system-gmp \
     --with-system-mpfr \
     --with-system-potrace \
     --with-system-libpaper \
     --with-freetype2-libdir=/usr/lib \
     --with-freetype2-include=/usr/include/freetype2 \
     --with-xdvi-x-toolkit=xaw \
     --disable-dump-share \
     --disable-aleph \
     --enable-luatex \
     --with-clisp-runtime=default \
     $(case "$CARCH" in
         armv7h     ) echo '--disable-xindy --disable-cxx-runtime-hack'                ;;
         x86_64|i686) echo '--enable-xindy --disable-xindy-rules --disable-xindy-docs' ;;
       esac)
   #############################################################
   ### make
   echo "-------------------------------------------------------"
   echo "--> Building the whole beast ..."
   echo "-------------------------------------------------------"
   make
}

package_libsynctex() {
    pkgdesc='Library for synchronization between TeX files and resulting file'
    depends=('glibc' 'zlib')

    cd "${srcdir}/texlive-source/Work"
    make -C texk/web2c DESTDIR="${pkgdir}" \
        install-data-am install-libLTLIBRARIES
}

package_texlive-bin() {
   pkgdesc="TeX Live binaries"
   depends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler'
            'libsigsegv' 'zziplib' 'libpng' 'libjpeg' 'freetype2' 'libxcrypt'
            'icu' 'harfbuzz' 'harfbuzz-icu' 'gmp' 'mpfr' 'potrace' 'libpaper'
            'libsynctex')
   provides=('lcdf-typetools' 'kpathsea' 'xindy')
   optdepends=('ed: for texconfig'
               'biber: for bibliography processing')
   options=('!strip')

   # pin to strongly-coupled dependency versions
   local poppler_ver=$(pacman -S --print-format='%v' poppler | tail -n 1)
   depends=(${depends[*]/poppler/})
   depends+=('libicui18n.so' 'libicuuc.so' "poppler=${poppler_ver}")

   cd "$srcdir/texlive-source"

   #############################################################
   ### install
   # fixes for xindy
   find utils/xindy -name Makefile -exec sed -i -e "s|^prefix =.\+$|prefix = $pkgdir/usr|" -e "s|^mandir =.\+$|mandir = \${prefix}/share/man|" -e "s|^datadir =.\+$|datadir = \${datarootdir}/texmf|" -e "s|^docdir =.\+$|docdir = \${datadir}/doc/xindy|" '{}' \;

   echo "-------------------------------------------------------"
   echo "--> Proceeding with make install ..."
   echo "-------------------------------------------------------"
   cd Work
   make DESTDIR="${pkgdir}" texmf="$pkgdir"/usr/share/texmf install
   rm -rf "${pkgdir}"/usr/{texmf,share/texmf-dist}

   ## symlink engines by hand. texlinks has moved to texlive-core...
   mkdir -p "${pkgdir}"/usr/bin
   ln -s eptex "${pkgdir}"/usr/bin/platex
   ln -s euptex "${pkgdir}"/usr/bin/uplatex
   ln -s luatex "${pkgdir}"/usr/bin/dvilualatex
   ln -s luatex "${pkgdir}"/usr/bin/dviluatex
   ln -s luahbtex "${pkgdir}"/usr/bin/lualatex
   ln -s pdftex "${pkgdir}"/usr/bin/amstex
   ln -s pdftex "${pkgdir}"/usr/bin/cslatex
   ln -s pdftex "${pkgdir}"/usr/bin/csplain
   ln -s pdftex "${pkgdir}"/usr/bin/eplain
   ln -s pdftex "${pkgdir}"/usr/bin/etex
   ln -s pdftex "${pkgdir}"/usr/bin/jadetex
   ln -s pdftex "${pkgdir}"/usr/bin/latex
   ln -s tex "${pkgdir}"/usr/bin/lollipop
   ln -s pdftex "${pkgdir}"/usr/bin/mex
   ln -s pdftex "${pkgdir}"/usr/bin/mllatex
   ln -s pdftex "${pkgdir}"/usr/bin/mltex
   ln -s pdftex "${pkgdir}"/usr/bin/pdfetex
   ln -s pdftex "${pkgdir}"/usr/bin/pdfcslatex
   ln -s pdftex "${pkgdir}"/usr/bin/pdfcsplain
   ln -s pdftex "${pkgdir}"/usr/bin/pdfjadetex
   ln -s pdftex "${pkgdir}"/usr/bin/pdflatex
   ln -s pdftex "${pkgdir}"/usr/bin/pdfmex
   ln -s pdftex "${pkgdir}"/usr/bin/pdfxmltex
   ln -s pdftex "${pkgdir}"/usr/bin/texsis
   ln -s pdftex "${pkgdir}"/usr/bin/utf8mex
   ln -s pdftex "${pkgdir}"/usr/bin/xmltex
   ln -s xetex "${pkgdir}"/usr/bin/xelatex

   #############################################################
   # remove dangling symlinks
   _bibtexextra_scripts="
bbl2bib
bib2gls
bibdoiadd
bibexport
bibmradd
biburl2doi
bibzbladd
convertgls2bib
listbib
ltx2crossrefxml
multibibliography
urlbst
"
   _core_scripts="
a2ping
a5toa4
adhocfilelist
afm2afm
albatross
allcm
allec
allneeded
arara
arlatex
autoinst
bundledoc
checkcites
checklistings
chklref
chkweb
cjk-gs-integrate
cluttex
cllualatex
clxelatex
context
contextjit
ctanbib
ctanify
ctanupload
ctan-o-mat
de-macro
depythontex
deweb
dosepsbin
dtxgen
dvi2fax
dviasm
dviinfox
dvired
e2pall
epstopdf
findhyph
fmtutil
fmtutil-sys
fmtutil-user
fontinst
fragmaster
git-latexdiff
ht
htcontext
htlatex
htmex
httex
httexi
htxelatex
htxetex
installfont-tl
jfmutil
ketcindy
kpsepath
kpsetool
kpsewhere
kpsexpand
latex-git-log
latex-papersize
latex2man
latex2nemeth
latexdef
latexdiff
latexdiff-vc
latexfileversion
latexindent
latexmk
latexpand
latexrevise
listings-ext.sh
llmk
ltxfileinfo
ltximg
luaotfload-tool
luatools
lwarpmk
make4ht
match_parens
mf2pt1
mk4ht
mkjobtexmf
mkt1font
mktexfmt
mktexlsr
mktexmf
mktexpk
mktextfm
mptopdf
mtxrun
mtxrunjit
ot2kpx
pamphletangler
pdfatfi
pdfbook2
pdfcrop
pdfjam
pdflatexpicscale
pdftex-quiet
pdfxup
pfarrei
pkfix
pkfix-helper
ps2eps
ps2frag
pslatex
purifyeps
pythontex
repstopdf
rpdfcrop
rungs
simpdftex
spix
srcredact
sty2dtx
tex4ebook
texconfig
texconfig-dialog
texconfig-sys
texcount
texdef
texdiff
texdirflatten
texdoc
texdoctk
texexec
texfot
texhash
texindy
texlinks
texliveonfly
texloganalyser
texmfstart
texosquery
texosquery-jre5
texosquery-jre8
texplate
thumbpdf
tlcockpit
tlshell
typeoutfileinfo
updmap
updmap-sys
updmap-user
vpl2ovp
vpl2vpl
xhlatex
xindex
$( [[ "$CARCH" != "armv7h" ]] && echo 'xindy')
"
   _games_scripts="rubikrotation"
   _humanities_scripts="diadia"
   _langcyrillic_scripts="rubibtex rumakeindex"
   _langextra_scripts="ebong"
   _langgreek_scripts="mkgrkindex"
   _langjapanese_scripts="convbkmk ptex2pdf
kanji-fontmap-creator
kanji-config-updmap
kanji-config-updmap-sys
kanji-config-updmap-user
"
   _langkorean_scripts="jamo-normalize komkindex ttf2kotexfont"
   _latexextra_scripts="
authorindex
exceltex
hyperxmp-add-bytecount
l3build
makedtx
makeglossaries
makeglossaries-lite
pdfannotextractor
perltex
ps4pdf
splitindex
svn-multi
vpe
webquiz
wordcount
yplan"
   _music_scripts="lily-glyph-commands lily-image-commands lily-rebuild-pdfs
m-tx
musixtex
musixflx
pmxchords"
   _pictures_scripts="
cachepic
epspdf
epspdftk
fig4latex
getmapdl
mathspic
mkpic
pn2pdf
tikztosvg"
   _pstricks_scripts="pedigree pst2pdf"
   _science_scripts="pygmentex ulqda"
   for s in \
        ${_bibtexextra_scripts} \
        ${_core_scripts}        \
        ${_games_scripts}       \
        ${_htmlxml_scripts}     \
        ${_humanities_scripts}   \
        ${_langcyrillic_scripts} \
        ${_langextra_scripts}    \
        ${_langgreek_scripts}    \
        ${_langjapanese_scripts} \
        ${_langkorean_scripts} \
        ${_latexextra_scripts} \
        ${_music_scripts}      \
        ${_pictures_scripts}   \
        ${_pstricks_scripts}   \
        ${_science_scripts}    \
        tlmgr; do
       ! readlink -e "$pkgdir"/usr/bin/$s && rm "$pkgdir"/usr/bin/$s
   done
   ###################################################################

   # remove libsynctex
   rm -f "$pkgdir"/usr/include/synctex/*
   rm -f "$pkgdir"/usr/lib/libsynctex.*
   rm -f "$pkgdir"/usr/lib/pkgconfig/synctex.pc
   rm -f "$pkgdir"/usr/share/man/man*/synctex.*
}
