/[gentoo-x86]/eclass/elisp-common.eclass
Gentoo

Diff of /eclass/elisp-common.eclass

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

Revision 1.38 Revision 1.61
1# Copyright 1999-2008 Gentoo Foundation 1# Copyright 1999-2009 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/elisp-common.eclass,v 1.38 2008/04/04 18:11:28 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.61 2009/05/25 16:25:32 fauli Exp $
4# 4#
5# Copyright 2002-2004 Matthew Kennedy <mkennedy@gentoo.org> 5# Copyright 2002-2004 Matthew Kennedy <mkennedy@gentoo.org>
6# Copyright 2003 Jeremy Maitin-Shepard <jbms@attbi.com> 6# Copyright 2003 Jeremy Maitin-Shepard <jbms@attbi.com>
7# Copyright 2004-2005 Mamoru Komachi <usata@gentoo.org> 7# Copyright 2004-2005 Mamoru Komachi <usata@gentoo.org>
8# Copyright 2007-2008 Christian Faulhammer <opfer@gentoo.org> 8# Copyright 2007-2008 Christian Faulhammer <fauli@gentoo.org>
9# Copyright 2007-2008 Ulrich Müller <ulm@gentoo.org> 9# Copyright 2007-2009 Ulrich Müller <ulm@gentoo.org>
10# 10#
11# @ECLASS: elisp-common.eclass 11# @ECLASS: elisp-common.eclass
12# @MAINTAINER: 12# @MAINTAINER:
13# Feel free to contact the Emacs team through <emacs@gentoo.org> if you have 13# Feel free to contact the Emacs team through <emacs@gentoo.org> if you
14# problems, suggestions or questions. 14# have problems, suggestions or questions.
15# @BLURB: Emacs-related installation utilities 15# @BLURB: Emacs-related installation utilities
16# @DESCRIPTION: 16# @DESCRIPTION:
17# 17#
18# Usually you want to use this eclass for (optional) GNU Emacs support of 18# Usually you want to use this eclass for (optional) GNU Emacs support
19# your package. This is NOT for XEmacs! 19# of your package. This is NOT for XEmacs!
20# 20#
21# Many of the steps here are sometimes done by the build system of your 21# Many of the steps here are sometimes done by the build system of your
22# package (especially compilation), so this is mainly for standalone elisp 22# package (especially compilation), so this is mainly for standalone
23# files you gathered from somewhere else. 23# elisp files you gathered from somewhere else.
24# 24#
25# When relying on the emacs USE flag, you need to add 25# When relying on the emacs USE flag, you need to add
26# 26#
27# emacs? ( virtual/emacs ) 27# emacs? ( virtual/emacs )
28# 28#
29# to your DEPEND/RDEPEND line and use the functions provided here to bring 29# to your DEPEND/RDEPEND line and use the functions provided here to
30# the files to the correct locations. 30# bring the files to the correct locations.
31# 31#
32# .SS 32# .SS
33# src_compile() usage: 33# src_compile() usage:
34# 34#
35# An elisp file is compiled by the elisp-compile() function defined here and 35# An elisp file is compiled by the elisp-compile() function defined
36# simply takes the source files as arguments. 36# here and simply takes the source files as arguments. The case of
37# interdependent elisp files is also supported, since the current
38# directory is added to the load-path which makes sure that all files
39# are loadable.
37# 40#
38# elisp-compile *.el || die "elisp-compile failed" 41# elisp-compile *.el || die
39# 42#
40# In the case of interdependent elisp files, you can use the elisp-comp()
41# function which makes sure all files are loadable.
42#
43# elisp-comp *.el || die "elisp-comp failed"
44#
45# Function elisp-make-autoload-file() can be used to generate a file with 43# Function elisp-make-autoload-file() can be used to generate a file
46# autoload definitions for the lisp functions. It takes the output file name 44# with autoload definitions for the lisp functions. It takes the output
47# (default: "${PN}-autoloads.el") and a list of directories (default: working 45# file name (default: "${PN}-autoloads.el") and a list of directories
48# directory) as its arguments. Use of this function requires that the elisp 46# (default: working directory) as its arguments. Use of this function
49# source files contain magic ";;;###autoload" comments. See the Emacs Lisp 47# requires that the elisp source files contain magic ";;;###autoload"
50# Reference Manual (node "Autoload") for a detailed explanation. 48# comments. See the Emacs Lisp Reference Manual (node "Autoload") for
49# a detailed explanation.
51# 50#
52# .SS 51# .SS
53# src_install() usage: 52# src_install() usage:
54# 53#
55# The resulting compiled files (.elc) should be put in a subdirectory of 54# The resulting compiled files (.elc) should be put in a subdirectory of
56# /usr/share/emacs/site-lisp/ which is named after the first argument 55# /usr/share/emacs/site-lisp/ which is named after the first argument
57# of elisp-install(). The following parameters are the files to be put in 56# of elisp-install(). The following parameters are the files to be put
58# that directory. Usually the subdirectory should be ${PN}, you can choose 57# in that directory. Usually the subdirectory should be ${PN}, you can
59# something else, but remember to tell elisp-site-file-install() (see below) 58# choose something else, but remember to tell elisp-site-file-install()
60# the change, as it defaults to ${PN}. 59# (see below) the change, as it defaults to ${PN}.
61# 60#
62# elisp-install ${PN} *.el *.elc || die "elisp-install failed" 61# elisp-install ${PN} *.el *.elc || die
63# 62#
64# To let the Emacs support be activated by Emacs on startup, you need 63# To let the Emacs support be activated by Emacs on startup, you need
65# to provide a site file (shipped in ${FILESDIR}) which contains the startup 64# to provide a site file (shipped in ${FILESDIR}) which contains the
66# code (have a look in the documentation of your software). Normally this 65# startup code (have a look in the documentation of your software).
67# would look like this: 66# Normally this would look like this:
68#
69# ;;; csv-mode site-lisp configuration
70# 67#
71# (add-to-list 'load-path "@SITELISP@") 68# (add-to-list 'load-path "@SITELISP@")
72# (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode)) 69# (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode))
73# (autoload 'csv-mode "csv-mode" "Major mode for csv files." t) 70# (autoload 'csv-mode "csv-mode" "Major mode for csv files." t)
74# 71#
75# If your Emacs support files are installed in a subdirectory of 72# If your Emacs support files are installed in a subdirectory of
76# /usr/share/emacs/site-lisp/ (which is recommended), you need to extend 73# /usr/share/emacs/site-lisp/ (which is strongly recommended), you need
77# Emacs' load-path as shown in the first non-comment. 74# to extend Emacs' load-path as shown in the first non-comment line.
78# The elisp-site-file-install() function of this eclass will replace 75# The elisp-site-file-install() function of this eclass will replace
79# "@SITELISP@" by the actual path. 76# "@SITELISP@" and "@SITEETC@" by the actual paths.
80# 77#
81# The next line tells Emacs to load the mode opening a file ending with 78# The next line tells Emacs to load the mode opening a file ending
82# ".csv" and load functions depending on the context and needed features. 79# with ".csv" and load functions depending on the context and needed
83# Be careful though. Commands as "load-library" or "require" bloat the 80# features. Be careful though. Commands as "load-library" or "require"
84# editor as they are loaded on every startup. When having a lot of Emacs 81# bloat the editor as they are loaded on every startup. When having
85# support files, users may be annoyed by the start-up time. Also avoid 82# many Emacs support files, users may be annoyed by the start-up time.
86# keybindings as they might interfere with the user's settings. Give a hint 83# Also avoid keybindings as they might interfere with the user's
87# in pkg_postinst(), which should be enough. 84# settings. Give a hint in pkg_postinst(), which should be enough.
88# 85#
89# The naming scheme for this site file is "[0-9][0-9]*-gentoo.el", where the 86# The naming scheme for this site-init file matches the shell pattern
90# two digits at the beginning define the loading order. So if you depend on 87# "[1-8][0-9]*-gentoo*.el", where the two digits at the beginning define
88# the loading order (numbers below 10 or above 89 are reserved for
89# internal use). So if your initialisation depends on another Emacs
91# another Emacs package, your site file's number must be higher! 90# package, your site file's number must be higher!
92# 91#
93# Best practice is to define a SITEFILE variable in the global scope of your 92# Best practice is to define a SITEFILE variable in the global scope of
94# ebuild (right after DEPEND e.g.): 93# your ebuild (e.g., right after S or RDEPEND):
95# 94#
96# SITEFILE=50${PN}-gentoo.el 95# SITEFILE="50${PN}-gentoo.el"
97# 96#
98# Which is then installed by 97# Which is then installed by
99# 98#
100# elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die 99# elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
101# 100#
101# in src_install(). Any characters after the "-gentoo" part and before
102# the extension will be stripped from the destination file's name.
103# For example, a file "50${PN}-gentoo-${PV}.el" will be installed as
102# in src_install(). If your subdirectory is not named ${PN}, give the 104# "50${PN}-gentoo.el". If your subdirectory is not named ${PN}, give
103# differing name as second argument. 105# the differing name as second argument.
104# 106#
105# .SS 107# .SS
106# pkg_postinst() / pkg_postrm() usage: 108# pkg_postinst() / pkg_postrm() usage:
107# 109#
108# After that you need to recreate the start-up file of Emacs after emerging 110# After that you need to recreate the start-up file of Emacs after
109# and unmerging by using 111# emerging and unmerging by using
110# 112#
111# pkg_postinst() { 113# pkg_postinst() {
112# elisp-site-regen 114# elisp-site-regen
113# } 115# }
114# 116#
115# pkg_postrm() { 117# pkg_postrm() {
116# elisp-site-regen 118# elisp-site-regen
117# } 119# }
118# 120#
119# When having optional Emacs support, you should prepend "use emacs &&" to 121# When having optional Emacs support, you should prepend "use emacs &&"
120# above calls of elisp-site-regen(). Don't use "has_version virtual/emacs"! 122# to above calls of elisp-site-regen().
121# When unmerging the state of the emacs USE flag is taken from the package 123# Don't use "has_version virtual/emacs"! When unmerging the state of
122# database and not from the environment, so it is no problem when you unset 124# the emacs USE flag is taken from the package database and not from the
125# environment, so it is no problem when you unset USE=emacs between
123# USE=emacs between merge and unmerge of a package. 126# merge and unmerge of a package.
124# 127#
125# .SS 128# .SS
126# Miscellaneous functions: 129# Miscellaneous functions:
127# 130#
128# elisp-emacs-version() outputs the version of the currently active Emacs. 131# elisp-emacs-version() outputs the version of the currently active Emacs.
130# @ECLASS-VARIABLE: SITELISP 133# @ECLASS-VARIABLE: SITELISP
131# @DESCRIPTION: 134# @DESCRIPTION:
132# Directory where packages install Emacs Lisp files. 135# Directory where packages install Emacs Lisp files.
133SITELISP=/usr/share/emacs/site-lisp 136SITELISP=/usr/share/emacs/site-lisp
134 137
138# @ECLASS-VARIABLE: SITEETC
139# @DESCRIPTION:
135# Directory where packages install miscellaneous (not Lisp) files. 140# Directory where packages install miscellaneous (not Lisp) files.
136SITEETC=/usr/share/emacs/etc 141SITEETC=/usr/share/emacs/etc
137 142
138# @ECLASS-VARIABLE: SITEFILE 143# @ECLASS-VARIABLE: EMACS
139# @DESCRIPTION: 144# @DESCRIPTION:
140# Name of package's site-init file. 145# Path of Emacs executable.
141SITEFILE=50${PN}-gentoo.el
142
143EMACS=/usr/bin/emacs 146EMACS=/usr/bin/emacs
147
148# @ECLASS-VARIABLE: EMACSFLAGS
149# @DESCRIPTION:
150# Flags for executing Emacs in batch mode.
144# The following works for Emacs versions 18-23, don't change it. 151# These work for Emacs versions 18-23, so don't change them.
145EMACSFLAGS="-batch -q --no-site-file" 152EMACSFLAGS="-batch -q --no-site-file"
153
154# @ECLASS-VARIABLE: BYTECOMPFLAGS
155# @DESCRIPTION:
156# Emacs flags used for byte-compilation in elisp-compile().
157BYTECOMPFLAGS="-L ."
146 158
147# @FUNCTION: elisp-compile 159# @FUNCTION: elisp-compile
148# @USAGE: <list of elisp files> 160# @USAGE: <list of elisp files>
149# @DESCRIPTION: 161# @DESCRIPTION:
150# Byte-compile Emacs Lisp files. 162# Byte-compile Emacs Lisp files.
163#
164# This function uses GNU Emacs to byte-compile all ".el" specified by
165# its arguments. The resulting byte-code (".elc") files are placed in
166# the same directory as their corresponding source file.
167#
168# The current directory is added to the load-path. This will ensure
169# that interdependent Emacs Lisp files are visible between themselves,
170# in case they require or load one another.
151 171
152elisp-compile() { 172elisp-compile() {
153 ebegin "Compiling GNU Emacs Elisp files" 173 ebegin "Compiling GNU Emacs Elisp files"
154 ${EMACS} ${EMACSFLAGS} -f batch-byte-compile "$@" 174 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
155 eend $? "batch-byte-compile failed" 175 eend $? "elisp-compile: batch-byte-compile failed"
156} 176}
157
158# @FUNCTION: elisp-comp
159# @USAGE: <list of elisp files>
160# @DESCRIPTION:
161# Byte-compile interdependent Emacs Lisp files.
162#
163# This function byte-compiles all ".el" files which are part of its
164# arguments, using GNU Emacs, and puts the resulting ".elc" files into the
165# current directory, so disregarding the original directories used in ".el"
166# arguments.
167#
168# This function manages in such a way that all Emacs Lisp files to be
169# compiled are made visible between themselves, in the event they require or
170# load one another.
171 177
172elisp-comp() { 178elisp-comp() {
173 # Copyright 1995 Free Software Foundation, Inc. 179 die "Function elisp-comp is not supported any more, see bug 235442"
174 # François Pinard <pinard@iro.umontreal.ca>, 1995.
175 # Originally taken from GNU autotools.
176
177 [ $# -gt 0 ] || return 1
178
179 ebegin "Compiling GNU Emacs Elisp files"
180
181 tempdir=elc.$$
182 mkdir ${tempdir}
183 cp "$@" ${tempdir}
184 pushd ${tempdir}
185
186 echo "(add-to-list 'load-path \"../\")" > script
187 ${EMACS} ${EMACSFLAGS} -l script -f batch-byte-compile *.el
188 local ret=$?
189 mv *.elc ..
190
191 popd
192 rm -fr ${tempdir}
193
194 eend ${ret} "batch-byte-compile failed"
195 return ${ret}
196} 180}
197 181
198# @FUNCTION: elisp-emacs-version 182# @FUNCTION: elisp-emacs-version
199# @DESCRIPTION: 183# @DESCRIPTION:
200# Output version of currently active Emacs. 184# Output version of currently active Emacs.
236 ${EMACS} ${EMACSFLAGS} \ 220 ${EMACS} ${EMACSFLAGS} \
237 --eval "(setq make-backup-files nil)" \ 221 --eval "(setq make-backup-files nil)" \
238 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \ 222 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \
239 -f batch-update-autoloads "${@-.}" 223 -f batch-update-autoloads "${@-.}"
240 224
241 eend $? "batch-update-autoloads failed" 225 eend $? "elisp-make-autoload-file: batch-update-autoloads failed"
242} 226}
243 227
244# @FUNCTION: elisp-install 228# @FUNCTION: elisp-install
245# @USAGE: <subdirectory> <list of files> 229# @USAGE: <subdirectory> <list of files>
246# @DESCRIPTION: 230# @DESCRIPTION:
252 ebegin "Installing Elisp files for GNU Emacs support" 236 ebegin "Installing Elisp files for GNU Emacs support"
253 ( # subshell to avoid pollution of calling environment 237 ( # subshell to avoid pollution of calling environment
254 insinto "${SITELISP}/${subdir}" 238 insinto "${SITELISP}/${subdir}"
255 doins "$@" 239 doins "$@"
256 ) 240 )
257 eend $? "doins failed" 241 eend $? "elisp-install: doins failed"
258} 242}
259 243
260# @FUNCTION: elisp-site-file-install 244# @FUNCTION: elisp-site-file-install
261# @USAGE: <site-init file> [subdirectory] 245# @USAGE: <site-init file> [subdirectory]
262# @DESCRIPTION: 246# @DESCRIPTION:
263# Install Emacs site-init file in SITELISP directory. 247# Install Emacs site-init file in SITELISP directory. Automatically
248# inserts a standard comment header with the name of the package (unless
249# it is already present). Tokens @SITELISP@ and @SITEETC@ are replaced
250# by the path to the package's subdirectory in SITELISP and SITEETC,
251# respectively.
264 252
265elisp-site-file-install() { 253elisp-site-file-install() {
266 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret 254 local sf="${1##*/}" my_pn="${2:-${PN}}" ret
255 local header=";;; ${PN} site-lisp configuration"
256
257 [[ ${sf} == [0-9][0-9]*-gentoo*.el ]] \
258 || ewarn "elisp-site-file-install: bad name of site-init file"
259 sf="${T}/${sf/%-gentoo*.el/-gentoo.el}"
267 ebegin "Installing site initialisation file for GNU Emacs" 260 ebegin "Installing site initialisation file for GNU Emacs"
268 cp "$1" "${sf}" 261 [[ $1 = ${sf} ]] || cp "$1" "${sf}"
262 sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" \
269 sed -i -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \ 263 -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \
270 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g" "${sf}" 264 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}"
271 ( # subshell to avoid pollution of calling environment 265 ( # subshell to avoid pollution of calling environment
272 insinto "${SITELISP}/site-gentoo.d" 266 insinto "${SITELISP}/site-gentoo.d"
273 doins "${sf}" 267 doins "${sf}"
274 ) 268 )
275 ret=$? 269 ret=$?
276 rm -f "${sf}" 270 rm -f "${sf}"
277 eend ${ret} "doins failed" 271 eend ${ret} "elisp-site-file-install: doins failed"
278} 272}
279 273
280# @FUNCTION: elisp-site-regen 274# @FUNCTION: elisp-site-regen
281# @DESCRIPTION: 275# @DESCRIPTION:
282# Regenerate site-gentoo.el file. The old location for site initialisation 276# Regenerate the site-gentoo.el file, based on packages' site
283# files of packages was /usr/share/emacs/site-lisp/. In December 2007 this 277# initialisation files in the /usr/share/emacs/site-lisp/site-gentoo.d/
284# has been changed to /usr/share/emacs/site-lisp/site-gentoo.d/. Remerge of 278# directory.
285# packages with Emacs support is enough, the old location is still supported 279#
286# when generating the start-up file. 280# Note: Before December 2007, site initialisation files were installed
281# in /usr/share/emacs/site-lisp/. For backwards compatibility, this
282# location is still supported when generating site-gentoo.el.
287 283
288elisp-site-regen() { 284elisp-site-regen() {
289 local i sf line obsolete 285 local i sf line obsolete
290 local -a sflist 286 local -a sflist
291 # Work around Paludis borkage: variable T is empty in pkg_postrm
292 local tmpdir=${T:-/tmp}
293 287
294 if [ ! -d "${ROOT}${SITELISP}" ]; then 288 if [ ! -d "${ROOT}${SITELISP}" ]; then
295 eerror "Directory ${SITELISP} does not exist" 289 eerror "elisp-site-regen: Directory ${SITELISP} does not exist"
296 return 1 290 return 1
297 fi 291 fi
298 292
299 if [ ! -e "${ROOT}${SITELISP}"/site-gentoo.el ] \ 293 if [ ! -d "${T}" ]; then
300 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ]; then 294 eerror "elisp-site-regen: Temporary directory ${T} does not exist"
301 einfo "Creating default ${SITELISP}/site-start.el ..." 295 return 1
302 cat <<-EOF >"${tmpdir}"/site-start.el
303 ;;; site-start.el
304
305 ;;; Commentary:
306 ;; This default site startup file is installed by elisp-common.eclass.
307 ;; You may replace this file by your own site initialisation, or even
308 ;; remove it completely; it will not be recreated.
309
310 ;;; Code:
311 ;; Load site initialisation for Gentoo-installed packages.
312 (require 'site-gentoo)
313
314 ;;; site-start.el ends here
315 EOF
316 fi 296 fi
317 297
318 einfon "Regenerating ${SITELISP}/site-gentoo.el ..." 298 einfon "Regenerating site-gentoo.el for GNU Emacs (${EBUILD_PHASE}) ..."
319 299
320 # remove auxiliary file 300 # Until January 2009, elisp-common.eclass sometimes created an
301 # auxiliary file for backwards compatibility. Remove any such file.
321 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el 302 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el
322 303
323 # set nullglob option, there may be a directory without matching files 304 # set nullglob option, there may be a directory without matching files
324 local old_shopts=$(shopt -p nullglob) 305 local old_shopts=$(shopt -p nullglob)
325 shopt -s nullglob 306 shopt -s nullglob
338 [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t 319 [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t
339 done 320 done
340 321
341 eval "${old_shopts}" 322 eval "${old_shopts}"
342 323
343 cat <<-EOF >"${tmpdir}"/site-gentoo.el 324 cat <<-EOF >"${T}"/site-gentoo.el
344 ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages 325 ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages
345 326
346 ;;; Commentary: 327 ;;; Commentary:
347 ;; Automatically generated by elisp-common.eclass 328 ;; Automatically generated by elisp-common.eclass
348 ;; DO NOT EDIT THIS FILE 329 ;; DO NOT EDIT THIS FILE
349 330
350 ;;; Code: 331 ;;; Code:
351 EOF 332 EOF
333 # Use sed instead of cat here, since files may miss a trailing newline.
352 cat "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el 334 sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el
353 cat <<-EOF >>"${tmpdir}"/site-gentoo.el 335 cat <<-EOF >>"${T}"/site-gentoo.el
354 336
355 (provide 'site-gentoo) 337 (provide 'site-gentoo)
356 338
357 ;; Local Variables: 339 ;; Local Variables:
358 ;; no-byte-compile: t 340 ;; no-byte-compile: t
359 ;; End: 341 ;; End:
360 ;;; site-gentoo.el ends here 342 ;;; site-gentoo.el ends here
361 EOF 343 EOF
362 344
363 if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${tmpdir}"/site-gentoo.el 345 if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el
364 then 346 then
365 # This prevents outputting unnecessary text when there 347 # This prevents outputting unnecessary text when there
366 # was actually no change. 348 # was actually no change.
367 # A case is a remerge where we have doubled output. 349 # A case is a remerge where we have doubled output.
368 echo " no changes." 350 echo " no changes."
369 else 351 else
370 mv "${tmpdir}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el 352 mv "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el
371 [ -f "${tmpdir}"/site-start.el ] \
372 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ] \
373 && mv "${tmpdir}"/site-start.el "${ROOT}${SITELISP}"/site-start.el
374 echo; einfo
375 for sf in "${sflist[@]##*/}"; do
376 einfo " Adding ${sf} ..."
377 done
378 einfo "Regenerated ${SITELISP}/site-gentoo.el."
379
380 echo 353 echo
381 while read line; do einfo "${line}"; done <<EOF 354 einfo "... ${#sflist[@]} site initialisation file(s) included."
382All site initialisation for Gentoo-installed packages is added to 355 fi
383/usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is no longer
384managed by Gentoo. You are responsible for all maintenance of
385site-start.el if there is such a file.
386 356
387In order for this site initialisation to be loaded for all users 357 if [ "${obsolete}" ]; then
388automatically, you can add a line like this:
389
390 (require 'site-gentoo)
391
392to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line
393can be added by individual users to their initialisation files, or,
394for greater flexibility, users can load individual package-specific
395initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/.
396EOF
397 echo 358 echo
398
399 if [ "${obsolete}" ]; then
400 while read line; do ewarn "${line}"; done <<-EOF 359 while read line; do ewarn "${line}"; done <<-EOF
401 Site-initialisation files of Emacs packages are now installed in 360 Site-initialisation files of Emacs packages are now installed in
402 /usr/share/emacs/site-lisp/site-gentoo.d/. You may consider using 361 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend
403 /usr/sbin/emacs-updater to rebuild the installed Emacs packages. 362 that you use app-admin/emacs-updater to rebuild the installed
404 However, the old location is still supported. 363 Emacs packages.
405 EOF 364 EOF
406 echo
407 fi
408 fi 365 fi
409 366
410 # Kludge for backwards compatibility: During pkg_postrm, old versions
411 # of this eclass (saved in the VDB) won't find packages' site-init files
412 # in the new location. So we copy them to an auxiliary file that is
413 # visible to old eclass versions.
414 for sf in "${sflist[@]}"; do
415 [ "${sf%/*}" = "${ROOT}${SITELISP}/site-gentoo.d" ] \
416 && cat "${sf}" >>"${ROOT}${SITELISP}"/00site-gentoo.el
417 done
418
419 # cleanup 367 # cleanup
420 rm -f "${tmpdir}"/site-{gentoo,start}.el 368 rm -f "${T}"/site-gentoo.el
369
370 return 0
421} 371}

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.61

  ViewVC Help
Powered by ViewVC 1.1.20