/[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.40 Revision 1.43
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.40 2008/05/18 06:15:12 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.43 2008/08/27 06:53:41 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>
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 here and
36# simply takes the source files as arguments. 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
38# load-path which makes sure that all files are loadable.
37# 39#
38# elisp-compile *.el || die "elisp-compile failed" 40# elisp-compile *.el || die "elisp-compile failed"
39# 41#
40# In the case of interdependent elisp files, you can use the elisp-comp() 42# Formerly, function elisp-comp() was used for compilation of interdependent
41# function which makes sure all files are loadable. 43# elisp files. This usage is considered as obsolete.
42#
43# elisp-comp *.el || die "elisp-comp failed"
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
46# autoload definitions for the lisp functions. It takes the output file name 46# autoload definitions for the lisp functions. It takes the output file name
47# (default: "${PN}-autoloads.el") and a list of directories (default: working 47# (default: "${PN}-autoloads.el") and a list of directories (default: working
48# directory) as its arguments. Use of this function requires that the elisp 48# directory) as its arguments. Use of this function requires that the elisp
49# source files contain magic ";;;###autoload" comments. See the Emacs Lisp 49# source files contain magic ";;;###autoload" comments. See the Emacs Lisp
50# Reference Manual (node "Autoload") for a detailed explanation. 50# Reference Manual (node "Autoload") for a detailed explanation.
51# 51#
52# .SS 52# .SS
53# src_install() usage: 53# src_install() usage:
54# 54#
138# @ECLASS-VARIABLE: SITEFILE 138# @ECLASS-VARIABLE: SITEFILE
139# @DESCRIPTION: 139# @DESCRIPTION:
140# Name of package's site-init file. 140# Name of package's site-init file.
141SITEFILE=50${PN}-gentoo.el 141SITEFILE=50${PN}-gentoo.el
142 142
143# @ECLASS-VARIABLE: EMACS
144# @DESCRIPTION:
145# Path of Emacs executable.
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 its
165# arguments. The resulting byte-code (".elc") files are placed in the same
166# directory as their corresponding source file.
167#
168# The current directory is added to the load-path. This will ensure that
169# interdependent Emacs Lisp files are visible between themselves, in case
170# 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 $? "batch-byte-compile failed"
156} 176}
157 177
158# @FUNCTION: elisp-comp 178# @FUNCTION: elisp-comp
159# @USAGE: <list of elisp files> 179# @USAGE: <list of elisp files>
315 EOF 335 EOF
316 fi 336 fi
317 337
318 einfon "Regenerating ${SITELISP}/site-gentoo.el ..." 338 einfon "Regenerating ${SITELISP}/site-gentoo.el ..."
319 339
320 # remove auxiliary file 340 # remove any auxiliary file (from previous run)
321 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el 341 rm -f "${ROOT}${SITELISP}"/00site-gentoo.el
322 342
323 # set nullglob option, there may be a directory without matching files 343 # set nullglob option, there may be a directory without matching files
324 local old_shopts=$(shopt -p nullglob) 344 local old_shopts=$(shopt -p nullglob)
325 shopt -s nullglob 345 shopt -s nullglob
376 einfo " Adding ${sf} ..." 396 einfo " Adding ${sf} ..."
377 done 397 done
378 einfo "Regenerated ${SITELISP}/site-gentoo.el." 398 einfo "Regenerated ${SITELISP}/site-gentoo.el."
379 399
380 echo 400 echo
381 while read line; do einfo "${line}"; done <<EOF 401 while read line; do einfo "${line:- }"; done <<-EOF
382All site initialisation for Gentoo-installed packages is added to 402 All site initialisation for Gentoo-installed packages is added to
383/usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is no longer 403 /usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is not
384managed by Gentoo. You are responsible for all maintenance of 404 managed by Gentoo. You are responsible for all maintenance of
385site-start.el if there is such a file. 405 site-start.el if there is such a file.
386 406
387In order for this site initialisation to be loaded for all users 407 In order for this site initialisation to be loaded for all users
388automatically, you can add a line like this: 408 automatically, you can add a line like this:
389 409
390 (require 'site-gentoo) 410 (require 'site-gentoo)
391 411
392to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line 412 to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line
393can be added by individual users to their initialisation files, or, 413 can be added by individual users to their initialisation files, or,
394for greater flexibility, users can load individual package-specific 414 for greater flexibility, users can load individual package-specific
395initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/. 415 initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/.
396EOF 416 EOF
397 echo 417 echo
398
399 if [ "${obsolete}" ]; then
400 while read line; do ewarn "${line}"; done <<-EOF
401 Site-initialisation files of Emacs packages are now installed in
402 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend
403 that you use /usr/sbin/emacs-updater to rebuild the installed
404 Emacs packages.
405 EOF
406 echo
407 fi
408 fi 418 fi
409 419
420 if [ "${obsolete}" ]; then
421 while read line; do ewarn "${line}"; done <<-EOF
422 Site-initialisation files of Emacs packages are now installed in
423 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend
424 that you use /usr/sbin/emacs-updater to rebuild the installed
425 Emacs packages.
426 EOF
427 echo
428
410 # Kludge for backwards compatibility: During pkg_postrm, old versions 429 # Kludge for backwards compatibility: During pkg_postrm, old versions
411 # of this eclass (saved in the VDB) won't find packages' site-init files 430 # of this eclass (saved in the VDB) won't find packages' site-init
412 # in the new location. So we copy them to an auxiliary file that is 431 # files in the new location. So we copy them to an auxiliary file
413 # visible to old eclass versions. 432 # that is visible to old eclass versions.
414 for sf in "${sflist[@]}"; do 433 for sf in "${sflist[@]}"; do
415 [ "${sf%/*}" = "${ROOT}${SITELISP}/site-gentoo.d" ] \ 434 [ "${sf%/*}" = "${ROOT}${SITELISP}/site-gentoo.d" ] \
416 && cat "${sf}" >>"${ROOT}${SITELISP}"/00site-gentoo.el 435 && cat "${sf}" >>"${ROOT}${SITELISP}"/00site-gentoo.el
417 done 436 done
437 fi
418 438
419 # cleanup 439 # cleanup
420 rm -f "${tmpdir}"/site-{gentoo,start}.el 440 rm -f "${tmpdir}"/site-{gentoo,start}.el
421} 441}

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.43

  ViewVC Help
Powered by ViewVC 1.1.20