| 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.68 2010/10/09 15:30:43 ulm Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.69 2010/11/23 20:56:08 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 |
| … | |
… | |
| 124 | # to above calls of elisp-site-regen(). |
137 | # to above calls of elisp-site-regen(). |
| 125 | # 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 |
| 126 | # 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 |
| 127 | # 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 |
| 128 | # merge and unmerge of a package. |
141 | # merge and unmerge of a package. |
| 129 | # |
|
|
| 130 | # .SS |
|
|
| 131 | # Miscellaneous functions: |
|
|
| 132 | # |
|
|
| 133 | # elisp-emacs-version() outputs the version of the currently active Emacs. |
|
|
| 134 | |
142 | |
| 135 | # @ECLASS-VARIABLE: SITELISP |
143 | # @ECLASS-VARIABLE: SITELISP |
| 136 | # @DESCRIPTION: |
144 | # @DESCRIPTION: |
| 137 | # Directory where packages install Emacs Lisp files. |
145 | # Directory where packages install Emacs Lisp files. |
| 138 | SITELISP=/usr/share/emacs/site-lisp |
146 | SITELISP=/usr/share/emacs/site-lisp |
| … | |
… | |
| 173 | |
181 | |
| 174 | elisp-compile() { |
182 | elisp-compile() { |
| 175 | ebegin "Compiling GNU Emacs Elisp files" |
183 | ebegin "Compiling GNU Emacs Elisp files" |
| 176 | ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" |
184 | ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" |
| 177 | eend $? "elisp-compile: batch-byte-compile failed" |
185 | eend $? "elisp-compile: batch-byte-compile failed" |
| 178 | } |
|
|
| 179 | |
|
|
| 180 | elisp-comp() { |
|
|
| 181 | die "Function elisp-comp is not supported any more, see bug 235442" |
|
|
| 182 | } |
186 | } |
| 183 | |
187 | |
| 184 | # @FUNCTION: elisp-emacs-version |
188 | # @FUNCTION: elisp-emacs-version |
| 185 | # @DESCRIPTION: |
189 | # @DESCRIPTION: |
| 186 | # Output version of currently active Emacs. |
190 | # Output version of currently active Emacs. |
| … | |
… | |
| 188 | elisp-emacs-version() { |
192 | elisp-emacs-version() { |
| 189 | # The following will work for at least versions 18-23. |
193 | # The following will work for at least versions 18-23. |
| 190 | echo "(princ emacs-version)" >"${T}"/emacs-version.el |
194 | echo "(princ emacs-version)" >"${T}"/emacs-version.el |
| 191 | ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el |
195 | ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el |
| 192 | rm -f "${T}"/emacs-version.el |
196 | rm -f "${T}"/emacs-version.el |
|
|
197 | } |
|
|
198 | |
|
|
199 | # @FUNCTION: elisp-need-emacs |
|
|
200 | # @USAGE: <version> |
|
|
201 | # @RETURN: 0 if true, 1 otherwise |
|
|
202 | # @DESCRIPTION: |
|
|
203 | # Test if the eselected Emacs version is at least the major version |
|
|
204 | # specified as argument. |
|
|
205 | |
|
|
206 | elisp-need-emacs() { |
|
|
207 | local need_emacs=$1 |
|
|
208 | local have_emacs=$(elisp-emacs-version) |
|
|
209 | einfo "Emacs version: ${have_emacs}" |
|
|
210 | if ! [[ ${have_emacs%%.*} -ge ${need_emacs%%.*} ]]; then |
|
|
211 | eerror "This package needs at least Emacs ${need_emacs%%.*}." |
|
|
212 | eerror "Use \"eselect emacs\" to select the active version." |
|
|
213 | return 1 |
|
|
214 | fi |
|
|
215 | return 0 |
| 193 | } |
216 | } |
| 194 | |
217 | |
| 195 | # @FUNCTION: elisp-make-autoload-file |
218 | # @FUNCTION: elisp-make-autoload-file |
| 196 | # @USAGE: [output file] [list of directories] |
219 | # @USAGE: [output file] [list of directories] |
| 197 | # @DESCRIPTION: |
220 | # @DESCRIPTION: |