/[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.67 Revision 1.70
1# Copyright 1999-2010 Gentoo Foundation 1# Copyright 1999-2010 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.67 2010/09/17 07:41:05 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.70 2010/11/29 17:07:22 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 <fauli@gentoo.org> 8# Copyright 2007-2008 Christian Faulhammer <fauli@gentoo.org>
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 29# to your DEPEND/RDEPEND line and use the functions provided here to
30# bring the files to the correct locations. 30# bring the files to the correct locations.
31#
32# If your package requires a minimum Emacs version, e.g. Emacs 23, then
33# the dependency should be on >=virtual/emacs-23 instead. Because the
34# user can select the Emacs executable with eselect, you should also
35# make sure that the active Emacs version is sufficient. This can be
36# tested with function elisp-need-emacs(), which would typically be
37# called from pkg_setup(), as in the following example:
38#
39# elisp-need-emacs 23 || die "Emacs version too low"
40#
41# Please note that such tests should be limited to packages that are
42# known to fail with lower Emacs versions; the standard case is to
43# depend on virtual/emacs without version.
31# 44#
32# .SS 45# .SS
33# src_compile() usage: 46# src_compile() usage:
34# 47#
35# An elisp file is compiled by the elisp-compile() function defined 48# An elisp file is compiled by the elisp-compile() function defined
85# 98#
86# The naming scheme for this site-init file matches the shell pattern 99# The naming scheme for this site-init file matches the shell pattern
87# "[1-8][0-9]*-gentoo*.el", where the two digits at the beginning define 100# "[1-8][0-9]*-gentoo*.el", where the two digits at the beginning define
88# the loading order (numbers below 10 or above 89 are reserved for 101# the loading order (numbers below 10 or above 89 are reserved for
89# internal use). So if your initialisation depends on another Emacs 102# internal use). So if your initialisation depends on another Emacs
90# package, your site file's number must be higher! 103# package, your site file's number must be higher! If there are no such
104# interdependencies then the number should be 50. Otherwise, numbers
105# divisible by 10 are preferred.
91# 106#
92# Best practice is to define a SITEFILE variable in the global scope of 107# Best practice is to define a SITEFILE variable in the global scope of
93# your ebuild (e.g., right after S or RDEPEND): 108# your ebuild (e.g., right after S or RDEPEND):
94# 109#
95# SITEFILE="50${PN}-gentoo.el" 110# SITEFILE="50${PN}-gentoo.el"
122# to above calls of elisp-site-regen(). 137# to above calls of elisp-site-regen().
123# Don't use "has_version virtual/emacs"! When unmerging the state of 138# Don't use "has_version virtual/emacs"! When unmerging the state of
124# the emacs USE flag is taken from the package database and not from the 139# the emacs USE flag is taken from the package database and not from the
125# environment, so it is no problem when you unset USE=emacs between 140# environment, so it is no problem when you unset USE=emacs between
126# merge and unmerge of a package. 141# merge and unmerge of a package.
127#
128# .SS
129# Miscellaneous functions:
130#
131# elisp-emacs-version() outputs the version of the currently active Emacs.
132 142
133# @ECLASS-VARIABLE: SITELISP 143# @ECLASS-VARIABLE: SITELISP
134# @DESCRIPTION: 144# @DESCRIPTION:
135# Directory where packages install Emacs Lisp files. 145# Directory where packages install Emacs Lisp files.
136SITELISP=/usr/share/emacs/site-lisp 146SITELISP=/usr/share/emacs/site-lisp
153 163
154# @ECLASS-VARIABLE: BYTECOMPFLAGS 164# @ECLASS-VARIABLE: BYTECOMPFLAGS
155# @DESCRIPTION: 165# @DESCRIPTION:
156# Emacs flags used for byte-compilation in elisp-compile(). 166# Emacs flags used for byte-compilation in elisp-compile().
157BYTECOMPFLAGS="-L ." 167BYTECOMPFLAGS="-L ."
158
159# @FUNCTION: elisp-compile
160# @USAGE: <list of elisp files>
161# @DESCRIPTION:
162# Byte-compile Emacs Lisp files.
163#
164# This function uses GNU Emacs to byte-compile all ".el" specified by
165# its arguments. The resulting byte-code (".elc") files are placed in
166# the same directory as their corresponding source file.
167#
168# The current directory is added to the load-path. This will ensure
169# that interdependent Emacs Lisp files are visible between themselves,
170# in case they require or load one another.
171
172elisp-compile() {
173 ebegin "Compiling GNU Emacs Elisp files"
174 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
175 eend $? "elisp-compile: batch-byte-compile failed"
176}
177
178elisp-comp() {
179 die "Function elisp-comp is not supported any more, see bug 235442"
180}
181 168
182# @FUNCTION: elisp-emacs-version 169# @FUNCTION: elisp-emacs-version
183# @DESCRIPTION: 170# @DESCRIPTION:
184# Output version of currently active Emacs. 171# Output version of currently active Emacs.
185 172
186elisp-emacs-version() { 173elisp-emacs-version() {
187 # The following will work for at least versions 18-23. 174 # The following will work for at least versions 18-23.
188 echo "(princ emacs-version)" >"${T}"/emacs-version.el 175 echo "(princ emacs-version)" >"${T}"/emacs-version.el
189 ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el 176 ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el
190 rm -f "${T}"/emacs-version.el 177 rm -f "${T}"/emacs-version.el
178}
179
180# @FUNCTION: elisp-need-emacs
181# @USAGE: <version>
182# @RETURN: 0 if true, 1 otherwise
183# @DESCRIPTION:
184# Test if the eselected Emacs version is at least the major version
185# specified as argument.
186
187elisp-need-emacs() {
188 local need_emacs=$1
189 local have_emacs=$(elisp-emacs-version)
190 einfo "Emacs version: ${have_emacs}"
191 if ! [[ ${have_emacs%%.*} -ge ${need_emacs%%.*} ]]; then
192 eerror "This package needs at least Emacs ${need_emacs%%.*}."
193 eerror "Use \"eselect emacs\" to select the active version."
194 return 1
195 fi
196 return 0
197}
198
199# @FUNCTION: elisp-compile
200# @USAGE: <list of elisp files>
201# @DESCRIPTION:
202# Byte-compile Emacs Lisp files.
203#
204# This function uses GNU Emacs to byte-compile all ".el" specified by
205# its arguments. The resulting byte-code (".elc") files are placed in
206# the same directory as their corresponding source file.
207#
208# The current directory is added to the load-path. This will ensure
209# that interdependent Emacs Lisp files are visible between themselves,
210# in case they require or load one another.
211
212elisp-compile() {
213 ebegin "Compiling GNU Emacs Elisp files"
214 ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@"
215 eend $? "elisp-compile: batch-byte-compile failed"
191} 216}
192 217
193# @FUNCTION: elisp-make-autoload-file 218# @FUNCTION: elisp-make-autoload-file
194# @USAGE: [output file] [list of directories] 219# @USAGE: [output file] [list of directories]
195# @DESCRIPTION: 220# @DESCRIPTION:
326 EOF 351 EOF
327 # Use sed instead of cat here, since files may miss a trailing newline. 352 # Use sed instead of cat here, since files may miss a trailing newline.
328 sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el 353 sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el
329 cat <<-EOF >>"${T}"/site-gentoo.el 354 cat <<-EOF >>"${T}"/site-gentoo.el
330 355
356 ${page}
331 (provide 'site-gentoo) 357 (provide 'site-gentoo)
332 358
333 ${page}
334 ;; Local ${null}Variables: 359 ;; Local ${null}Variables:
335 ;; no-byte-compile: t 360 ;; no-byte-compile: t
336 ;; buffer-read-only: t 361 ;; buffer-read-only: t
337 ;; End: 362 ;; End:
338 363

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.70

  ViewVC Help
Powered by ViewVC 1.1.20