File: postinst-tex

package info (click to toggle)
tex-common 5.03
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,540 kB
  • ctags: 160
  • sloc: sh: 1,244; perl: 379; lisp: 276; python: 272; makefile: 160; sed: 4
file content (170 lines) | stat: -rw-r--r-- 5,464 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
##
## postinst-tex
##
## postinst snippets for everything TeX related (mktlsr, hyphenation
## patterns, formats, font maps)
##
## Authors:
##       Florent Rougon <f.rougon@free.fr>
##       Norbert Preining <preining@logic.at>
##
# Please note that comments in this file are stripped before installation
# by calling a grep -v '^[ \t]*# '
# Thus, first lines containing ## are preserved!
# So please be careful if you add stuff here!
#

TEXMFTREES="/usr/share/texmf /var/lib/texmf"
FULLTEXMFTREES="$TEXMFTREES /usr/share/texlive/texmf-dist"

# Tell if kpsewhich works. If this is the case:
#
#   1. kpsewhich is installed and;
#
#   2. libkpathsea is configured.
dhit_texlive_binaries_configured ()
{
    # unfortunately this seems not to work anymore, we have to make
    # sure that texlive-binaries is properly configured, otherwise
    # a squeeze in libkpathsea and engines might occur
    # kpsewhich --version >/dev/null 2>&1
    stat=$(dpkg-query -W -f='${Status}' texlive-binaries 2>/dev/null || true)
    case "$stat" in
        "install ok installed")
            return 0
            ;;
        *)
            return 1
            ;;
    esac
}

dhit_update_lsr_files ()
{
    tempfile=$(mktemp -p /tmp mktexlsr.XXXXXXXX)
    printf "Running mktexlsr. This may take some time... "
    if mktexlsr $* > $tempfile 2>&1 ; then
        rm -f $tempfile
        echo "done."
    else
        exec >&2
        echo
        echo "mktexlsr $* failed. Output has been stored in"
        echo "$tempfile"
        echo "Please include this file if you report a bug."
        echo
        exit 1
    fi
}


dhit_build_hyphen_format_if_format_exists ()
{
    v=$(kpsewhich -var-value TEXMFSYSVAR)
    c=$(kpsewhich -var-value TEXMFSYSCONFIG)
    TEXMFVAR="$v"
    TEXMFCONFIG="$c"
    export TEXMFVAR TEXMFCONFIG
    fmtcnffile=$(kpsewhich --format='web2c files' fmtutil.cnf)
    # this is slow, and since we hope/assure that all ini files
    # are installed if the format is active, we don't need the
    # extra check fmtutil does when called with catcfg
    # X=$(fmtutil-sys --catcfg | grep "^$1[[:space:]]" || true)
    X=$(grep "^[[:space:]]*$1[[:space:]]" $fmtcnffile || true)
    if [ -n "$X" ] ; then
        dhit_build_format --byhyphen "$2"
    fi
}

dhit_build_format ()
{

    tempfile=$(mktemp -p /tmp fmtutil.XXXXXXXX)
    printf "Building format(s) $*.\n\tThis may take some time... "
    if fmtutil-sys --no-error-if-no-engine=luajittex "$@" > $tempfile 2>&1 ; then
        rm -f $tempfile
        echo "done."
    else
        exec >&2
        echo
        echo "fmtutil-sys failed. Output has been stored in"
        echo "$tempfile"
        echo "Please include this file if you report a bug."
        echo
        exit 1
    fi
}


case "$1" in
    configure|abort-upgrade|abort-remove|abort-deconfigure)
        # These programs are all in tex-common and can be run immediately.
        # In fact it *does* hurt not calling them since we might
        # have formats installed and we call with --all, so not the
        # trigger action is done, but the postinst runs the fmtutil-sys call
        update-updmap --quiet
        update-language
        update-fmtutil
        # All of the following needs an installed and configured
        # basic TeX system, so check this.
        if dhit_texlive_binaries_configured; then
            #
            # if we are doing something with formats we have to update
            # the lsr database first
            do_lsr=0
            for i in #WHATTODO# ; do
                if [ "$i" = lsrfull ] ; then
                    TEXMFTREES=$FULLTEXMFTREES
                fi
                if [ "$i" = allformats ] ; then
                    do_lsr=1
                fi
                if [ "$i" = format ] ; then
                    do_lsr=1
                fi
            done
            if [ $do_lsr = 1 ] ; then
                # mktexlsr may not be present
                if which mktexlsr >/dev/null; then
                    dhit_update_lsr_files $TEXMFTREES
                    # can we "close" or "delete" a trigger, i.e. say
                    # that it has been dealt with?
                fi
            fi
            for i in #WHATTODO# ; do
                if [ "$i" = lsr ] ; then
                    if [ $do_lsr = 0 ] ; then
                        update-texmf-config lsr
                    fi
                fi
                if [ "$i" = lsrfull ] ; then
                    if [ $do_lsr = 0 ] ; then
                        update-texmf-config lsrfull
                    fi
                fi
                if [ "$i" = map ] ; then
                    update-texmf-config map
                fi
                if [ "$i" = allformats ] ; then
                    dhit_build_format --all
                fi
                if [ "$i" = format ] ; then
                    for fmt in #FORMATSFILES# ; do
                        if [ -r "/etc/texmf/fmt.d/$fmt.cnf" ] ; then
                            dhit_build_format --all --cnffile "/etc/texmf/fmt.d/$fmt.cnf"
                        else
                            echo "config file /etc/texmf/fmt.d/$fmt.cnf not available"
                        fi
                    done
                fi
                if [ "$i" = hyphen ] ; then
                    update-texmf-config hyphen
                fi
            done
        fi
    ;;

esac

# Let vim know that we don't want tabs
# vim:set expandtab tabstop=4: #