Fetching contributors…
Cannot retrieve contributors at this time
291 lines (252 sloc) 11.8 KB
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup compiler_blacklist_versions 1.0
PortGroup texlive 1.0
PortGroup cxx11 1.1
# luajittex requires muniversal (and some patches to configure
# scripts) to build universal
PortGroup muniversal 1.0
name texlive-bin
version 2018.47642
revision 4
categories tex
maintainers {dports @drkp}
description TeX Live Binaries.
long_description TeX Live is an easy way to get up and running with TeX. \
It provides a comprehensive TeX system with binaries for most flavors \
of Unix, including GNU/Linux, and also Windows. It includes all the \
major TeX-related programs, macro packages, and fonts that are free \
software, including support for many languages around the world.
platforms darwin
# This port installs two libraries: kpathsea (LGPL-2.1+) and ptexenc (BSD).
# The binaries are covered under various licenses, but all distributable;
# see the texlive portfile for more information.
license Copyleft Permissive LGPL-2.1+ BSD
# Our distfile is a stripped-down version of the texlive source
# tarball, available from CTAN in systems/texlive/Source. For faster
# download time, it omits a number of libraries and utilities that we
# don't build. However, the port should still work with an unmodified
# texlive distfile.
master_sites \ \
use_xz yes
distname texlive-source-${version}-stripped
worksrcdir ${distname}
set tlpkgdistname tlpkg-TeXLive-${version}
distfiles-append ${tlpkgdistname}${extract.suffix}
checksums texlive-source-2018.47642-stripped.tar.xz \
rmd160 5cacb77580def95071a797c73e620f3f59558fb6 \
sha256 3d96e6993d52c373c78291c70c8d668968bad2e9e0da2249da4f6138434f3118 \
size 18994796 \
tlpkg-TeXLive-2018.47642.tar.xz \
rmd160 c14c04444af0ee2ed739c7c6776b6afac39cf766 \
sha256 54505501198b171af862ca17c2da4388242b1a1b6e724aabb048ce5125517c8f \
size 103320
depends_lib port:fontconfig \
port:freetype \
port:libpng \
port:ncurses \
port:zlib \
port:libzzip \
port:poppler \
path:lib/pkgconfig/cairo.pc:cairo \
path:lib/pkgconfig/pixman-1.pc:libpixman \
port:graphite2 \
port:icu \
port:harfbuzz \
port:harfbuzz-icu \
port:libpaper \
port:gmp \
port:mpfr \
port:potrace \
depends_run port:ghostscript
depends_build-append \
path:bin/perl:perl5 \
# patches related to changes in install paths
patchfiles-append \ \ \ \ \
# patches to luajit/luajittex's config scripts to correctly detect
# architecture in universal builds
patchfiles-append patch-libs_luajit_configure.diff \
# patches for compatibility with latest poppler
patchfiles-append patch-pdftosrc-const.diff \
post-patch {
reinplace "s|@@TEXMFDIST@@|${texlive_texmfdist}|" ${worksrcpath}/texk/texlive/linked_scripts/
reinplace "s|@@TEXMFDIST@@|${texlive_texmfdist}|" ${worksrcpath}/texk/texlive/tl_scripts/
reinplace "s|@@TEXMFDIST@@|${texlive_texmfdist}|" ${worksrcpath}/texk/tex4htk/
reinplace "s|@@TEXLIVE_BINDIR@@|${texlive_bindir}|" ${worksrcpath}/texk/xdvik/
reinplace "s|@@TEXMFDIST@@|${texlive_texmfdist}|" ${worksrcpath}/texk/chktex/
# Defaults for the texmf search paths need to be compiled into
# libkpathsea -- really, just the location of texmf.cnf, which
# defines all the other paths. texlive normally finds this file
# using a bindir-relative path extracted from texmf.cnf, but this
# is both incorrect (it fails to find our texmf.cnf) and overkill
# (we know the absolute path of texmf.cnf).
# Accordingly, we patch the kpathsea makefile to not try to derive
# the default paths from texmf.cnf, and just provide our own
# paths.h with the right path substituted in.
delete ${worksrcpath}/texk/kpathsea/texmf.cnf
file copy ${filespath}/texk_kpathsea_paths.h ${worksrcpath}/texk/kpathsea/paths.h
reinplace "s|@@PREFIX@@|${prefix}|" ${worksrcpath}/texk/kpathsea/paths.h
reinplace "s|@@TEXMFSYSCONFIG@@|${texlive_texmfsysconfig}|" ${worksrcpath}/texk/kpathsea/paths.h
# Required to support poppler >0.59
file rename -force ${worksrcpath}/texk/web2c/pdftexdir/ ${worksrcpath}/texk/web2c/pdftexdir/
file rename -force ${worksrcpath}/texk/web2c/pdftexdir/ ${worksrcpath}/texk/web2c/pdftexdir/
# We use MacPorts-provided libraries instead of the ones included in
# texlive whenever possible, to avoid redundancy and to better keep
# current with respect to security updates and the like.
# At present, the only exceptions are TeX-specific libraries like
# kpathsea and ptexenc that it doesn't make sense to package
# separately.
# Many of the --with-system-* and --disable-* flags are actually
# redundant because we've removed those components from the distfile,
# but we leave them here for compatibility with the stock distfile.
configure.args --bindir=${texlive_bindir} \
--mandir=${texlive_bindir} \
--infodir=${prefix}/share/info \
--enable-shared \
--disable-multiplatform \
--disable-native-texlive-build \
--without-old-mac-fonts \
--with-banner-add="/MacPorts ${version}_${revision}" \
--with-system-freetype2 \
--without-system-freetype \
--without-system-icu \
--with-system-cairo \
--with-system-gd \
--with-system-gmp \
--with-system-graphite2 \
--with-system-harfbuzz \
--with-system-icu \
--with-system-libpaper \
--with-libpaper-includes=${prefix}/include \
--with-libpaper-libdir=${prefix}/lib \
--with-system-libpng \
--with-libpng-includes=${prefix}/include \
--with-libpng-libdir=${prefix}/lib \
--with-system-mpfr \
--with-system-ncurses \
--with-system-pixman \
--with-system-poppler \
--with-system-potrace \
--with-system-xpdf \
--with-system-zlib \
--with-system-zziplib \
--disable-biber \
--disable-etex \
--disable-detex \
--disable-dvi2tty \
--disable-dvipng \
--disable-lcdf-typetools \
--disable-ps2eps \
--disable-psutils \
--disable-t1utils \
--disable-texinfo \
--disable-xindy \
--without-x \
--without-pdfopen \
--enable-build-in-source-tree \
# makejvf has some invalid character encodings in one of its source
# files, which cause certain versions of clang to hang (#38643). Using
# -Wno-invalid-source-encoding avoids this problem.
# It appears to be specific to Xcode 4.6, but there's no harm in
# silencing the warning for all versions of clang.
post-patch {
if {[string match *clang* ${configure.compiler}]} {
reinplace "/^WARNING_CFLAGS =/s/$/ -Wno-invalid-source-encoding/" ${worksrcpath}/texk/makejvf/
configure.cppflags-delete -I${prefix}/include
configure.ldflags-delete -L${prefix}/lib
configure.cppflags-append -isystem${prefix}/include
configure.env-append LIBRARY_PATH=${prefix}/lib
# luajittex does not support ppc
if {[variant_isset universal]} {
set merger_configure_args(ppc) --disable-luajittex
set merger_configure_args(ppc64) --disable-luajittex
} else {
switch -- ${configure.build_arch} {
ppc -
ppc64 { configure.args-append --disable-luajittex }
# work around bug in texlive makefiles where $OBJC is not recorded
# during configure phase
build.env OBJC=${configure.objc} \
OBJCFLAGS="${configure.objcflags} [get_canonical_archflags objc]" \
if {[string match *clang* ${configure.cxx}]} {
build.env-append OBJCXXFLAGS="${configure.objcxxflags} [get_canonical_archflags objcxx] -stdlib=${configure.cxx_stdlib}"
} else {
build.env-append OBJCXXFLAGS="${configure.objcxxflags} [get_canonical_archflags objcxx]"
# work around differences between libc++ and libstdc++ headers building with clang
if {[string match *clang* ${configure.cxx}]} {
configure.cxxflags-append -std=c++11
configure.cxxflags-append -Wno-reserved-user-defined-literal
post-destroot {
# Anything that gets installed into texmf-dist will be installed
# by one of the texmf ports
delete ${destroot}${prefix}/share/texmf-dist
delete ${destroot}${texlive_texmfdist}
# Do not install symlinks to scripts that we don't install
delete ${destroot}${texlive_bindir}/latexmk
delete ${destroot}${texlive_bindir}/tlmgr
# install the tlpkg/TeXLive perl module
xinstall -d ${destroot}${prefix}/share/tlpkg
copy ${workpath}/${tlpkgdistname} ${destroot}${prefix}/share/tlpkg/TeXLive
# gzip manpages that are installed into texlive_bindir
foreach manpage [glob -directory ${destroot}${texlive_bindir} man*/*] {
# need to make sure it isn't a symlink
if {[file type $manpage] == "file"} {
system "gzip $manpage"
# Create version/arch-specific links to the texbin directory used
# by the TeXDist prefpane; it seems that future versions of the
# prefpane will want these.
xinstall -d ${destroot}${texlive_mactex_texdistdir}-${version}
if {[variant_isset universal]} {
ln -s ${texlive_mactex_texbindir} \
} else {
ln -s ${texlive_mactex_texbindir} \
ln -s ${texlive_mactex_texdistdir}-${version} \
post-activate {
system "${texlive_bindir}/mktexlsr"
variant x11 description {Build with x11 support, using Xaw widgets for xdvi} {
depends_lib-append port:xorg-libXp port:xpm
configure.args-delete --without-x --without-pdfopen
depends_lib-append port:xorg-libXaw port:xorg-libXi
configure.args-append --with-xdvi-x-toolkit=xaw
variant motif requires x11 description {Use Motif to build xdvi} {
depends_lib-delete port:xorg-libXaw
configure.args-delete --with-xdvi-x-toolkit=xaw
depends_lib-append lib:libXm:openmotif
configure.args-append --with-xdvi-x-toolkit=motif
default_variants +x11
livecheck.type none