dev-libs/kpathsea: Set LC_COLLATE=C in texmf-update script to ensure reliable order...
[gentoo.git] / dev-libs / kpathsea / files / texmf-update-r2
1 #!@GENTOO_PORTAGE_EPREFIX@/bin/bash
2 #
3 # Utility to update Gentoo TeXLive distribution configuration files
4 #
5
6 echo "Configuring TeXLive ..."
7
8 PATH="@GENTOO_PORTAGE_EPREFIX@"/bin:"@GENTOO_PORTAGE_EPREFIX@"/usr/bin
9
10 # Fix for all those with altered umask for root
11 umask 022
12
13 # Ensure reliable order when concatenating files, bug #579018
14 LC_COLLATE=C
15
16 # Make sure we have a correct environment, bug #30432
17 # The list of env. vars is taken from the INSTALL file
18 for texvar in AFMFONTS BIBINPUTS BSTINPUTS DVILJFONTS DVIPSFONTS \
19         DVIPSHEADERS GFFONTS GLYPHFONTS INDEXSTYLE MFBASES MFINPUTS \
20         MFPOOL MFTINPUTS MPINPUTS MPMEMS MPPOOL MPSUPPORT OCPINPUTS \
21         OFMFONTS OPLFONTS OTPINPUTS OVFFONTS OVPFONTS PKFONTS PSHEADERS \
22         T1FONTS T1INPUTS TEXBIB TEXCONFIG TEXDOCS TEXFONTMAPS TEXFONTS \
23         TEXFORMATS TEXINDEXSTYLE TEXINPUTS TEXMFCNF TEXMFDBS TEXMFINI \
24         TEXPICTS TEXPKS TEXPOOL TEXPSHEADERS TEXSOURCES TFMFONTS TRFONTS \
25         VFFONTS XDVIFONTS XDVIVFS ; do
26
27         if [ "${!texvar}" ]; then
28                 if ! $(echo ${!texvar} | grep '^:\|::\|:$' &>/dev/null) ; then
29                         export ${texvar}="${!texvar}:"
30                 fi
31         fi
32 done
33
34 if [ "$TEXINPUTS" ]; then
35         if $(echo ${TEXINPUTS} | grep '@GENTOO_PORTAGE_EPREFIX@/usr/share/texmf' &>/dev/null) ; then
36                 export TEXINPUTS=$(echo ${TEXINPUTS} | sed -e 's|@GENTOO_PORTAGE_EPREFIX@/usr/share/texmf/*:\?||g')
37         elif $(echo ${TEXINPUTS} | grep '@GENTOO_PORTAGE_EPREFIX@/var/lib/texmf' &>/dev/null) ; then
38                 export TEXINPUTS=$(echo ${TEXINPUTS} | sed -e 's|@GENTOO_PORTAGE_EPREFIX@/var/lib/texmf/*:\?||g')
39         fi
40 fi
41
42 MKTEMP_COMMAND="mktemp -t tmp.XXXXXXXXXX"
43 DIFF_COMMAND="cmp -s"
44 TEMP_FILE="`${MKTEMP_COMMAND}`"
45
46 if [ -z "${TEMP_FILE}" ]; then
47     exit
48 fi
49
50 # check whether config files for fmtutil and updmap have changed
51 STATUS_FMTUTIL="0"
52 STATUS_UPDMAP="0"
53
54 if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/texmf.d ]; then
55     echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/texmf.cnf from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/texmf.d ..."
56     cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/texmf.d/*.cnf > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/texmf.cnf"
57 fi
58
59 if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/fmtutil.d ]; then
60     echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/fmtutil.cnf from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/fmtutil.d ..."
61     if [ -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ]; then
62         cp -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ${TEMP_FILE}
63     else
64         touch ${TEMP_FILE}
65     fi
66     cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/fmtutil.d/*.cnf > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/fmtutil.cnf"
67     ${DIFF_COMMAND} "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ${TEMP_FILE}
68     STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
69 else
70 # if no regeneration took place:
71 # always regenerate the formats to be on the safe side
72     STATUS_FMTUTIL="${STATUS_FMTUTIL}3"
73 fi
74
75 if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/updmap.d ]; then
76     if [ -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ]; then
77         cp -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ${TEMP_FILE}
78     else
79         touch ${TEMP_FILE}
80     fi
81     echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/updmap.cfg from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/updmap.d ..."
82     cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/updmap.d/*.cfg > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/updmap.cfg"
83     ${DIFF_COMMAND} "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ${TEMP_FILE}
84     STATUS_UPDMAP="${STATUS_UPDMAP}$?"
85 else
86 # if no regeneration could be done:
87 # always regenerate the maps to be on the safe side
88     STATUS_UPDMAP="${STATUS_UPDMAP}3"
89 fi
90
91 echo "Generating ls-R files"
92 mktexlsr &>/dev/null
93
94 # Generate language.dat file, from texlive install-pkg.sh
95 X=`kpsewhich language.dat`
96 Z=`dirname $X`
97 if [ -n "$X" -a -f "$Z/language.dat" -a -f "$Z/language.us" ] ; then
98     echo "Generating language.dat file"
99
100     # Save the old one, we will check if it has changed
101     cp -f "$Z/language.dat" "${TEMP_FILE}"
102
103     cat "$Z/language.us" > "$Z/language.dat"
104     for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.dat.d/language.*.dat; do
105             [ -f "$i" ] && cat "$i" >> "$Z/language.dat"
106     done
107
108     ${DIFF_COMMAND} "$Z/language.dat" "${TEMP_FILE}"
109     STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
110 fi
111
112 # Generate language.def file.
113 if [ -n "$X" -a -f "$Z/language.def" -a -f "$Z/language.us.def" ] ; then
114     echo "Generating language.def file"
115
116     # Save the old one, we will check if it has changed
117     cp -f "$Z/language.def" "${TEMP_FILE}"
118
119     cat "$Z/language.us.def" > "$Z/language.def"
120     for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.def.d/language.*.def; do
121             [ -f "$i" ] && cat "$i" >> "$Z/language.def"
122     done
123     cat << EOF >> "$Z/language.def"
124 %%% No changes may be made beyond this point.
125
126 \uselanguage {USenglish}             %%% This MUST be the last line of the file.
127 EOF
128
129     ${DIFF_COMMAND} "$Z/language.def" "${TEMP_FILE}"
130     STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
131 fi
132
133 # Generate language.dat.lua file.
134 if [ -n "$X" -a -f "$Z/language.dat.lua" -a -f "$Z/language.us.lua" ] ; then
135     echo "Generating language.dat.lua file"
136
137     # Save the old one, we will check if it has changed
138     cp -f "$Z/language.dat.lua" "${TEMP_FILE}"
139
140     cat "$Z/language.us.lua" > "$Z/language.dat.lua"
141     for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.dat.lua.d/language.*.dat.lua; do
142             [ -f "$i" ] && cat "$i" >> "$Z/language.dat.lua"
143     done
144     printf "}\n" >> "$Z/language.dat.lua"
145
146     ${DIFF_COMMAND} "$Z/language.dat.lua" "${TEMP_FILE}"
147     STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
148 fi
149
150 if [ "${STATUS_FMTUTIL}" -ne 0 ] ; then
151     echo "Generating format files ..."
152     fmtutil-sys --all &>/dev/null
153 else
154     echo "Skipping format files, since they are unchanged"
155 fi
156
157 if [ "${STATUS_UPDMAP}" -ne 0 ] ; then
158     echo "Generating font maps..."
159     updmap-sys &>/dev/null
160 else
161     echo "Skipping font maps, since they are unchanged"
162 fi
163
164 rm -f ${TEMP_FILE}
165
166 echo
167 echo "Use 'texconfig font ro'(rw) to disable (enable) font generation for users"
168 echo