/[gentoo-x86]/eclass/texlive-module.eclass
Gentoo

Diff of /eclass/texlive-module.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.19 Revision 1.30
1# Copyright 1999-2008 Gentoo Foundation 1# Copyright 1999-2008 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/texlive-module.eclass,v 1.19 2008/10/31 15:16:28 aballier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/texlive-module.eclass,v 1.30 2010/01/07 19:16:52 aballier Exp $
4 4
5# @ECLASS: texlive-module.eclass 5# @ECLASS: texlive-module.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# tex@gentoo.org 7# tex@gentoo.org
8# 8#
49 49
50HOMEPAGE="http://www.tug.org/texlive/" 50HOMEPAGE="http://www.tug.org/texlive/"
51 51
52COMMON_DEPEND=">=app-text/texlive-core-${PV}" 52COMMON_DEPEND=">=app-text/texlive-core-${PV}"
53 53
54IUSE="" 54IUSE="source"
55 55
56# TeX Live 2007 was providing .zip files of CTAN packages. For 2008 they are now 56# TeX Live 2008 was providing .tar.lzma files of CTAN packages. For 2009 they are now
57# .tar.lzma 57# .tar.xz
58if [ -z "${PV##2007*}" ] ; then 58if [ "${PV#2008}" != "${PV}" ]; then
59 PKGEXT=tar.lzma
60 DEPEND="${COMMON_DEPEND}
61 || ( app-arch/xz-utils app-arch/lzma-utils )"
62else
63 PKGEXT=tar.xz
64 DEPEND="${COMMON_DEPEND}
65 app-arch/xz-utils"
66fi
67
59for i in ${TEXLIVE_MODULE_CONTENTS}; do 68for i in ${TEXLIVE_MODULE_CONTENTS}; do
60 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.zip" 69 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.${PKGEXT}"
61done 70done
62COMMON_DEPEND="${COMMON_DEPEND}
63 ${TEXLIVE_MODULES_DEPS}"
64DEPEND="${COMMON_DEPEND}
65 app-arch/unzip"
66else
67for i in ${TEXLIVE_MODULE_CONTENTS}; do
68 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma"
69done
70DEPEND="${COMMON_DEPEND}
71 app-arch/lzma-utils"
72IUSE="${IUSE} source"
73 71
74# Forge doc SRC_URI 72# Forge doc SRC_URI
75[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} doc? (" 73[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} doc? ("
76for i in ${TEXLIVE_MODULE_DOC_CONTENTS}; do 74for i in ${TEXLIVE_MODULE_DOC_CONTENTS}; do
77 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma" 75 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.${PKGEXT}"
78done 76done
79[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} )" 77[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} )"
80 78
81# Forge source SRC_URI 79# Forge source SRC_URI
82if [ -n "${TEXLIVE_MODULE_SRC_CONTENTS}" ] ; then 80if [ -n "${TEXLIVE_MODULE_SRC_CONTENTS}" ] ; then
83 SRC_URI="${SRC_URI} source? (" 81 SRC_URI="${SRC_URI} source? ("
84 for i in ${TEXLIVE_MODULE_SRC_CONTENTS}; do 82 for i in ${TEXLIVE_MODULE_SRC_CONTENTS}; do
85 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma" 83 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.${PKGEXT}"
86 done 84 done
87 SRC_URI="${SRC_URI} )" 85 SRC_URI="${SRC_URI} )"
88fi 86fi
87
88RDEPEND="${COMMON_DEPEND}"
89
90[ -z "${PN##*documentation*}" ] || IUSE="${IUSE} doc"
91
92S="${WORKDIR}"
93
94if [ "${PV#2008}" == "${PV}" ]; then
95
96# @FUNCTION: texlive-module_src_unpack
97# @DESCRIPTION:
98# Only for TeX Live 2009.
99# Gives tar.xz unpack support until we can use an EAPI with that support.
100
101RELOC_TARGET=texmf-dist
102
103texlive-module_src_unpack() {
104 local i s
105 for i in ${A}
106 do
107 s="${DISTDIR%/}/${i}"
108 einfo "Unpacking ${s} to ${PWD}"
109 test -s "${s}" || die "${s} does not exist"
110 xz -dc -- "${s}" | tar xof - || die "Unpacking ${s} failed"
111 done
112 grep RELOC tlpkg/tlpobj/* | awk '{print $2}' | sed 's#^RELOC/##' > "${T}/reloclist"
113 { for i in $(<"${T}/reloclist"); do dirname $i; done; } | uniq | sort -r > "${T}/dirlist"
114 for i in $(<"${T}/dirlist"); do
115 [ -d "${RELOC_TARGET}/${i}" ] || mkdir -p "${RELOC_TARGET}/${i}"
116 done
117 for i in $(<"${T}/reloclist"); do
118 mv "${i}" "${RELOC_TARGET}"/$(dirname "${i}") || die "failed to relocate ${i} to ${RELOC_TARGET}/$(dirname ${i})"
119 done
120}
121
89fi 122fi
90 123
91RDEPEND="${COMMON_DEPEND}"
92
93[ -z "${PN##*documentation*}" ] || IUSE="${IUSE} doc"
94
95S="${WORKDIR}"
96
97
98# @FUNCTION: texlive-module_make_language_def_lines 124# @FUNCTION: texlive-module_make_language_def_lines
99# @DESCRIPTION: 125# @DESCRIPTION:
100# Only valid for TeXLive 2008.
101# Creates a language.${PN}.def entry to put in /etc/texmf/language.def.d 126# Creates a language.${PN}.def entry to put in /etc/texmf/language.def.d
102# It parses the AddHyphen directive of tlpobj files to create it. 127# It parses the AddHyphen directive of tlpobj files to create it.
103 128
104texlive-module_make_language_def_lines() { 129texlive-module_make_language_def_lines() {
105 local lefthyphenmin righthyphenmin synonyms name file 130 local lefthyphenmin righthyphenmin synonyms name file
145# The next step is to generate config files that are to be installed in 170# The next step is to generate config files that are to be installed in
146# /etc/texmf; texmf-update script will take care of merging the different config 171# /etc/texmf; texmf-update script will take care of merging the different config
147# files for different packages in a single one used by the whole tex installation. 172# files for different packages in a single one used by the whole tex installation.
148 173
149texlive-module_src_compile() { 174texlive-module_src_compile() {
150 # Build format files
151 for i in texmf/fmtutil/format*.cnf; do
152 if [ -f "${i}" ]; then
153 einfo "Building format ${i}"
154 TEXMFHOME="${S}/texmf:${S}/texmf-dist"\
155 fmtutil --cnffile "${i}" --fmtdir "${S}/texmf-var/web2c" --all\
156 || die "failed to build format ${i}"
157 fi
158 done
159
160 # Generate config files 175 # Generate config files
161 # TeX Live 2007 was providing lists. For 2008 they are now tlpobj. 176 # TeX Live 2007 was providing lists. For 2008 they are now tlpobj.
162 if [ -z "${PV##2007*}" ] ; then
163 for i in "${S}"/texmf/lists/*;
164 do
165 grep '^!' "${i}" | sed -e 's/^!//' | tr ' ' '@' |sort|uniq >> "${T}/jobs"
166 done
167 else
168 for i in "${S}"/tlpkg/tlpobj/*; 177 for i in "${S}"/tlpkg/tlpobj/*;
169 do 178 do
170 grep '^execute ' "${i}" | sed -e 's/^execute //' | tr ' ' '@' |sort|uniq >> "${T}/jobs" 179 grep '^execute ' "${i}" | sed -e 's/^execute //' | tr ' ' '@' |sort|uniq >> "${T}/jobs"
171 done 180 done
172 fi
173 181
174 for i in $(<"${T}/jobs"); 182 for i in $(<"${T}/jobs");
175 do 183 do
176 j="$(echo $i | tr '@' ' ')" 184 j="$(echo $i | tr '@' ' ')"
177 command=${j%% *} 185 command=${j%% *}
194 einfo "Language file $parameter already generated.";; 202 einfo "Language file $parameter already generated.";;
195 *) 203 *)
196 die "No rule to proccess ${command}. Please file a bug." 204 die "No rule to proccess ${command}. Please file a bug."
197 esac 205 esac
198 done 206 done
207
208 # Build format files
209 for i in texmf/fmtutil/format*.cnf; do
210 if [ -f "${i}" ]; then
211 einfo "Building format ${i}"
212 VARTEXFONTS="${T}/fonts" TEXMFHOME="${S}/texmf:${S}/texmf-dist:${S}/texmf-var"\
213 env -u TEXINPUTS fmtutil --cnffile "${i}" --fmtdir "${S}/texmf-var/web2c" --all\
214 || die "failed to build format ${i}"
215 fi
216 done
217
218 # Delete ls-R files, these should not be created but better be certain they
219 # do not end up being installed.
220 find . -name 'ls-R' -delete
199} 221}
200 222
201# @FUNCTION: texlive-module_src_install 223# @FUNCTION: texlive-module_src_install
202# @DESCRIPTION: 224# @DESCRIPTION:
203# exported function: 225# exported function:
206texlive-module_src_install() { 228texlive-module_src_install() {
207 for i in texmf/fmtutil/format*.cnf; do 229 for i in texmf/fmtutil/format*.cnf; do
208 [ -f "${i}" ] && etexlinks "${i}" 230 [ -f "${i}" ] && etexlinks "${i}"
209 done 231 done
210 232
211 insinto /usr/share 233 dodir /usr/share
212 if [ -z "${PN##*documentation*}" ] || use doc; then 234 if [ -z "${PN##*documentation*}" ] || use doc; then
213 [ -d texmf-doc ] && doins -r texmf-doc 235 [ -d texmf-doc ] && cp -pR texmf-doc "${D}/usr/share/"
214 else 236 else
215 [ -d texmf/doc ] && rm -rf texmf/doc 237 [ -d texmf/doc ] && rm -rf texmf/doc
216 [ -d texmf-dist/doc ] && rm -rf texmf-dist/doc 238 [ -d texmf-dist/doc ] && rm -rf texmf-dist/doc
217 fi 239 fi
218 240
219 [ -d texmf ] && doins -r texmf 241 [ -d texmf ] && cp -pR texmf "${D}/usr/share/"
220 [ -d texmf-dist ] && doins -r texmf-dist 242 [ -d texmf-dist ] && cp -pR texmf-dist "${D}/usr/share/"
221 [ -n "${PV##2007*}" ] && [ -d tlpkg ] && use source && doins -r tlpkg 243 [ -d tlpkg ] && use source && cp -pR tlpkg "${D}/usr/share/"
222 244
223 insinto /var/lib/texmf 245 insinto /var/lib/texmf
224 [ -d texmf-var ] && doins -r texmf-var/* 246 [ -d texmf-var ] && doins -r texmf-var/*
225 247
226 insinto /etc/texmf/updmap.d 248 insinto /etc/texmf/updmap.d
274 ewarn "Your texmf tree might be inconsistent with your configuration" 296 ewarn "Your texmf tree might be inconsistent with your configuration"
275 ewarn "Please try to figure what has happened" 297 ewarn "Please try to figure what has happened"
276 fi 298 fi
277} 299}
278 300
301if [ "${PV#2008}" != "${PV}" ]; then
279EXPORT_FUNCTIONS src_compile src_install pkg_postinst pkg_postrm 302EXPORT_FUNCTIONS src_compile src_install pkg_postinst pkg_postrm
303else
304EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_postinst pkg_postrm
305fi

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.20