/[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.47 Revision 1.52
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/elisp-common.eclass,v 1.47 2008/09/24 09:47:04 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.52 2008/11/24 14:21:04 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 <opfer@gentoo.org>
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 here and
36# simply takes the source files as arguments. The case of interdependent 36# simply takes the source files as arguments. The case of interdependent
37# elisp files is also supported, since the current directory is added to the 37# elisp files is also supported, since the current directory is added to the
38# load-path which makes sure that all files are loadable. 38# load-path which makes sure that all files are loadable.
39# 39#
40# elisp-compile *.el || die "elisp-compile failed" 40# elisp-compile *.el || die
41# 41#
42# Formerly, function elisp-comp() was used for compilation of interdependent 42# Formerly, function elisp-comp() was used for compilation of interdependent
43# elisp files. This usage is considered as obsolete. 43# elisp files. This usage is considered as obsolete.
44# 44#
45# Function elisp-make-autoload-file() can be used to generate a file with 45# Function elisp-make-autoload-file() can be used to generate a file with
57# of elisp-install(). The following parameters are the files to be put in 57# of elisp-install(). The following parameters are the files to be put in
58# that directory. Usually the subdirectory should be ${PN}, you can choose 58# that directory. Usually the subdirectory should be ${PN}, you can choose
59# something else, but remember to tell elisp-site-file-install() (see below) 59# something else, but remember to tell elisp-site-file-install() (see below)
60# the change, as it defaults to ${PN}. 60# the change, as it defaults to ${PN}.
61# 61#
62# elisp-install ${PN} *.el *.elc || die "elisp-install failed" 62# elisp-install ${PN} *.el *.elc || die
63# 63#
64# To let the Emacs support be activated by Emacs on startup, you need 64# 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 65# to provide a site file (shipped in ${FILESDIR}) which contains the startup
66# code (have a look in the documentation of your software). Normally this 66# code (have a look in the documentation of your software). Normally this
67# would look like this: 67# would look like this:
84# editor as they are loaded on every startup. When having a lot of Emacs 84# editor as they are loaded on every startup. When having a lot of Emacs
85# support files, users may be annoyed by the start-up time. Also avoid 85# support files, users may be annoyed by the start-up time. Also avoid
86# keybindings as they might interfere with the user's settings. Give a hint 86# keybindings as they might interfere with the user's settings. Give a hint
87# in pkg_postinst(), which should be enough. 87# in pkg_postinst(), which should be enough.
88# 88#
89# The naming scheme for this site file is "[0-9][0-9]*-gentoo.el", where the 89# 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 90# "[1-8][0-9]*-gentoo.el", where the two digits at the beginning define the
91# loading order (numbers below 10 or above 89 are reserved for internal use).
91# another Emacs package, your site file's number must be higher! 92# So if you depend on another Emacs package, your site file's number must be
93# higher!
92# 94#
93# Best practice is to define a SITEFILE variable in the global scope of your 95# Best practice is to define a SITEFILE variable in the global scope of your
94# ebuild (right after DEPEND e.g.): 96# ebuild (e.g., right after DEPEND):
95# 97#
96# SITEFILE=50${PN}-gentoo.el 98# SITEFILE=50${PN}-gentoo.el
97# 99#
98# Which is then installed by 100# Which is then installed by
99# 101#
130# @ECLASS-VARIABLE: SITELISP 132# @ECLASS-VARIABLE: SITELISP
131# @DESCRIPTION: 133# @DESCRIPTION:
132# Directory where packages install Emacs Lisp files. 134# Directory where packages install Emacs Lisp files.
133SITELISP=/usr/share/emacs/site-lisp 135SITELISP=/usr/share/emacs/site-lisp
134 136
137# @ECLASS-VARIABLE: SITEETC
138# @DESCRIPTION:
135# Directory where packages install miscellaneous (not Lisp) files. 139# Directory where packages install miscellaneous (not Lisp) files.
136SITEETC=/usr/share/emacs/etc 140SITEETC=/usr/share/emacs/etc
137
138# @ECLASS-VARIABLE: SITEFILE
139# @DESCRIPTION:
140# Name of package's site-init file.
141SITEFILE=50${PN}-gentoo.el
142 141
143# @ECLASS-VARIABLE: EMACS 142# @ECLASS-VARIABLE: EMACS
144# @DESCRIPTION: 143# @DESCRIPTION:
145# Path of Emacs executable. 144# Path of Emacs executable.
146EMACS=/usr/bin/emacs 145EMACS=/usr/bin/emacs
170# they require or load one another. 169# they require or load one another.
171 170
172elisp-compile() { 171elisp-compile() {
173 ebegin "Compiling GNU Emacs Elisp files" 172 ebegin "Compiling GNU Emacs Elisp files"
174 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" 173 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
175 eend $? "batch-byte-compile failed" 174 eend $? "elisp-compile: batch-byte-compile failed"
176} 175}
177 176
178# #FUNCTION: elisp-comp 177# #FUNCTION: elisp-comp
179# #USAGE: <list of elisp files> 178# #USAGE: <list of elisp files>
180# #DESCRIPTION: 179# #DESCRIPTION:
215 mv *.elc .. 214 mv *.elc ..
216 215
217 popd 216 popd
218 rm -fr ${tempdir} 217 rm -fr ${tempdir}
219 218
220 eend ${ret} "batch-byte-compile failed" 219 eend ${ret} "elisp-comp: batch-byte-compile failed"
221 return ${ret}
222} 220}
223 221
224# @FUNCTION: elisp-emacs-version 222# @FUNCTION: elisp-emacs-version
225# @DESCRIPTION: 223# @DESCRIPTION:
226# Output version of currently active Emacs. 224# Output version of currently active Emacs.
262 ${EMACS} ${EMACSFLAGS} \ 260 ${EMACS} ${EMACSFLAGS} \
263 --eval "(setq make-backup-files nil)" \ 261 --eval "(setq make-backup-files nil)" \
264 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \ 262 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \
265 -f batch-update-autoloads "${@-.}" 263 -f batch-update-autoloads "${@-.}"
266 264
267 eend $? "batch-update-autoloads failed" 265 eend $? "elisp-make-autoload-file: batch-update-autoloads failed"
268} 266}
269 267
270# @FUNCTION: elisp-install 268# @FUNCTION: elisp-install
271# @USAGE: <subdirectory> <list of files> 269# @USAGE: <subdirectory> <list of files>
272# @DESCRIPTION: 270# @DESCRIPTION:
278 ebegin "Installing Elisp files for GNU Emacs support" 276 ebegin "Installing Elisp files for GNU Emacs support"
279 ( # subshell to avoid pollution of calling environment 277 ( # subshell to avoid pollution of calling environment
280 insinto "${SITELISP}/${subdir}" 278 insinto "${SITELISP}/${subdir}"
281 doins "$@" 279 doins "$@"
282 ) 280 )
283 eend $? "doins failed" 281 eend $? "elisp-install: doins failed"
284} 282}
285 283
286# @FUNCTION: elisp-site-file-install 284# @FUNCTION: elisp-site-file-install
287# @USAGE: <site-init file> [subdirectory] 285# @USAGE: <site-init file> [subdirectory]
288# @DESCRIPTION: 286# @DESCRIPTION:
291elisp-site-file-install() { 289elisp-site-file-install() {
292 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret 290 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret
293 ebegin "Installing site initialisation file for GNU Emacs" 291 ebegin "Installing site initialisation file for GNU Emacs"
294 cp "$1" "${sf}" 292 cp "$1" "${sf}"
295 sed -i -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \ 293 sed -i -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \
296 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g" "${sf}" 294 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}"
297 ( # subshell to avoid pollution of calling environment 295 ( # subshell to avoid pollution of calling environment
298 insinto "${SITELISP}/site-gentoo.d" 296 insinto "${SITELISP}/site-gentoo.d"
299 doins "${sf}" 297 doins "${sf}"
300 ) 298 )
301 ret=$? 299 ret=$?
302 rm -f "${sf}" 300 rm -f "${sf}"
303 eend ${ret} "doins failed" 301 eend ${ret} "elisp-site-file-install: doins failed"
304} 302}
305 303
306# @FUNCTION: elisp-site-regen 304# @FUNCTION: elisp-site-regen
307# @DESCRIPTION: 305# @DESCRIPTION:
308# Regenerate site-gentoo.el file. The old location for site initialisation 306# Regenerate the site-gentoo.el file, based on packages' site initialisation
309# files of packages was /usr/share/emacs/site-lisp/. In December 2007 this 307# files in the /usr/share/emacs/site-lisp/site-gentoo.d/ directory.
310# has been changed to /usr/share/emacs/site-lisp/site-gentoo.d/. Remerge of 308#
311# packages with Emacs support is enough, the old location is still supported 309# Note: Before December 2007, site initialisation files were installed in
312# when generating the start-up file. 310# /usr/share/emacs/site-lisp/. For backwards compatibility, this location is
311# still supported when generating site-gentoo.el.
313 312
314elisp-site-regen() { 313elisp-site-regen() {
315 local i sf line firstrun obsolete 314 local i sf line firstrun obsolete
316 local -a sflist 315 local -a sflist
317 # Work around Paludis borkage: variable T is empty in pkg_postrm 316 # Work around Paludis borkage: variable T is empty in pkg_postrm
318 local tmpdir=${T:-$(mktemp -d)} 317 local tmpdir=${T:-$(mktemp -d)}
319 318
320 if [ ! -d "${ROOT}${SITELISP}" ]; then 319 if [ ! -d "${ROOT}${SITELISP}" ]; then
321 eerror "Directory ${SITELISP} does not exist" 320 eerror "elisp-site-regen: Directory ${SITELISP} does not exist"
322 return 1 321 return 1
323 fi 322 fi
324 323
325 [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] || firstrun=t 324 [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] || firstrun=t
326 325
374 ;; Automatically generated by elisp-common.eclass 373 ;; Automatically generated by elisp-common.eclass
375 ;; DO NOT EDIT THIS FILE 374 ;; DO NOT EDIT THIS FILE
376 375
377 ;;; Code: 376 ;;; Code:
378 EOF 377 EOF
378 # Use sed instead of cat here, since files may miss a trailing newline.
379 cat "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el 379 sed '$q' "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el
380 cat <<-EOF >>"${tmpdir}"/site-gentoo.el 380 cat <<-EOF >>"${tmpdir}"/site-gentoo.el
381 381
382 (provide 'site-gentoo) 382 (provide 'site-gentoo)
383 383
384 ;; Local Variables: 384 ;; Local Variables:

Legend:
Removed from v.1.47  
changed lines
  Added in v.1.52

  ViewVC Help
Powered by ViewVC 1.1.20