| 1 | # Copyright 1999-2007 Gentoo Foundation |
1 | # Copyright 1999-2007 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.23 2007/07/09 13:40:58 flameeyes Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.24 2007/07/10 20:14:52 ulm Exp $ |
| 4 | # |
4 | # |
| 5 | # Copyright 2007 Christian Faulhammer <opfer@gentoo.org> |
5 | # Copyright 2007 Christian Faulhammer <opfer@gentoo.org> |
| 6 | # Copyright 2002-2007 Matthew Kennedy <mkennedy@gentoo.org> |
6 | # Copyright 2002-2004 Matthew Kennedy <mkennedy@gentoo.org> |
|
|
7 | # Copyright 2004-2005 Mamoru Komachi <usata@gentoo.org> |
| 7 | # Copyright 2003 Jeremy Maitin-Shepard <jbms@attbi.com> |
8 | # Copyright 2003 Jeremy Maitin-Shepard <jbms@attbi.com> |
| 8 | # Copyright 2007 Ulrich Mueller <ulm@gentoo.org> |
9 | # Copyright 2007 Ulrich Mueller <ulm@gentoo.org> |
| 9 | # |
10 | # |
| 10 | # This is not a real eclass, but it does provide Emacs-related installation |
11 | # This is not a real eclass, but it does provide Emacs-related installation |
| 11 | # utilities. |
12 | # utilities. |
| … | |
… | |
| 30 | # An elisp file is compiled by the elisp-compile() function defined here and |
31 | # An elisp file is compiled by the elisp-compile() function defined here and |
| 31 | # simply takes the source files as arguments. In the case of interdependent |
32 | # simply takes the source files as arguments. In the case of interdependent |
| 32 | # elisp files, you can use the elisp-comp() function which makes sure all |
33 | # elisp files, you can use the elisp-comp() function which makes sure all |
| 33 | # files are loadable. |
34 | # files are loadable. |
| 34 | # |
35 | # |
| 35 | # elisp-compile *.el || die "elisp-compile failed!" |
36 | # elisp-compile *.el || die "elisp-compile failed" |
| 36 | # or |
37 | # or |
| 37 | # elisp-comp *.el || die "elisp-comp failed!" |
38 | # elisp-comp *.el || die "elisp-comp failed" |
| 38 | # |
39 | # |
| 39 | # Function elisp-make-autoload-file() can be used to generate a file with |
40 | # Function elisp-make-autoload-file() can be used to generate a file with |
| 40 | # autoload definitions for the lisp functions. It takes the output file name |
41 | # autoload definitions for the lisp functions. It takes the output file name |
| 41 | # (default: "${PN}-autoloads.el") and a list of directories (default: working |
42 | # (default: "${PN}-autoloads.el") and a list of directories (default: working |
| 42 | # directory) as its arguments. Use of this function requires that the elisp |
43 | # directory) as its arguments. Use of this function requires that the elisp |
| … | |
… | |
| 51 | # of elisp-install(). The following parameters are the files to be put in |
52 | # of elisp-install(). The following parameters are the files to be put in |
| 52 | # that directory. Usually the subdirectory should be ${PN}, you can choose |
53 | # that directory. Usually the subdirectory should be ${PN}, you can choose |
| 53 | # something else, but remember to tell elisp-site-file-install() (see below) |
54 | # something else, but remember to tell elisp-site-file-install() (see below) |
| 54 | # the change, as it defaults to ${PN}. |
55 | # the change, as it defaults to ${PN}. |
| 55 | # |
56 | # |
| 56 | # elisp-install ${PN} *.elc *.el || die "elisp-install failed!" |
57 | # elisp-install ${PN} *.el *.elc || die "elisp-install failed" |
| 57 | # |
58 | # |
| 58 | # To let the Emacs support be activated by Emacs on startup, you need |
59 | # To let the Emacs support be activated by Emacs on startup, you need |
| 59 | # to provide a site file (shipped in ${FILESDIR}) which contains the startup |
60 | # to provide a site file (shipped in ${FILESDIR}) which contains the startup |
| 60 | # code (have a look in the documentation of your software). Normally this |
61 | # code (have a look in the documentation of your software). Normally this |
| 61 | # would look like this: |
62 | # would look like this: |
| … | |
… | |
| 119 | # elisp-emacs-version() outputs the version of the currently active Emacs. |
120 | # elisp-emacs-version() outputs the version of the currently active Emacs. |
| 120 | # |
121 | # |
| 121 | # As always: Feel free to contact Emacs team through emacs@gentoo.org if you |
122 | # As always: Feel free to contact Emacs team through emacs@gentoo.org if you |
| 122 | # have problems, suggestions or questions. |
123 | # have problems, suggestions or questions. |
| 123 | |
124 | |
| 124 | IUSE="userland_GNU" |
|
|
| 125 | |
|
|
| 126 | SITELISP=/usr/share/emacs/site-lisp |
125 | SITELISP=/usr/share/emacs/site-lisp |
| 127 | |
126 | |
| 128 | elisp-compile() { |
127 | elisp-compile() { |
| 129 | einfo "Compiling GNU Emacs Elisp files ..." |
128 | einfo "Compiling GNU Emacs Elisp files ..." |
| 130 | /usr/bin/emacs -batch -q --no-site-file -f batch-byte-compile $* |
129 | /usr/bin/emacs -batch -q --no-site-file -f batch-byte-compile $* |
| … | |
… | |
| 187 | |
186 | |
| 188 | elisp-site-regen() { |
187 | elisp-site-regen() { |
| 189 | local sflist sf line |
188 | local sflist sf line |
| 190 | |
189 | |
| 191 | einfo "Regenerating ${SITELISP}/site-gentoo.el ..." |
190 | einfo "Regenerating ${SITELISP}/site-gentoo.el ..." |
| 192 | cat <<EOF >"${T}"/site-gentoo.el |
191 | cat <<-EOF >"${T}"/site-gentoo.el |
| 193 | ;;; DO NOT EDIT THIS FILE -- IT IS GENERATED AUTOMATICALLY BY PORTAGE |
192 | ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages |
| 194 | ;;; ----------------------------------------------------------------- |
|
|
| 195 | |
193 | |
|
|
194 | ;;; Commentary: |
|
|
195 | ;; Automatically generated by elisp-common.eclass |
|
|
196 | ;; DO NOT EDIT THIS FILE |
|
|
197 | |
|
|
198 | ;;; Code: |
| 196 | EOF |
199 | EOF |
|
|
200 | |
| 197 | for sf in "${ROOT}${SITELISP}"/[0-9][0-9]*-gentoo.el |
201 | for sf in "${ROOT}${SITELISP}"/[0-9][0-9]*-gentoo.el |
| 198 | do |
202 | do |
| 199 | [ -r "${sf}" ] || continue |
203 | [ -r "${sf}" ] || continue |
| 200 | sflist="${sflist} $(basename "${sf}")" |
204 | sflist="${sflist} $(basename "${sf}")" |
| 201 | cat "${sf}" >>"${T}"/site-gentoo.el |
205 | cat "${sf}" >>"${T}"/site-gentoo.el |
| 202 | done |
206 | done |
| 203 | |
207 | |
|
|
208 | cat <<-EOF >>"${T}"/site-gentoo.el |
|
|
209 | |
|
|
210 | ;;; site-gentoo.el ends here |
|
|
211 | EOF |
|
|
212 | |
| 204 | if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el; then |
213 | if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el; then |
| 205 | # This prevents outputting unnecessary text when there |
214 | # This prevents outputting unnecessary text when there |
| 206 | # was actually no change |
215 | # was actually no change |
| 207 | # A case is a remerge where we have doubled output |
216 | # A case is a remerge where we have doubled output |
| 208 | einfo "... no changes" |
217 | einfo "... no changes" |
| 209 | else |
218 | else |
| 210 | local mvopts="" |
|
|
| 211 | use userland_GNU && mvopts="-b" |
|
|
| 212 | mv ${mvopts} "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el |
219 | mv "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el |
| 213 | einfo "" |
220 | einfo "" |
| 214 | for sf in ${sflist}; do |
221 | for sf in ${sflist}; do |
| 215 | einfo " Adding ${sf} ..." |
222 | einfo " Adding ${sf} ..." |
| 216 | done |
223 | done |
| 217 | while read line; do einfo "${line}"; done <<EOF |
224 | while read line; do einfo "${line}"; done <<EOF |
| 218 | |
225 | |
| 219 | All site initialization for Gentoo-installed packages is now added to |
226 | All site initialisation for Gentoo-installed packages is now added to |
| 220 | /usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is no longer |
227 | /usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is no longer |
| 221 | managed by Gentoo. You are responsible for all maintenance of |
228 | managed by Gentoo. You are responsible for all maintenance of |
| 222 | site-start.el if there is such a file. |
229 | site-start.el if there is such a file. |
| 223 | |
230 | |
| 224 | In order for this site initialization to be loaded for all users |
231 | In order for this site initialisation to be loaded for all users |
| 225 | automatically, as was done previously, you can add a line like this: |
232 | automatically, as was done previously, you can add a line like this: |
| 226 | |
233 | |
| 227 | (load "/usr/share/emacs/site-lisp/site-gentoo" nil t) |
234 | (load "/usr/share/emacs/site-lisp/site-gentoo" nil t) |
| 228 | |
235 | |
| 229 | to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line |
236 | to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line |
| 230 | can be added by individual users to their initialization files, or for |
237 | can be added by individual users to their initialisation files, or for |
| 231 | greater flexibility, users can select which of the package-specific |
238 | greater flexibility, users can select which of the package-specific |
| 232 | initialization files in /usr/share/emacs/site-lisp to load. |
239 | initialisation files in /usr/share/emacs/site-lisp to load. |
| 233 | EOF |
240 | EOF |
| 234 | echo |
241 | echo |
| 235 | fi |
242 | fi |
| 236 | } |
243 | } |
| 237 | |
244 | |
| 238 | # The following Emacs Lisp compilation routine is taken from GNU |
245 | # The following Emacs Lisp compilation routine was originally taken from |
| 239 | # autotools. |
246 | # GNU autotools. |
| 240 | |
247 | |
| 241 | elisp-comp() { |
248 | elisp-comp() { |
| 242 | # Copyright 1995 Free Software Foundation, Inc. |
249 | # Copyright 1995 Free Software Foundation, Inc. |
| 243 | # François Pinard <pinard@iro.umontreal.ca>, 1995. |
250 | # François Pinard <pinard@iro.umontreal.ca>, 1995. |
| 244 | # This script byte-compiles all `.el' files which are part of its |
251 | # This script byte-compiles all `.el' files which are part of its |