/[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.7 Revision 1.14
1# Copyright 1999-2004 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.7 2008/01/20 00:14:45 aballier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/texlive-module.eclass,v 1.14 2008/08/21 13:04:21 aballier Exp $
4 4
5# @ECLASS: texlive-module.eclass
6# @MAINTAINER:
7# tex@gentoo.org
5# 8#
6# Original Author: Alexis Ballier <aballier@gentoo.org> 9# Original Author: Alexis Ballier <aballier@gentoo.org>
10# @BLURB: Provide generic install functions so that modular texlive's texmf ebuild will only have to inherit this eclass
11# @DESCRIPTION:
7# Purpose: Provide generic install functions so that modular texlive's texmf ebuilds will 12# Purpose: Provide generic install functions so that modular texlive's texmf ebuilds will
8# only have to inherit this eclass. 13# only have to inherit this eclass.
9# Ebuilds have to provide TEXLIVE_MODULE_CONTENTS variable that contains the list 14# Ebuilds have to provide TEXLIVE_MODULE_CONTENTS variable that contains the list
10# of packages that it will install. 15# of packages that it will install. (See below)
11# TEXLIVE_MODULE_CONTENTS will be expanded to SRC_URI : 16#
12# foo -> texlive-module-foo-${PV}.zip
13# What is assumed is that it unpacks texmf and texmf-dist directories to 17# What is assumed is that it unpacks texmf and texmf-dist directories to
14# ${WORKDIR}. 18# ${WORKDIR}.
15# 19#
20# It inherits texlive-common
21
22# @ECLASS-VARIABLE: TEXLIVE_MODULE_CONTENTS
23# @DESCRIPTION:
24# The list of packages that will be installed. This variable will be expanded to
25# SRC_URI:
26#
27# For TeX Live 2007: foo -> texlive-module-foo-${PV}.zip
28# For TeX Live 2008: foo -> texlive-module-foo-${PV}.tar.lzma
29
30# @ECLASS-VARIABLE: TEXLIVE_MODULE_DOC_CONTENTS
31# @DESCRIPTION:
32# The list of packages that will be installed if the doc useflag is enabled.
33# Expansion to SRC_URI is the same as for TEXLIVE_MODULE_CONTENTS. This is only
34# valid for TeX Live 2008
35
36# @ECLASS-VARIABLE: TEXLIVE_MODULE_SRC_CONTENTS
37# @DESCRIPTION:
38# The list of packages that will be installed if the source useflag is enabled.
39# Expansion to SRC_URI is the same as for TEXLIVE_MODULE_CONTENTS. This is only
40# valid for TeX Live 2008
16 41
17inherit texlive-common 42inherit texlive-common
18 43
19HOMEPAGE="http://www.tug.org/texlive/" 44HOMEPAGE="http://www.tug.org/texlive/"
20 45
46COMMON_DEPEND=">=app-text/texlive-core-${PV}
47 ${TEXLIVE_MODULES_DEPS}"
48
49IUSE=""
50
51# TeX Live 2007 was providing .zip files of CTAN packages. For 2008 they are now
52# .tar.lzma
53if [ -z "${PV##2007*}" ] ; then
21for i in ${TEXLIVE_MODULE_CONTENTS}; do 54for i in ${TEXLIVE_MODULE_CONTENTS}; do
22 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.zip" 55 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.zip"
23done 56done
24
25COMMON_DEPEND=">=app-text/texlive-core-${PV}
26 ${TEXLIVE_MODULES_DEPS}"
27
28DEPEND="${COMMON_DEPEND} 57DEPEND="${COMMON_DEPEND}
29 app-arch/unzip" 58 app-arch/unzip"
59else
60for i in ${TEXLIVE_MODULE_CONTENTS}; do
61 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma"
62done
63DEPEND="${COMMON_DEPEND}
64 app-arch/lzma-utils"
65IUSE="${IUSE} source"
66
67# Forge doc SRC_URI
68[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} doc? ("
69for i in ${TEXLIVE_MODULE_DOC_CONTENTS}; do
70 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma"
71done
72[ -n "${PN##*documentation*}" ] && [ -n "${TEXLIVE_MODULE_DOC_CONTENTS}" ] && SRC_URI="${SRC_URI} )"
73
74# Forge source SRC_URI
75if [ -n "${TEXLIVE_MODULE_SRC_CONTENTS}" ] ; then
76 SRC_URI="${SRC_URI} source? ("
77 for i in ${TEXLIVE_MODULE_SRC_CONTENTS}; do
78 SRC_URI="${SRC_URI} mirror://gentoo/texlive-module-${i}-${PV}.tar.lzma"
79 done
80 SRC_URI="${SRC_URI} )"
81fi
82fi
30 83
31RDEPEND="${COMMON_DEPEND}" 84RDEPEND="${COMMON_DEPEND}"
32 85
33IUSE="doc" 86[ -z "${PN##*documentation*}" ] || IUSE="${IUSE} doc"
34 87
35S="${WORKDIR}" 88S="${WORKDIR}"
36 89
90# @FUNCTION: texlive-module_src_compile
91# @DESCRIPTION:
37# src_compile, exported function: 92# exported function:
38# Will look for format.foo.cnf and build foo format files using fmtutil 93# Will look for format.foo.cnf and build foo format files using fmtutil
39# (provided by texlive-core). The compiled format files will be sent to 94# (provided by texlive-core). The compiled format files will be sent to
40# texmf-var/web2c, like fmtutil defaults to but with some trick to stay in the 95# texmf-var/web2c, like fmtutil defaults to but with some trick to stay in the
41# sandbox 96# sandbox
42# The next step is to generate config files that are to be installed in 97# The next step is to generate config files that are to be installed in
53 || die "failed to build format ${i}" 108 || die "failed to build format ${i}"
54 fi 109 fi
55 done 110 done
56 111
57 # Generate config files 112 # Generate config files
113 # TeX Live 2007 was providing lists. For 2008 they are now tlpobj.
114 if [ -z "${PV##2007*}" ] ; then
58 for i in "${S}"/texmf/lists/*; 115 for i in "${S}"/texmf/lists/*;
59 do 116 do
60 grep '^!' "${i}" | tr ' ' '=' |sort|uniq >> "${T}/jobs" 117 grep '^!' "${i}" | sed -e 's/^!//' | tr ' ' '@' |sort|uniq >> "${T}/jobs"
61 done 118 done
62 119 else
63 for j in $(<"${T}/jobs"); 120 for i in "${S}"/tlpkg/tlpobj/*;
64 do 121 do
65 command=$(echo ${j} | sed 's/.\(.*\)=.*/\1/') 122 grep '^execute ' "${i}" | sed -e 's/^execute //' | tr ' ' '@' |sort|uniq >> "${T}/jobs"
66 parameter=$(echo ${j} | sed 's/.*=\(.*\)/\1/') 123 done
124 fi
125
126 for i in $(<"${T}/jobs");
127 do
128 j="$(echo $i | tr '@' ' ')"
129 command=${j%% *}
130 parameter=${j#* }
67 case "${command}" in 131 case "${command}" in
68 addMap) 132 addMap)
69 echo "Map ${parameter}" >> "${S}/${PN}.cfg";; 133 echo "Map ${parameter}" >> "${S}/${PN}.cfg";;
70 addMixedMap) 134 addMixedMap)
71 echo "MixedMap ${parameter}" >> "${S}/${PN}.cfg";; 135 echo "MixedMap ${parameter}" >> "${S}/${PN}.cfg";;
72 addDvipsMap) 136 addDvipsMap)
73 echo "p +${parameter}" >> "${S}/${PN}-config.ps";; 137 echo "p +${parameter}" >> "${S}/${PN}-config.ps";;
74 addDvipdfmMap) 138 addDvipdfmMap)
75 echo "f ${parameter}" >> "${S}/${PN}-config";; 139 echo "f ${parameter}" >> "${S}/${PN}-config";;
140 AddHyphen)
141 ewarn "Sorry, $command not implemented yet.";;
142 BuildFormat)
143 einfo "Format $parameter already built.";;
144 BuildLanguageDat)
145 einfo "Language file $parameter already generated.";;
146 *)
147 die "No rule to proccess ${command}. Please file a bug."
76 esac 148 esac
77 done 149 done
78} 150}
79 151
152# @FUNCTION: texlive-module_src_install
153# @DESCRIPTION:
80# src_install, exported function: 154# exported function:
81# Install texmf and config files to the system 155# Install texmf and config files to the system
82 156
83texlive-module_src_install() { 157texlive-module_src_install() {
84 for i in texmf/fmtutil/format*.cnf; do 158 for i in texmf/fmtutil/format*.cnf; do
85 [ -f "${i}" ] && etexlinks "${i}" 159 [ -f "${i}" ] && etexlinks "${i}"
86 done 160 done
87 161
88 insinto /usr/share 162 insinto /usr/share
89 if use doc; then 163 if [ -z "${PN##*documentation*}" ] || use doc; then
90 [ -d texmf-doc ] && doins -r texmf-doc 164 [ -d texmf-doc ] && doins -r texmf-doc
91 else 165 else
92 [ -d texmf/doc ] && rm -rf texmf/doc 166 [ -d texmf/doc ] && rm -rf texmf/doc
93 [ -d texmf-dist/doc ] && rm -rf texmf-dist/doc 167 [ -d texmf-dist/doc ] && rm -rf texmf-dist/doc
94 fi 168 fi
95 169
96 [ -d texmf ] && doins -r texmf 170 [ -d texmf ] && doins -r texmf
97 [ -d texmf-dist ] && doins -r texmf-dist 171 [ -d texmf-dist ] && doins -r texmf-dist
172 [ -n "${PV##2007*}" ] && [ -d tlpkg ] && use source && doins -r tlpkg
98 173
99 insinto /var/lib/texmf 174 insinto /var/lib/texmf
100 [ -d texmf-var ] && doins -r texmf-var/* 175 [ -d texmf-var ] && doins -r texmf-var/*
101 176
102 insinto /etc/texmf/updmap.d 177 insinto /etc/texmf/updmap.d
107 [ -f "${S}/${PN}-config" ] && doins "${S}/${PN}-config" 182 [ -f "${S}/${PN}-config" ] && doins "${S}/${PN}-config"
108 183
109 texlive-common_handle_config_files 184 texlive-common_handle_config_files
110} 185}
111 186
112# pkg_postinst and pkg_postrm, exported functions: 187# @FUNCTION: texlive-module_pkg_postinst
188# @DESCRIPTION:
189# exported function:
113# run texmf-update to ensure the tex installation is consistent with the 190# run texmf-update to ensure the tex installation is consistent with the
114# installed texmf trees. 191# installed texmf trees.
115 192
116texlive-module_pkg_postinst() { 193texlive-module_pkg_postinst() {
117 if [ "$ROOT" = "/" ] && [ -x /usr/sbin/texmf-update ] ; then 194 if [ "$ROOT" = "/" ] && [ -x /usr/sbin/texmf-update ] ; then
121 ewarn "Your texmf tree might be inconsistent with your configuration" 198 ewarn "Your texmf tree might be inconsistent with your configuration"
122 ewarn "Please try to figure what has happened" 199 ewarn "Please try to figure what has happened"
123 fi 200 fi
124} 201}
125 202
203# @FUNCTION: texlive-module_pkg_postrm
204# @DESCRIPTION:
205# exported function:
206# run texmf-update to ensure the tex installation is consistent with the
207# installed texmf trees.
208
126texlive-module_pkg_postrm() { 209texlive-module_pkg_postrm() {
127 if [ "$ROOT" = "/" ] && [ -x /usr/sbin/texmf-update ] ; then 210 if [ "$ROOT" = "/" ] && [ -x /usr/sbin/texmf-update ] ; then
128 /usr/sbin/texmf-update 211 /usr/sbin/texmf-update
129 else 212 else
130 ewarn "Cannot run texmf-update for some reason." 213 ewarn "Cannot run texmf-update for some reason."

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.14

  ViewVC Help
Powered by ViewVC 1.1.20