template 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. # Template file for 'texlive'
  2. pkgname=texlive
  3. version=20200406
  4. revision=3
  5. wrksrc="texlive-${version}-source"
  6. build_wrksrc="build"
  7. build_style=gnu-configure
  8. configure_script="../configure"
  9. configure_args="
  10. --enable-biber
  11. --enable-epsfwin
  12. --enable-ipc
  13. --enable-luajittex
  14. --enable-luajithbtex
  15. --enable-mfluajit
  16. --enable-mfluajit-nowin
  17. --enable-luatex
  18. --enable-luahbtex
  19. --enable-mflua
  20. --enable-mfluajit
  21. --enable-mfluajit-nowin
  22. --enable-mftalkwin
  23. --enable-regiswin
  24. --enable-shared
  25. --enable-tektronixwin
  26. --enable-unitermwin
  27. --enable-xetex
  28. --enable-dvipng
  29. --enable-dvipsk
  30. --enable-ps2eps
  31. --enable-psutils
  32. --disable-bibtex-x
  33. --disable-chktex
  34. --disable-cjkutils
  35. --disable-detex
  36. --disable-dialog
  37. --disable-dvi2tty
  38. --disable-dvisvgm
  39. --disable-largefile
  40. --disable-lcdf-typetools
  41. --disable-multiplatform
  42. --disable-native-texlive-build
  43. --disable-pdfopen
  44. --disable-ps2pkm
  45. --disable-t1utils
  46. --disable-tex4htk
  47. --disable-ttf2pk2
  48. --disable-vlna
  49. --disable-xindy
  50. --with-ps=gs
  51. --with-banner-add=/Ymir GNU/Linux-libre
  52. --with-system-cairo
  53. --with-system-freetype2
  54. --with-system-gd
  55. --with-system-graphite2
  56. --with-system-gmp
  57. --with-system-harfbuzz
  58. --with-system-icu
  59. --with-system-libpaper
  60. --with-system-libpng
  61. --with-system-mpfr
  62. --with-system-poppler
  63. --with-system-pixman
  64. --with-system-teckit
  65. --with-system-xpdf
  66. --with-system-zlib
  67. --with-system-zziplib
  68. --with-xdvi-x-toolkit=Xaw"
  69. hostmakedepends="pkg-config perl lua52-BitOp texinfo"
  70. makedepends="cairo-devel freetype-devel gd-devel graphite-devel gmp-devel
  71. harfbuzz-devel icu-devel libpaper-devel libpng-devel mpfr-devel
  72. poppler-devel pixman-devel libteckit-devel zlib-devel zziplib-devel
  73. libXaw-devel"
  74. depends="dialog ghostscript perl-Tk texlive-core xbps-triggers>=0.115_1"
  75. short_desc="TeX Live"
  76. maintainer="fosslinux <fosslinux@aussies.space>"
  77. license="GPL-2.0-or-later"
  78. homepage="https://www.tug.org/texlive/"
  79. distfiles="ftp://tug.org/texlive/historic/2020/texlive-${version}-source.tar.xz"
  80. checksum=e32f3d08cbbbcf21d8d3f96f2143b64a1f5e4cb01b06b761d6249c8785249078
  81. python_version=3
  82. # Virtual package cares only about year part of version
  83. provides="tex-${version%${version#????}}_1"
  84. if [ "$CROSS_BUILD" ] ; then
  85. # Tangle is required for cross compile
  86. hostmakedepends+=" texlive"
  87. fi
  88. case "$XBPS_TARGET_MACHINE" in
  89. mips*) broken="cannot find libraries" ;;
  90. esac
  91. build_options="luajit"
  92. _luajit_host_cc="cc"
  93. if [ "$XBPS_WORDSIZE" != "$XBPS_TARGET_WORDSIZE" ] ; then
  94. case "$XBPS_MACHINE" in
  95. x86_64*)
  96. hostmakedepends+=" cross-i686-linux-musl"
  97. _luajit_host_cc="i686-linux-musl-gcc -static"
  98. ;;
  99. ppc64le*) _luajit_host_cc="broken" ;; # no 32-bit counterpart yet
  100. ppc64*)
  101. hostmakedepends+=" cross-powerpc-linux-musl"
  102. _luajit_host_cc="powerpc-linux-musl-gcc -static"
  103. ;;
  104. *) _luajit_host_cc="broken" ;;
  105. esac
  106. fi
  107. if [ "${_luajit_host_cc}" != "broken" ] ; then
  108. build_options_default+=" luajit"
  109. fi
  110. if [ ! "$build_option_luajit" ] ; then
  111. configure_args+=" --disable-luajittex --disable-mfluajit
  112. --disable-mfluajit-nowin --disable-luajithbtex"
  113. else
  114. if [ "${_luajit_host_cc}" = "broken" ] ; then
  115. nocross="Cannot cross compile LuaJIT for different wordsizes"
  116. fi
  117. fi
  118. case "$XBPS_TARGET_MACHINE" in
  119. aarch64*) DASM_ARCH=arm64 ;;
  120. arm*) DASM_ARCH=arm ;;
  121. mips64*) DASM_ARCH=mips64 ;;
  122. mips*) DASM_ARCH=mips ;;
  123. ppc*) DASM_ARCH=ppc ;;
  124. i686*) DASM_ARCH=x86 ;;
  125. x86_64*) DASM_ARCH=x64 ;;
  126. esac
  127. export DASM_ARCH
  128. post_extract() {
  129. # pdftex poppler compatibility
  130. cp -pv texk/web2c/pdftexdir/pdftoepdf{-poppler0.76.0,}.cc
  131. cp -pv texk/web2c/pdftexdir/pdftosrc{-poppler0.76.0,}.cc
  132. mkdir -p "${build_wrksrc}"
  133. cp -rf texk/web2c "${build_wrksrc}/web2c-host"
  134. }
  135. post_patch() {
  136. pushd "${wrksrc}/libs/luajit/LuaJIT-src"
  137. # Apply all LuaJIT patches first
  138. for i in ${XBPS_SRCPKGDIR}/LuaJIT/patches/*.patch ; do
  139. # This patch breaks the build
  140. if [ "$(basename ${i})" != "get-rid-of-luajit-version-sym.patch" ] ; then
  141. msg_normal "patching: $(basename ${i})\n"
  142. patch -sNp0 -i ${i}
  143. fi
  144. done
  145. # Per-architecture patches
  146. # ppc/ppc64: LuaJIT patches
  147. local patchdir
  148. case "$XBPS_TARGET_MACHINE" in
  149. ppc64*) patchdir="ppc64" ;;
  150. ppc*) patchdir="ppc" ;;
  151. *) popd; return ;;
  152. esac
  153. for i in ${XBPS_SRCPKGDIR}/LuaJIT/files/patches/${patchdir}/*.patch ; do
  154. msg_normal "patching: $(basename ${i})\n"
  155. patch -sNp0 -i ${i}
  156. done
  157. popd
  158. }
  159. pre_configure() {
  160. if [ "$CROSS_BUILD" ] ; then
  161. # For some reason, when cross-building, the configure script has this path
  162. # for freetype2 include:
  163. # /usr/x86_64-linux-musl/usr/x86_64-linux-musl/usr/include/freetype2.
  164. # It shouldn't have two /usr/x86_64-linux-musl's, add it to CPPFLAGS.
  165. CPPFLAGS="-I${XBPS_CROSS_BASE}/usr/include/freetype2"
  166. fi
  167. }
  168. pre_build() {
  169. if [ -n "$build_option_luajit" ] ; then
  170. export HOST_CC="${_luajit_host_cc}"
  171. export HOSTCC="${_luajit_host_cc}"
  172. if [ -n "$CROSS_BUILD" ] ; then
  173. # LuaJIT configure script does not cross compile correctly
  174. local _cflags=$CFLAGS
  175. local _ldflags=$LDFLAGS
  176. unset CFLAGS LDFLAGS
  177. mkdir -p "${wrksrc}/build/libs/luajit/native"
  178. cd "${wrksrc}/build/libs/luajit/native"
  179. PREFIX=/usr HOST_LUA=lua5.2 HOST_CFLAGS="$XBPS_CFLAGS" \
  180. HOST_LDFLAGS="$XBPS_LDFLAGS" TARGET_CFLAGS="${_cflags}" \
  181. TARGET_LDFLAGS="${_ldflags}" CROSS="${XBPS_CROSS_TRIPLET}-" \
  182. ../../../../libs/luajit/native/configure \
  183. --build=${XBPS_TRIPLET} \
  184. --host=${XBPS_CROSS_TRIPLET} \
  185. --target=${XBPS_CROSS_TRIPLET}
  186. CFLAGS="${_cflags}"
  187. LDFLAGS="${_ldflags}"
  188. # Replace configure script with dummy script
  189. cd "${wrksrc}"
  190. cat > libs/luajit/native/configure << EOF
  191. #!/bin/sh
  192. printf "already complete\\n"
  193. EOF
  194. fi
  195. fi
  196. # web2c should not be cross
  197. mkdir -p "${wrksrc}/build/texk/web2c/web2c"
  198. cd "${wrksrc}/build/texk/web2c/web2c"
  199. unset CC CXX
  200. CFLAGS="$XBPS_CFLAGS" LDFLAGS="$XBPS_LDFLAGS" RANLIB=ranlib \
  201. ../../../../texk/web2c/web2c/configure
  202. # Replace configure script with dummy script
  203. cd "${wrksrc}"
  204. cat > texk/web2c/web2c/configure << EOF
  205. #!/bin/sh
  206. printf "already complete\\n"
  207. EOF
  208. }
  209. post_install() {
  210. cp -rf ${wrksrc}/texk/tests/TeXLive \
  211. "${DESTDIR}/usr/share/texmf-dist/scripts/texlive"
  212. sed -i -e 's:^\(TEXMFROOT *= *\)$SELFAUTOPARENT$:\1/usr/share:g' \
  213. "${DESTDIR}/usr/share/texmf-dist/web2c/texmf.cnf"
  214. # Remove files provided by other texlive-* packages
  215. while IFS=' ' read -r f p ; do
  216. if [ "$p" = "$pkgname" ] && ! [ -e "${DESTDIR}/usr/share/texmf-dist/${f}" ]; then
  217. msg_error "$pkgver: missing file $f\n"
  218. elif [ "$p" != "$pkgname" ] && [ -e "${DESTDIR}/usr/share/texmf-dist/${f}" ]; then
  219. echo "removed $f"
  220. mkdir -p ${DESTDIR}/usr/share/texlive/removed
  221. echo "$f" >> ${DESTDIR}/usr/share/texlive/removed/$pkgname.txt
  222. rm -f "${DESTDIR}/usr/share/texmf-dist/$f"
  223. fi
  224. done < "${XBPS_COMMONDIR}/environment/build-style/texmf/ownership.txt"
  225. for cmd in amstex cslatex csplain eplain etex jadetex latex mex llatex \
  226. mltex mllatex pdfetex pdfcslatex pdfcsplain pdfjadetex \
  227. pdflatex pdfmex pdfxmltex texsis utf8mex xmltex ; do
  228. ln -s pdftex "${DESTDIR}/usr/bin/${cmd}"
  229. done
  230. for cmd in lollipop ; do
  231. ln -s tex "${DESTDIR}/usr/bin/${cmd}"
  232. done
  233. ln -s eptex "${DESTDIR}/usr/bin/platex"
  234. ln -s euptex "${DESTDIR}/usr/bin/uplatex"
  235. # Create tlmgr smallscript
  236. rm -f "${DESTDIR}/usr/bin/tlmgr"
  237. vbin "${FILESDIR}/tlmgr"
  238. }
  239. texlive-XeTeX_package() {
  240. depends="${sourcepkg}>=${version}_${revision}"
  241. short_desc+=" - engine supporting modern typography"
  242. pkg_install() {
  243. vmove usr/bin/xetex
  244. ln -s xetex "${PKGDESTDIR}/usr/bin/xelatex"
  245. }
  246. }
  247. texlive-dvi_package() {
  248. depends="${sourcepkg}>=${version}_${revision}"
  249. short_desc+=" - tools for dvi based workflow"
  250. pkg_install() {
  251. for i in afm2tfm bbox epsffit extractres includeres ps2eps psbook psjoin \
  252. psnup psresize psselect pstops ; do
  253. vmove "usr/bin/${i}"
  254. done
  255. vmove usr/bin/dvi*
  256. }
  257. }
  258. texlive-LuaTeX_package() {
  259. depends="${sourcepkg}>=${version}_${revision} bash"
  260. short_desc+=" - extended pdfTeX using Lua"
  261. pkg_install() {
  262. if [ "$build_option_luajit" ] ; then
  263. for i in luajittex mfluajit mfluajit-nowin luajithbtex texluajit \
  264. texluajitc ; do
  265. vmove "usr/bin/${i}"
  266. done
  267. fi
  268. for i in checkcites cllualatex cluttex diadia getmapdl l3build luahbtex \
  269. luaotfload-tool luatools luatex lwarpmk m-tx \
  270. makeglossaries-lite mflua mflua-nowin musixflx musixtex pmxchords \
  271. ptex2pdf texlua texluac xindex ; do
  272. vmove "usr/bin/${i}"
  273. done
  274. for i in checkcites cluttex diadia getmap glossaries/makeglossaries-lite.lua \
  275. l3build luaotfload lwarp m-tx musixtex pmxchords ptex2pdf xindex ; do
  276. vmove "usr/share/texmf-dist/scripts/${i}"
  277. done
  278. for i in luatex texlua texluac ; do
  279. vmove "usr/share/man/man1/${i}.1"
  280. done
  281. vmove "usr/lib/libtexlua*.so.*"
  282. for cmd in dvilualatex dviluatex optex ; do
  283. ln -s luatex "${PKGDESTDIR}/usr/bin/${cmd}"
  284. done
  285. ln -s luahbtex "${PKGDESTDIR}/usr/bin/lualatex"
  286. }
  287. }
  288. texlive-LuaTeX-devel_package() {
  289. depends="${sourcepkg}-devel>=${version}_${revision}
  290. ${sourcepkg}-LuaTeX>=${version}_${revision}"
  291. short_desc+=" - extended pdfTeX using Lua - development files"
  292. pkg_install() {
  293. for i in texlua53 $(vopt_if luajit texluajit); do
  294. vmove "usr/include/${i}"
  295. vmove "usr/lib/lib${i}.a"
  296. vmove "usr/lib/lib${i}.so"
  297. vmove "usr/lib/pkgconfig/${i}.pc"
  298. done
  299. }
  300. }
  301. texlive-Xdvi_package() {
  302. depends="${sourcepkg}>=${version}_${revision}"
  303. short_desc+=" - displaying DVI files on the X window system"
  304. pkg_install() {
  305. for i in xdvi xdvi-xaw xdvipdfmx ; do
  306. vmove "usr/bin/${i}"
  307. done
  308. vmove usr/share/texmf-dist/xdvi
  309. for i in xdvi xdvipdfmx ; do
  310. vmove "usr/share/man/man1/${i}.1"
  311. done
  312. vmove usr/share/applications/xdvi.desktop
  313. }
  314. }
  315. libsynctex_package() {
  316. short_desc+=" - libsynctex"
  317. pkg_install() {
  318. vmove "usr/lib/libsynctex.so.*"
  319. }
  320. }
  321. texlive-devel_package() {
  322. depends="${sourcepkg}>=${version}_${revision}"
  323. short_desc+=" - development files"
  324. pkg_install() {
  325. for i in kpathsea ptexenc synctex; do
  326. vmove "usr/include/${i}"
  327. vmove "usr/lib/lib${i}.a"
  328. vmove "usr/lib/lib${i}.so"
  329. vmove "usr/lib/pkgconfig/${i}.pc"
  330. done
  331. }
  332. }
  333. texlive-BibTeX_package() {
  334. depends="${sourcepkg}>=${version}_${revision} bash"
  335. short_desc+=" - reference management software"
  336. pkg_install() {
  337. for i in bbl2bib ctanbib ; do
  338. vmove "usr/bin/${i}"
  339. done
  340. for i in bib2gls bibexport ; do
  341. vmove "usr/share/texmf-dist/scripts/${i}"
  342. done
  343. vmove usr/bin/bib*
  344. vmove usr/share/man/man1/bibtex.1
  345. }
  346. }
  347. texlive-ConTeXt_package() {
  348. depends="${sourcepkg}>=${version}_${revision} perl ghostscript"
  349. short_desc+=" - alternative general-purpose document processor"
  350. pkg_install() {
  351. for i in context contextjit mptopdf mtxrun mtxrunjit texexec \
  352. texmfstart dosepsbin epspdf epspdftk purifyeps repstopdf ; do
  353. vmove "usr/bin/${i}"
  354. done
  355. for i in context dosepsbin epspdf epstopdf ps2eps purifyeps ; do
  356. vmove "usr/share/texmf-dist/scripts/${i}"
  357. done
  358. for i in epsffit ps2eps ; do
  359. vmove "usr/share/man/man1/${i}.1"
  360. done
  361. }
  362. }
  363. texlive-PythonTeX_package() {
  364. depends="${sourcepkg}>=${version}_${revision} python3"
  365. short_desc+=" - executing Python in LaTeX"
  366. pkg_install() {
  367. vmove usr/bin/*pythontex
  368. vmove usr/share/texmf-dist/scripts/pythontex
  369. }
  370. }