/[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.41 Revision 1.47
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.41 2008/07/01 22:10:06 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.47 2008/09/24 09:47: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>
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>
160# @DESCRIPTION: 180# #DESCRIPTION:
161# Byte-compile interdependent Emacs Lisp files. 181# Byte-compile interdependent Emacs Lisp files.
182# THIS FUNCTION IS DEPRECATED.
162# 183#
163# This function byte-compiles all ".el" files which are part of its 184# 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 185# arguments, using GNU Emacs, and puts the resulting ".elc" files into the
165# current directory, so disregarding the original directories used in ".el" 186# current directory, so disregarding the original directories used in ".el"
166# arguments. 187# arguments.
172elisp-comp() { 193elisp-comp() {
173 # Copyright 1995 Free Software Foundation, Inc. 194 # Copyright 1995 Free Software Foundation, Inc.
174 # Fran├žois Pinard <pinard@iro.umontreal.ca>, 1995. 195 # Fran├žois Pinard <pinard@iro.umontreal.ca>, 1995.
175 # Originally taken from GNU autotools. 196 # Originally taken from GNU autotools.
176 197
198 ewarn "Function elisp-comp is deprecated and may be removed in future."
199 ewarn "Please use function elisp-compile instead, or report a bug about"
200 ewarn "${CATEGORY}/${PF} at <http://bugs.gentoo.org/>."
201 echo
202
177 [ $# -gt 0 ] || return 1 203 [ $# -gt 0 ] || return 1
178 204
179 ebegin "Compiling GNU Emacs Elisp files" 205 ebegin "Compiling GNU Emacs Elisp files"
180 206
181 tempdir=elc.$$ 207 local tempdir=elc.$$
182 mkdir ${tempdir} 208 mkdir ${tempdir}
183 cp "$@" ${tempdir} 209 cp "$@" ${tempdir}
184 pushd ${tempdir} 210 pushd ${tempdir}
185 211
186 echo "(add-to-list 'load-path \"../\")" > script 212 echo "(add-to-list 'load-path \"../\")" > script
284# has been changed to /usr/share/emacs/site-lisp/site-gentoo.d/. Remerge of 310# has been changed to /usr/share/emacs/site-lisp/site-gentoo.d/. Remerge of
285# packages with Emacs support is enough, the old location is still supported 311# packages with Emacs support is enough, the old location is still supported
286# when generating the start-up file. 312# when generating the start-up file.
287 313
288elisp-site-regen() { 314elisp-site-regen() {
289 local i sf line obsolete 315 local i sf line firstrun obsolete
290 local -a sflist 316 local -a sflist
291 # Work around Paludis borkage: variable T is empty in pkg_postrm 317 # Work around Paludis borkage: variable T is empty in pkg_postrm
292 local tmpdir=${T:-$(mktemp -d)} 318 local tmpdir=${T:-$(mktemp -d)}
293 319
294 if [ ! -d "${ROOT}${SITELISP}" ]; then 320 if [ ! -d "${ROOT}${SITELISP}" ]; then
295 eerror "Directory ${SITELISP} does not exist" 321 eerror "Directory ${SITELISP} does not exist"
296 return 1 322 return 1
297 fi 323 fi
298 324
299 if [ ! -e "${ROOT}${SITELISP}"/site-gentoo.el ] \ 325 [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] || firstrun=t
326
300 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ]; then 327 if [ "${firstrun}" ] && [ ! -e "${ROOT}${SITELISP}"/site-start.el ]; then
301 einfo "Creating default ${SITELISP}/site-start.el ..." 328 einfo "Creating default ${SITELISP}/site-start.el ..."
302 cat <<-EOF >"${tmpdir}"/site-start.el 329 cat <<-EOF >"${tmpdir}"/site-start.el
303 ;;; site-start.el 330 ;;; site-start.el
304 331
305 ;;; Commentary: 332 ;;; Commentary:
369 else 396 else
370 mv "${tmpdir}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el 397 mv "${tmpdir}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el
371 [ -f "${tmpdir}"/site-start.el ] \ 398 [ -f "${tmpdir}"/site-start.el ] \
372 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ] \ 399 && [ ! -e "${ROOT}${SITELISP}"/site-start.el ] \
373 && mv "${tmpdir}"/site-start.el "${ROOT}${SITELISP}"/site-start.el 400 && 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 401 echo
402 einfo "... ${#sflist[@]} site initialisation file(s) included."
403 fi
404
405 if [ "${firstrun}" ]; then
406 echo
381 while read line; do einfo "${line}"; done <<EOF 407 while read line; do einfo "${line:- }"; done <<-EOF
382All site initialisation for Gentoo-installed packages is added to 408 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 409 /usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is not
384managed by Gentoo. You are responsible for all maintenance of 410 managed by Gentoo. You are responsible for all maintenance of
385site-start.el if there is such a file. 411 site-start.el if there is such a file.
386 412
387In order for this site initialisation to be loaded for all users 413 In order for this site initialisation to be loaded for all users
388automatically, you can add a line like this: 414 automatically, you can add a line like this:
389 415
390 (require 'site-gentoo) 416 (require 'site-gentoo)
391 417
392to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line 418 to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line
393can be added by individual users to their initialisation files, or, 419 can be added by individual users to their initialisation files, or,
394for greater flexibility, users can load individual package-specific 420 for greater flexibility, users can load individual package-specific
395initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/. 421 initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/.
396EOF 422 EOF
397 echo 423 echo
398 fi 424 fi
399 425
400 if [ "${obsolete}" ]; then 426 if [ "${obsolete}" ]; then
427 echo
401 while read line; do ewarn "${line}"; done <<-EOF 428 while read line; do ewarn "${line}"; done <<-EOF
402 Site-initialisation files of Emacs packages are now installed in 429 Site-initialisation files of Emacs packages are now installed in
403 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend 430 /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend
404 that you use /usr/sbin/emacs-updater to rebuild the installed 431 that you use app-admin/emacs-updater to rebuild the installed
405 Emacs packages. 432 Emacs packages.
406 EOF 433 EOF
407 echo
408 434
409 # Kludge for backwards compatibility: During pkg_postrm, old versions 435 # Kludge for backwards compatibility: During pkg_postrm, old versions
410 # of this eclass (saved in the VDB) won't find packages' site-init 436 # of this eclass (saved in the VDB) won't find packages' site-init
411 # files in the new location. So we copy them to an auxiliary file 437 # files in the new location. So we copy them to an auxiliary file
412 # that is visible to old eclass versions. 438 # that is visible to old eclass versions.
416 done 442 done
417 fi 443 fi
418 444
419 # cleanup 445 # cleanup
420 rm -f "${tmpdir}"/site-{gentoo,start}.el 446 rm -f "${tmpdir}"/site-{gentoo,start}.el
447
448 return 0
421} 449}

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

  ViewVC Help
Powered by ViewVC 1.1.20