/[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.37 Revision 1.60
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.37 2008/03/07 08:19:19 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.60 2009/04/14 15:45:45 ulm 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# 67#
69# ;;; csv-mode site-lisp configuration 68# ;;; csv-mode site-lisp configuration
70# 69#
71# (add-to-list 'load-path "@SITELISP@") 70# (add-to-list 'load-path "@SITELISP@")
72# (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode)) 71# (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode))
73# (autoload 'csv-mode "csv-mode" "Major mode for csv files." t) 72# (autoload 'csv-mode "csv-mode" "Major mode for csv files." t)
74# 73#
75# If your Emacs support files are installed in a subdirectory of 74# If your Emacs support files are installed in a subdirectory of
76# /usr/share/emacs/site-lisp/ (which is recommended), you need to extend 75# /usr/share/emacs/site-lisp/ (which is strongly recommended), you need
77# Emacs' load-path as shown in the first non-comment. 76# 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 77# The elisp-site-file-install() function of this eclass will replace
79# "@SITELISP@" by the actual path. 78# "@SITELISP@" and "@SITEETC@" by the actual paths.
80# 79#
81# The next line tells Emacs to load the mode opening a file ending with 80# 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. 81# with ".csv" and load functions depending on the context and needed
83# Be careful though. Commands as "load-library" or "require" bloat the 82# 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 83# 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 84# 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 85# Also avoid keybindings as they might interfere with the user's
87# in pkg_postinst(), which should be enough. 86# settings. Give a hint in pkg_postinst(), which should be enough.
88# 87#
89# The naming scheme for this site file is "[0-9][0-9]*-gentoo.el", where the 88# 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 89# "[1-8][0-9]*-gentoo*.el", where the two digits at the beginning define
90# the loading order (numbers below 10 or above 89 are reserved for
91# internal use). So if your initialisation depends on another Emacs
91# another Emacs package, your site file's number must be higher! 92# package, your site file's number must be higher!
92# 93#
93# Best practice is to define a SITEFILE variable in the global scope of your 94# Best practice is to define a SITEFILE variable in the global scope of
94# ebuild (right after DEPEND e.g.): 95# your ebuild (e.g., right after S or RDEPEND):
95# 96#
96# SITEFILE=50${PN}-gentoo.el 97# SITEFILE="50${PN}-gentoo.el"
97# 98#
98# Which is then installed by 99# Which is then installed by
99# 100#
100# elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die 101# elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
101# 102#
103# in src_install(). Any characters after the "-gentoo" part and before
104# the extension will be stripped from the destination file's name.
105# 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 106# "50${PN}-gentoo.el". If your subdirectory is not named ${PN}, give
103# differing name as second argument. 107# the differing name as second argument.
104# 108#
105# .SS 109# .SS
106# pkg_postinst() / pkg_postrm() usage: 110# pkg_postinst() / pkg_postrm() usage:
107# 111#
108# After that you need to recreate the start-up file of Emacs after emerging 112# After that you need to recreate the start-up file of Emacs after
109# and unmerging by using 113# emerging and unmerging by using
110# 114#
111# pkg_postinst() { 115# pkg_postinst() {
112# elisp-site-regen 116# elisp-site-regen
113# } 117# }
114# 118#
115# pkg_postrm() { 119# pkg_postrm() {
116# elisp-site-regen 120# elisp-site-regen
117# } 121# }
118# 122#
119# When having optional Emacs support, you should prepend "use emacs &&" to 123# When having optional Emacs support, you should prepend "use emacs &&"
120# above calls of elisp-site-regen(). Don't use "has_version virtual/emacs"! 124# to above calls of elisp-site-regen().
121# When unmerging the state of the emacs USE flag is taken from the package 125# 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 126# the emacs USE flag is taken from the package database and not from the
127# environment, so it is no problem when you unset USE=emacs between
123# USE=emacs between merge and unmerge of a package. 128# merge and unmerge of a package.
124# 129#
125# .SS 130# .SS
126# Miscellaneous functions: 131# Miscellaneous functions:
127# 132#
128# elisp-emacs-version() outputs the version of the currently active Emacs. 133# elisp-emacs-version() outputs the version of the currently active Emacs.
130# @ECLASS-VARIABLE: SITELISP 135# @ECLASS-VARIABLE: SITELISP
131# @DESCRIPTION: 136# @DESCRIPTION:
132# Directory where packages install Emacs Lisp files. 137# Directory where packages install Emacs Lisp files.
133SITELISP=/usr/share/emacs/site-lisp 138SITELISP=/usr/share/emacs/site-lisp
134 139
140# @ECLASS-VARIABLE: SITEETC
141# @DESCRIPTION:
135# Directory where packages install miscellaneous (not Lisp) files. 142# Directory where packages install miscellaneous (not Lisp) files.
136SITEETC=/usr/share/emacs/etc 143SITEETC=/usr/share/emacs/etc
137 144
138# @ECLASS-VARIABLE: SITEFILE 145# @ECLASS-VARIABLE: EMACS
139# @DESCRIPTION: 146# @DESCRIPTION:
140# Name of package's site-init file. 147# Path of Emacs executable.
141SITEFILE=50${PN}-gentoo.el
142
143EMACS=/usr/bin/emacs 148EMACS=/usr/bin/emacs
149
150# @ECLASS-VARIABLE: EMACSFLAGS
151# @DESCRIPTION:
152# Flags for executing Emacs in batch mode.
144# The following works for Emacs versions 18--23, don't change it. 153# These work for Emacs versions 18-23, so don't change them.
145EMACSFLAGS="-batch -q --no-site-file" 154EMACSFLAGS="-batch -q --no-site-file"
155
156# @ECLASS-VARIABLE: BYTECOMPFLAGS
157# @DESCRIPTION:
158# Emacs flags used for byte-compilation in elisp-compile().
159BYTECOMPFLAGS="-L ."
146 160
147# @FUNCTION: elisp-compile 161# @FUNCTION: elisp-compile
148# @USAGE: <list of elisp files> 162# @USAGE: <list of elisp files>
149# @DESCRIPTION: 163# @DESCRIPTION:
150# Byte-compile Emacs Lisp files. 164# Byte-compile Emacs Lisp files.
165#
166# This function uses GNU Emacs to byte-compile all ".el" specified by
167# its arguments. The resulting byte-code (".elc") files are placed in
168# the same directory as their corresponding source file.
169#
170# The current directory is added to the load-path. This will ensure
171# that interdependent Emacs Lisp files are visible between themselves,
172# in case they require or load one another.
151 173
152elisp-compile() { 174elisp-compile() {
153 ebegin "Compiling GNU Emacs Elisp files" 175 ebegin "Compiling GNU Emacs Elisp files"
154 ${EMACS} ${EMACSFLAGS} -f batch-byte-compile "$@" 176 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
155 eend $? "batch-byte-compile failed" 177 eend $? "elisp-compile: batch-byte-compile failed"
156} 178}
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 179
172elisp-comp() { 180elisp-comp() {
173 # Copyright 1995 Free Software Foundation, Inc. 181 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} 182}
197 183
198# @FUNCTION: elisp-emacs-version 184# @FUNCTION: elisp-emacs-version
199# @DESCRIPTION: 185# @DESCRIPTION:
200# Output version of currently active Emacs. 186# Output version of currently active Emacs.
201 187
202elisp-emacs-version() { 188elisp-emacs-version() {
203 # The following will work for at least versions 18--23. 189 # The following will work for at least versions 18-23.
204 echo "(princ emacs-version)" >"${T}"/emacs-version.el 190 echo "(princ emacs-version)" >"${T}"/emacs-version.el
205 ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el 191 ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el
206 rm -f "${T}"/emacs-version.el 192 rm -f "${T}"/emacs-version.el
207} 193}
208 194
236 ${EMACS} ${EMACSFLAGS} \ 222 ${EMACS} ${EMACSFLAGS} \
237 --eval "(setq make-backup-files nil)" \ 223 --eval "(setq make-backup-files nil)" \
238 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \ 224 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \
239 -f batch-update-autoloads "${@-.}" 225 -f batch-update-autoloads "${@-.}"
240 226
241 eend $? "batch-update-autoloads failed" 227 eend $? "elisp-make-autoload-file: batch-update-autoloads failed"
242} 228}
243 229
244# @FUNCTION: elisp-install 230# @FUNCTION: elisp-install
245# @USAGE: <subdirectory> <list of files> 231# @USAGE: <subdirectory> <list of files>
246# @DESCRIPTION: 232# @DESCRIPTION:
252 ebegin "Installing Elisp files for GNU Emacs support" 238 ebegin "Installing Elisp files for GNU Emacs support"
253 ( # subshell to avoid pollution of calling environment 239 ( # subshell to avoid pollution of calling environment
254 insinto "${SITELISP}/${subdir}" 240 insinto "${SITELISP}/${subdir}"
255 doins "$@" 241 doins "$@"
256 ) 242 )
257 eend $? "doins failed" 243 eend $? "elisp-install: doins failed"
258} 244}
259 245
260# @FUNCTION: elisp-site-file-install 246# @FUNCTION: elisp-site-file-install
261# @USAGE: <site-init file> [subdirectory] 247# @USAGE: <site-init file> [subdirectory]
262# @DESCRIPTION: 248# @DESCRIPTION:
263# Install Emacs site-init file in SITELISP directory. 249# Install Emacs site-init file in SITELISP directory. Automatically
250# inserts a standard comment header with the name of the package (unless
251# it is already present). Tokens @SITELISP@ and @SITEETC@ are replaced
252# by the path to the package's subdirectory in SITELISP and SITEETC,
253# respectively.
264 254
265elisp-site-file-install() { 255elisp-site-file-install() {
266 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret 256 local sf="${1##*/}" my_pn="${2:-${PN}}" ret
257 local header=";;; ${PN} site-lisp configuration"
258
259 [[ ${sf} == [0-9][0-9]*-gentoo*.el ]] \
260 || ewarn "elisp-site-file-install: bad name of site-init file"
261 sf="${T}/${sf/%-gentoo*.el/-gentoo.el}"
267 ebegin "Installing site initialisation file for GNU Emacs" 262 ebegin "Installing site initialisation file for GNU Emacs"
268 cp "$1" "${sf}" 263 [[ $1 = ${sf} ]] || cp "$1" "${sf}"
264 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" \ 265 -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \
270 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g" "${sf}" 266 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}"
271 ( # subshell to avoid pollution of calling environment 267 ( # subshell to avoid pollution of calling environment
272 insinto "${SITELISP}/site-gentoo.d" 268 insinto "${SITELISP}/site-gentoo.d"
273 doins "${sf}" 269 doins "${sf}"
274 ) 270 )
275 ret=$? 271 ret=$?
276 rm -f "${sf}" 272 rm -f "${sf}"
277 eend ${ret} "doins failed" 273 eend ${ret} "elisp-site-file-install: doins failed"
278} 274}
279 275
280# @FUNCTION: elisp-site-regen 276# @FUNCTION: elisp-site-regen
281# @DESCRIPTION: 277# @DESCRIPTION:
282# Regenerate site-gentoo.el file. The old location for site initialisation 278# Regenerate the site-gentoo.el file, based on packages' site
283# files of packages was /usr/share/emacs/site-lisp/. In December 2007 this 279# 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 280# directory.
285# packages with Emacs support is enough, the old location is still supported 281#
286# when generating the start-up file. 282# Note: Before December 2007, site initialisation files were installed
283# in /usr/share/emacs/site-lisp/. For backwards compatibility, this
284# location is still supported when generating site-gentoo.el.
287 285
288elisp-site-regen() { 286elisp-site-regen() {
289 local i sf line obsolete 287 local i sf line obsolete
290 local -a sflist 288 local -a sflist
291 local tmpdir=${T:-/tmp}
292 289
293 if [ ! -e "${ROOT}${SITELISP}"/site-gentoo.el ] \
294 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ]; then 290 if [ ! -d "${ROOT}${SITELISP}" ]; then
295 einfo "Creating default ${SITELISP}/site-start.el ..." 291 eerror "elisp-site-regen: Directory ${SITELISP} does not exist"
296 cat <<-EOF >"${tmpdir}"/site-start.el 292 return 1
297 ;;; site-start.el
298
299 ;;; Commentary:
300 ;; This default site startup file is installed by elisp-common.eclass.
301 ;; You may replace this file by your own site initialisation, or even
302 ;; remove it completely; it will not be recreated.
303
304 ;;; Code:
305 ;; Load site initialisation for Gentoo-installed packages.
306 (require 'site-gentoo)
307
308 ;;; site-start.el ends here
309 EOF
310 fi 293 fi
311 294
312 einfon "Regenerating ${SITELISP}/site-gentoo.el ..." 295 if [ ! -d "${T}" ]; then
296 eerror "elisp-site-regen: Temporary directory ${T} does not exist"
297 return 1
298 fi
313 299
314 # remove auxiliary file 300 einfon "Regenerating site-gentoo.el for GNU Emacs (${EBUILD_PHASE}) ..."
301
302 # Until January 2009, elisp-common.eclass sometimes created an
303 # auxiliary file for backwards compatibility. Remove any such file.
315 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el 304 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el
316 305
317 # set nullglob option, there may be a directory without matching files 306 # set nullglob option, there may be a directory without matching files
318 local old_shopts=$(shopt -p nullglob) 307 local old_shopts=$(shopt -p nullglob)
319 shopt -s nullglob 308 shopt -s nullglob
332 [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t 321 [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t
333 done 322 done
334 323
335 eval "${old_shopts}" 324 eval "${old_shopts}"
336 325
337 cat <<-EOF >"${tmpdir}"/site-gentoo.el 326 cat <<-EOF >"${T}"/site-gentoo.el
338 ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages 327 ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages
339 328
340 ;;; Commentary: 329 ;;; Commentary:
341 ;; Automatically generated by elisp-common.eclass 330 ;; Automatically generated by elisp-common.eclass
342 ;; DO NOT EDIT THIS FILE 331 ;; DO NOT EDIT THIS FILE
343 332
344 ;;; Code: 333 ;;; Code:
345 EOF 334 EOF
335 # Use sed instead of cat here, since files may miss a trailing newline.
346 cat "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el 336 sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el
347 cat <<-EOF >>"${tmpdir}"/site-gentoo.el 337 cat <<-EOF >>"${T}"/site-gentoo.el
348 338
349 (provide 'site-gentoo) 339 (provide 'site-gentoo)
350 340
351 ;; Local Variables: 341 ;; Local Variables:
352 ;; no-byte-compile: t 342 ;; no-byte-compile: t
353 ;; End: 343 ;; End:
354 ;;; site-gentoo.el ends here 344 ;;; site-gentoo.el ends here
355 EOF 345 EOF
356 346
357 if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${tmpdir}"/site-gentoo.el 347 if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el
358 then 348 then
359 # This prevents outputting unnecessary text when there 349 # This prevents outputting unnecessary text when there
360 # was actually no change. 350 # was actually no change.
361 # A case is a remerge where we have doubled output. 351 # A case is a remerge where we have doubled output.
362 echo " no changes." 352 echo " no changes."
363 else 353 else
364 mv "${tmpdir}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el 354 mv "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el
365 [ -f "${tmpdir}"/site-start.el ] \
366 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ] \
367 && mv "${tmpdir}"/site-start.el "${ROOT}${SITELISP}"/site-start.el
368 echo; einfo
369 for sf in "${sflist[@]##*/}"; do
370 einfo " Adding ${sf} ..."
371 done
372 einfo "Regenerated ${SITELISP}/site-gentoo.el."
373
374 echo 355 echo
375 while read line; do einfo "${line}"; done <<EOF 356 einfo "... ${#sflist[@]} site initialisation file(s) included."
376All site initialisation for Gentoo-installed packages is added to 357 fi
377/usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is no longer
378managed by Gentoo. You are responsible for all maintenance of
379site-start.el if there is such a file.
380 358
381In order for this site initialisation to be loaded for all users 359 if [ "${obsolete}" ]; then
382automatically, you can add a line like this:
383
384 (require 'site-gentoo)
385
386to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line
387can be added by individual users to their initialisation files, or,
388for greater flexibility, users can load individual package-specific
389initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/.
390EOF
391 echo 360 echo
392
393 if [ "${obsolete}" ]; then
394 while read line; do ewarn "${line}"; done <<-EOF 361 while read line; do ewarn "${line}"; done <<-EOF
395 Site-initialisation files of Emacs packages are now installed in 362 Site-initialisation files of Emacs packages are now installed in
396 /usr/share/emacs/site-lisp/site-gentoo.d/. You may consider using 363 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend
397 /usr/sbin/emacs-updater to rebuild the installed Emacs packages. 364 that you use app-admin/emacs-updater to rebuild the installed
398 However, the old location is still supported. 365 Emacs packages.
399 EOF 366 EOF
400 echo
401 fi
402 fi 367 fi
403 368
404 # Kludge for backwards compatibility: During pkg_postrm, old versions
405 # of this eclass (saved in the VDB) won't find packages' site-init files
406 # in the new location. So we copy them to an auxiliary file that is
407 # visible to old eclass versions.
408 for sf in "${sflist[@]}"; do
409 [ "${sf%/*}" = "${ROOT}${SITELISP}/site-gentoo.d" ] \
410 && cat "${sf}" >>"${ROOT}${SITELISP}"/00site-gentoo.el
411 done
412
413 # cleanup 369 # cleanup
414 rm -f "${tmpdir}"/site-{gentoo,start}.el 370 rm -f "${T}"/site-gentoo.el
371
372 return 0
415} 373}

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.60

  ViewVC Help
Powered by ViewVC 1.1.20