/[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.48 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.48 2008/10/05 13:56:08 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#
135# @ECLASS-VARIABLE: SITEETC 137# @ECLASS-VARIABLE: SITEETC
136# @DESCRIPTION: 138# @DESCRIPTION:
137# Directory where packages install miscellaneous (not Lisp) files. 139# Directory where packages install miscellaneous (not Lisp) files.
138SITEETC=/usr/share/emacs/etc 140SITEETC=/usr/share/emacs/etc
139 141
140# @ECLASS-VARIABLE: SITEFILE
141# @DESCRIPTION:
142# Name of package's site-init file.
143SITEFILE=50${PN}-gentoo.el
144
145# @ECLASS-VARIABLE: EMACS 142# @ECLASS-VARIABLE: EMACS
146# @DESCRIPTION: 143# @DESCRIPTION:
147# Path of Emacs executable. 144# Path of Emacs executable.
148EMACS=/usr/bin/emacs 145EMACS=/usr/bin/emacs
149 146
172# they require or load one another. 169# they require or load one another.
173 170
174elisp-compile() { 171elisp-compile() {
175 ebegin "Compiling GNU Emacs Elisp files" 172 ebegin "Compiling GNU Emacs Elisp files"
176 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" 173 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
177 eend $? "batch-byte-compile failed" 174 eend $? "elisp-compile: batch-byte-compile failed"
178} 175}
179 176
180# #FUNCTION: elisp-comp 177# #FUNCTION: elisp-comp
181# #USAGE: <list of elisp files> 178# #USAGE: <list of elisp files>
182# #DESCRIPTION: 179# #DESCRIPTION:
217 mv *.elc .. 214 mv *.elc ..
218 215
219 popd 216 popd
220 rm -fr ${tempdir} 217 rm -fr ${tempdir}
221 218
222 eend ${ret} "batch-byte-compile failed" 219 eend ${ret} "elisp-comp: batch-byte-compile failed"
223 return ${ret}
224} 220}
225 221
226# @FUNCTION: elisp-emacs-version 222# @FUNCTION: elisp-emacs-version
227# @DESCRIPTION: 223# @DESCRIPTION:
228# Output version of currently active Emacs. 224# Output version of currently active Emacs.
264 ${EMACS} ${EMACSFLAGS} \ 260 ${EMACS} ${EMACSFLAGS} \
265 --eval "(setq make-backup-files nil)" \ 261 --eval "(setq make-backup-files nil)" \
266 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \ 262 --eval "(setq generated-autoload-file (expand-file-name \"${f}\"))" \
267 -f batch-update-autoloads "${@-.}" 263 -f batch-update-autoloads "${@-.}"
268 264
269 eend $? "batch-update-autoloads failed" 265 eend $? "elisp-make-autoload-file: batch-update-autoloads failed"
270} 266}
271 267
272# @FUNCTION: elisp-install 268# @FUNCTION: elisp-install
273# @USAGE: <subdirectory> <list of files> 269# @USAGE: <subdirectory> <list of files>
274# @DESCRIPTION: 270# @DESCRIPTION:
280 ebegin "Installing Elisp files for GNU Emacs support" 276 ebegin "Installing Elisp files for GNU Emacs support"
281 ( # subshell to avoid pollution of calling environment 277 ( # subshell to avoid pollution of calling environment
282 insinto "${SITELISP}/${subdir}" 278 insinto "${SITELISP}/${subdir}"
283 doins "$@" 279 doins "$@"
284 ) 280 )
285 eend $? "doins failed" 281 eend $? "elisp-install: doins failed"
286} 282}
287 283
288# @FUNCTION: elisp-site-file-install 284# @FUNCTION: elisp-site-file-install
289# @USAGE: <site-init file> [subdirectory] 285# @USAGE: <site-init file> [subdirectory]
290# @DESCRIPTION: 286# @DESCRIPTION:
293elisp-site-file-install() { 289elisp-site-file-install() {
294 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret 290 local sf="${T}/${1##*/}" my_pn="${2:-${PN}}" ret
295 ebegin "Installing site initialisation file for GNU Emacs" 291 ebegin "Installing site initialisation file for GNU Emacs"
296 cp "$1" "${sf}" 292 cp "$1" "${sf}"
297 sed -i -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \ 293 sed -i -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \
298 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g" "${sf}" 294 -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}"
299 ( # subshell to avoid pollution of calling environment 295 ( # subshell to avoid pollution of calling environment
300 insinto "${SITELISP}/site-gentoo.d" 296 insinto "${SITELISP}/site-gentoo.d"
301 doins "${sf}" 297 doins "${sf}"
302 ) 298 )
303 ret=$? 299 ret=$?
304 rm -f "${sf}" 300 rm -f "${sf}"
305 eend ${ret} "doins failed" 301 eend ${ret} "elisp-site-file-install: doins failed"
306} 302}
307 303
308# @FUNCTION: elisp-site-regen 304# @FUNCTION: elisp-site-regen
309# @DESCRIPTION: 305# @DESCRIPTION:
310# Regenerate the site-gentoo.el file, based on packages' site initialisation 306# Regenerate the site-gentoo.el file, based on packages' site initialisation
319 local -a sflist 315 local -a sflist
320 # Work around Paludis borkage: variable T is empty in pkg_postrm 316 # Work around Paludis borkage: variable T is empty in pkg_postrm
321 local tmpdir=${T:-$(mktemp -d)} 317 local tmpdir=${T:-$(mktemp -d)}
322 318
323 if [ ! -d "${ROOT}${SITELISP}" ]; then 319 if [ ! -d "${ROOT}${SITELISP}" ]; then
324 eerror "Directory ${SITELISP} does not exist" 320 eerror "elisp-site-regen: Directory ${SITELISP} does not exist"
325 return 1 321 return 1
326 fi 322 fi
327 323
328 [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] || firstrun=t 324 [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] || firstrun=t
329 325
377 ;; Automatically generated by elisp-common.eclass 373 ;; Automatically generated by elisp-common.eclass
378 ;; DO NOT EDIT THIS FILE 374 ;; DO NOT EDIT THIS FILE
379 375
380 ;;; Code: 376 ;;; Code:
381 EOF 377 EOF
378 # Use sed instead of cat here, since files may miss a trailing newline.
382 cat "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el 379 sed '$q' "${sflist[@]}" </dev/null >>"${tmpdir}"/site-gentoo.el
383 cat <<-EOF >>"${tmpdir}"/site-gentoo.el 380 cat <<-EOF >>"${tmpdir}"/site-gentoo.el
384 381
385 (provide 'site-gentoo) 382 (provide 'site-gentoo)
386 383
387 ;; Local Variables: 384 ;; Local Variables:

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

  ViewVC Help
Powered by ViewVC 1.1.20