| 1 | # Copyright 1999-2009 Gentoo Foundation |
1 | # Copyright 1999-2011 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.59 2009/04/08 10:47:42 ulm Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/elisp-common.eclass,v 1.71 2011/02/19 10:12:42 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> |
| 9 | # Copyright 2007-2009 Ulrich Müller <ulm@gentoo.org> |
9 | # Copyright 2007-2011 Ulrich Müller <ulm@gentoo.org> |
| 10 | # |
10 | # |
| 11 | # @ECLASS: elisp-common.eclass |
11 | # @ECLASS: elisp-common.eclass |
| 12 | # @MAINTAINER: |
12 | # @MAINTAINER: |
| 13 | # Feel free to contact the Emacs team through <emacs@gentoo.org> if you |
13 | # Feel free to contact the Emacs team through <emacs@gentoo.org> if you |
| 14 | # have problems, suggestions or questions. |
14 | # have problems, suggestions or questions. |
| … | |
… | |
| 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 |
| … | |
… | |
| 63 | # To let the Emacs support be activated by Emacs on startup, you need |
76 | # To let the Emacs support be activated by Emacs on startup, you need |
| 64 | # to provide a site file (shipped in ${FILESDIR}) which contains the |
77 | # to provide a site file (shipped in ${FILESDIR}) which contains the |
| 65 | # startup code (have a look in the documentation of your software). |
78 | # startup code (have a look in the documentation of your software). |
| 66 | # Normally this would look like this: |
79 | # Normally this would look like this: |
| 67 | # |
80 | # |
| 68 | # ;;; csv-mode site-lisp configuration |
|
|
| 69 | # |
|
|
| 70 | # (add-to-list 'load-path "@SITELISP@") |
81 | # (add-to-list 'load-path "@SITELISP@") |
| 71 | # (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode)) |
82 | # (add-to-list 'auto-mode-alist '("\\.csv\\'" . csv-mode)) |
| 72 | # (autoload 'csv-mode "csv-mode" "Major mode for csv files." t) |
83 | # (autoload 'csv-mode "csv-mode" "Major mode for csv files." t) |
| 73 | # |
84 | # |
| 74 | # If your Emacs support files are installed in a subdirectory of |
85 | # If your Emacs support files are installed in a subdirectory of |
| … | |
… | |
| 87 | # |
98 | # |
| 88 | # 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 |
| 89 | # "[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 |
| 90 | # 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 |
| 91 | # internal use). So if your initialisation depends on another Emacs |
102 | # internal use). So if your initialisation depends on another Emacs |
| 92 | # 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. |
| 93 | # |
106 | # |
| 94 | # 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 |
| 95 | # your ebuild (e.g., right after S or RDEPEND): |
108 | # your ebuild (e.g., right after S or RDEPEND): |
| 96 | # |
109 | # |
| 97 | # SITEFILE="50${PN}-gentoo.el" |
110 | # SITEFILE="50${PN}-gentoo.el" |
| … | |
… | |
| 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 |
| … | |
… | |
| 143 | SITEETC=/usr/share/emacs/etc |
151 | SITEETC=/usr/share/emacs/etc |
| 144 | |
152 | |
| 145 | # @ECLASS-VARIABLE: EMACS |
153 | # @ECLASS-VARIABLE: EMACS |
| 146 | # @DESCRIPTION: |
154 | # @DESCRIPTION: |
| 147 | # Path of Emacs executable. |
155 | # Path of Emacs executable. |
| 148 | EMACS=/usr/bin/emacs |
156 | EMACS=${EPREFIX}/usr/bin/emacs |
| 149 | |
157 | |
| 150 | # @ECLASS-VARIABLE: EMACSFLAGS |
158 | # @ECLASS-VARIABLE: EMACSFLAGS |
| 151 | # @DESCRIPTION: |
159 | # @DESCRIPTION: |
| 152 | # Flags for executing Emacs in batch mode. |
160 | # Flags for executing Emacs in batch mode. |
| 153 | # These work for Emacs versions 18-23, so don't change them. |
161 | # These work for Emacs versions 18-23, so don't change them. |
| … | |
… | |
| 155 | |
163 | |
| 156 | # @ECLASS-VARIABLE: BYTECOMPFLAGS |
164 | # @ECLASS-VARIABLE: BYTECOMPFLAGS |
| 157 | # @DESCRIPTION: |
165 | # @DESCRIPTION: |
| 158 | # Emacs flags used for byte-compilation in elisp-compile(). |
166 | # Emacs flags used for byte-compilation in elisp-compile(). |
| 159 | BYTECOMPFLAGS="-L ." |
167 | BYTECOMPFLAGS="-L ." |
| 160 | |
|
|
| 161 | # @FUNCTION: elisp-compile |
|
|
| 162 | # @USAGE: <list of elisp files> |
|
|
| 163 | # @DESCRIPTION: |
|
|
| 164 | # Byte-compile Emacs Lisp files. |
|
|
| 165 | # |
|
|
| 166 | # This function uses GNU Emacs to byte-compile all ".el" specified by |
|
|
| 167 | # its arguments. The resulting byte-code (".elc") files are placed in |
|
|
| 168 | # the same directory as their corresponding source file. |
|
|
| 169 | # |
|
|
| 170 | # The current directory is added to the load-path. This will ensure |
|
|
| 171 | # that interdependent Emacs Lisp files are visible between themselves, |
|
|
| 172 | # in case they require or load one another. |
|
|
| 173 | |
|
|
| 174 | elisp-compile() { |
|
|
| 175 | ebegin "Compiling GNU Emacs Elisp files" |
|
|
| 176 | ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" |
|
|
| 177 | 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 | } |
|
|
| 183 | |
168 | |
| 184 | # @FUNCTION: elisp-emacs-version |
169 | # @FUNCTION: elisp-emacs-version |
| 185 | # @DESCRIPTION: |
170 | # @DESCRIPTION: |
| 186 | # Output version of currently active Emacs. |
171 | # Output version of currently active Emacs. |
| 187 | |
172 | |
| … | |
… | |
| 190 | echo "(princ emacs-version)" >"${T}"/emacs-version.el |
175 | echo "(princ emacs-version)" >"${T}"/emacs-version.el |
| 191 | ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el |
176 | ${EMACS} ${EMACSFLAGS} -l "${T}"/emacs-version.el |
| 192 | rm -f "${T}"/emacs-version.el |
177 | rm -f "${T}"/emacs-version.el |
| 193 | } |
178 | } |
| 194 | |
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 | |
|
|
187 | elisp-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 | |
|
|
212 | elisp-compile() { |
|
|
213 | ebegin "Compiling GNU Emacs Elisp files" |
|
|
214 | ${EMACS} ${EMACSFLAGS} ${BYTECOMPFLAGS} -f batch-byte-compile "$@" |
|
|
215 | eend $? "elisp-compile: batch-byte-compile failed" |
|
|
216 | } |
|
|
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: |
| 198 | # Generate a file with autoload definitions for the lisp functions. |
221 | # Generate a file with autoload definitions for the lisp functions. |
| 199 | |
222 | |
| 200 | elisp-make-autoload-file() { |
223 | elisp-make-autoload-file() { |
| 201 | local f="${1:-${PN}-autoloads.el}" |
224 | local f="${1:-${PN}-autoloads.el}" null="" page=$'\f' |
| 202 | shift |
225 | shift |
| 203 | ebegin "Generating autoload file for GNU Emacs" |
226 | ebegin "Generating autoload file for GNU Emacs" |
| 204 | |
227 | |
| 205 | sed 's/^FF/\f/' >"${f}" <<-EOF |
228 | cat >"${f}" <<-EOF |
| 206 | ;;; ${f##*/} --- autoloads for ${P} |
229 | ;;; ${f##*/} --- autoloads for ${PN} |
| 207 | |
230 | |
| 208 | ;;; Commentary: |
231 | ;;; Commentary: |
| 209 | ;; Automatically generated by elisp-common.eclass |
232 | ;; Automatically generated by elisp-common.eclass |
| 210 | ;; DO NOT EDIT THIS FILE |
233 | ;; DO NOT EDIT THIS FILE |
| 211 | |
234 | |
| 212 | ;;; Code: |
235 | ;;; Code: |
| 213 | FF |
236 | ${page} |
| 214 | ;; Local Variables: |
237 | ;; Local ${null}Variables: |
| 215 | ;; version-control: never |
238 | ;; version-control: never |
| 216 | ;; no-byte-compile: t |
239 | ;; no-byte-compile: t |
| 217 | ;; no-update-autoloads: t |
240 | ;; no-update-autoloads: t |
| 218 | ;; End: |
241 | ;; End: |
|
|
242 | |
| 219 | ;;; ${f##*/} ends here |
243 | ;;; ${f##*/} ends here |
| 220 | EOF |
244 | EOF |
| 221 | |
245 | |
| 222 | ${EMACS} ${EMACSFLAGS} \ |
246 | ${EMACS} ${EMACSFLAGS} \ |
| 223 | --eval "(setq make-backup-files nil)" \ |
247 | --eval "(setq make-backup-files nil)" \ |
| … | |
… | |
| 258 | |
282 | |
| 259 | [[ ${sf} == [0-9][0-9]*-gentoo*.el ]] \ |
283 | [[ ${sf} == [0-9][0-9]*-gentoo*.el ]] \ |
| 260 | || ewarn "elisp-site-file-install: bad name of site-init file" |
284 | || ewarn "elisp-site-file-install: bad name of site-init file" |
| 261 | sf="${T}/${sf/%-gentoo*.el/-gentoo.el}" |
285 | sf="${T}/${sf/%-gentoo*.el/-gentoo.el}" |
| 262 | ebegin "Installing site initialisation file for GNU Emacs" |
286 | ebegin "Installing site initialisation file for GNU Emacs" |
| 263 | cp "$1" "${sf}" |
287 | [[ $1 = "${sf}" ]] || cp "$1" "${sf}" |
| 264 | sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" \ |
288 | sed -i -e "1{:x;/^\$/{n;bx;};/^;.*${PN}/I!s:^:${header}\n\n:;1s:^:\n:;}" \ |
| 265 | -e "s:@SITELISP@:${SITELISP}/${my_pn}:g" \ |
289 | -e "s:@SITELISP@:${EPREFIX}${SITELISP}/${my_pn}:g" \ |
| 266 | -e "s:@SITEETC@:${SITEETC}/${my_pn}:g;\$q" "${sf}" |
290 | -e "s:@SITEETC@:${EPREFIX}${SITEETC}/${my_pn}:g;\$q" "${sf}" |
| 267 | ( # subshell to avoid pollution of calling environment |
291 | ( # subshell to avoid pollution of calling environment |
| 268 | insinto "${SITELISP}/site-gentoo.d" |
292 | insinto "${SITELISP}/site-gentoo.d" |
| 269 | doins "${sf}" |
293 | doins "${sf}" |
| 270 | ) |
294 | ) |
| 271 | ret=$? |
295 | ret=$? |
| … | |
… | |
| 282 | # Note: Before December 2007, site initialisation files were installed |
306 | # Note: Before December 2007, site initialisation files were installed |
| 283 | # in /usr/share/emacs/site-lisp/. For backwards compatibility, this |
307 | # in /usr/share/emacs/site-lisp/. For backwards compatibility, this |
| 284 | # location is still supported when generating site-gentoo.el. |
308 | # location is still supported when generating site-gentoo.el. |
| 285 | |
309 | |
| 286 | elisp-site-regen() { |
310 | elisp-site-regen() { |
| 287 | local i sf line firstrun obsolete |
311 | local sitelisp=${ROOT}${EPREFIX}${SITELISP} |
|
|
312 | local sf i line null="" page=$'\f' |
| 288 | local -a sflist |
313 | local -a sflist |
| 289 | |
314 | |
| 290 | if [ ! -d "${ROOT}${SITELISP}" ]; then |
315 | if [ ! -d "${sitelisp}" ]; then |
| 291 | eerror "elisp-site-regen: Directory ${SITELISP} does not exist" |
316 | eerror "elisp-site-regen: Directory ${sitelisp} does not exist" |
| 292 | return 1 |
317 | return 1 |
| 293 | fi |
318 | fi |
| 294 | |
319 | |
| 295 | if [ ! -d "${T}" ]; then |
320 | if [ ! -d "${T}" ]; then |
| 296 | eerror "elisp-site-regen: Temporary directory ${T} does not exist" |
321 | eerror "elisp-site-regen: Temporary directory ${T} does not exist" |
| 297 | return 1 |
322 | return 1 |
| 298 | fi |
323 | fi |
| 299 | |
324 | |
| 300 | [ -e "${ROOT}${SITELISP}"/site-gentoo.el ] \ |
|
|
| 301 | || [ "${PN}" = emacs-common-gentoo ] || firstrun=t |
|
|
| 302 | |
|
|
| 303 | if [ "${firstrun}" ] && [ ! -e "${ROOT}${SITELISP}"/site-start.el ]; then |
|
|
| 304 | einfo "Creating default site-start.el ..." |
|
|
| 305 | cat <<-EOF >"${T}"/site-start.el |
|
|
| 306 | ;;; site-start.el |
|
|
| 307 | |
|
|
| 308 | ;;; Commentary: |
|
|
| 309 | ;; This default site startup file is installed by elisp-common.eclass. |
|
|
| 310 | ;; You may replace this file by your own site initialisation, or even |
|
|
| 311 | ;; remove it completely; it will not be recreated. |
|
|
| 312 | |
|
|
| 313 | ;;; Code: |
|
|
| 314 | ;; Load site initialisation for Gentoo-installed packages. |
|
|
| 315 | (require 'site-gentoo) |
|
|
| 316 | |
|
|
| 317 | ;;; site-start.el ends here |
|
|
| 318 | EOF |
|
|
| 319 | fi |
|
|
| 320 | |
|
|
| 321 | einfon "Regenerating site-gentoo.el (${EBUILD_PHASE}) ..." |
325 | einfon "Regenerating site-gentoo.el for GNU Emacs (${EBUILD_PHASE}) ..." |
| 322 | |
326 | |
| 323 | # Until January 2009, elisp-common.eclass sometimes created an |
327 | # Until January 2009, elisp-common.eclass sometimes created an |
| 324 | # auxiliary file for backwards compatibility. Remove any such file. |
328 | # auxiliary file for backwards compatibility. Remove any such file. |
| 325 | rm -f "${ROOT}${SITELISP}"/00site-gentoo.el |
329 | rm -f "${sitelisp}"/00site-gentoo.el |
| 326 | |
330 | |
| 327 | # set nullglob option, there may be a directory without matching files |
|
|
| 328 | local old_shopts=$(shopt -p nullglob) |
|
|
| 329 | shopt -s nullglob |
|
|
| 330 | |
|
|
| 331 | for sf in "${ROOT}${SITELISP}"/[0-9][0-9]*-gentoo.el \ |
331 | for sf in "${sitelisp}"/[0-9][0-9]*-gentoo.el \ |
| 332 | "${ROOT}${SITELISP}"/site-gentoo.d/[0-9][0-9]*.el |
332 | "${sitelisp}"/site-gentoo.d/[0-9][0-9]*.el |
| 333 | do |
333 | do |
| 334 | [ -r "${sf}" ] || continue |
334 | [ -r "${sf}" ] || continue |
| 335 | # sort files by their basename. straight insertion sort. |
335 | # sort files by their basename. straight insertion sort. |
| 336 | for ((i=${#sflist[@]}; i>0; i--)); do |
336 | for ((i=${#sflist[@]}; i>0; i--)); do |
| 337 | [[ ${sf##*/} < ${sflist[i-1]##*/} ]] || break |
337 | [[ ${sf##*/} < ${sflist[i-1]##*/} ]] || break |
| 338 | sflist[i]=${sflist[i-1]} |
338 | sflist[i]=${sflist[i-1]} |
| 339 | done |
339 | done |
| 340 | sflist[i]=${sf} |
340 | sflist[i]=${sf} |
| 341 | # set a flag if there are obsolete files |
|
|
| 342 | [ "${sf%/*}" = "${ROOT}${SITELISP}" ] && obsolete=t |
|
|
| 343 | done |
341 | done |
| 344 | |
|
|
| 345 | eval "${old_shopts}" |
|
|
| 346 | |
342 | |
| 347 | cat <<-EOF >"${T}"/site-gentoo.el |
343 | cat <<-EOF >"${T}"/site-gentoo.el |
| 348 | ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages |
344 | ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages |
| 349 | |
345 | |
| 350 | ;;; Commentary: |
346 | ;;; Commentary: |
| … | |
… | |
| 355 | EOF |
351 | EOF |
| 356 | # 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. |
| 357 | sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el |
353 | sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el |
| 358 | cat <<-EOF >>"${T}"/site-gentoo.el |
354 | cat <<-EOF >>"${T}"/site-gentoo.el |
| 359 | |
355 | |
|
|
356 | ${page} |
| 360 | (provide 'site-gentoo) |
357 | (provide 'site-gentoo) |
| 361 | |
358 | |
| 362 | ;; Local Variables: |
359 | ;; Local ${null}Variables: |
| 363 | ;; no-byte-compile: t |
360 | ;; no-byte-compile: t |
|
|
361 | ;; buffer-read-only: t |
| 364 | ;; End: |
362 | ;; End: |
|
|
363 | |
| 365 | ;;; site-gentoo.el ends here |
364 | ;;; site-gentoo.el ends here |
| 366 | EOF |
365 | EOF |
| 367 | |
366 | |
| 368 | if cmp -s "${ROOT}${SITELISP}"/site-gentoo.el "${T}"/site-gentoo.el |
367 | if cmp -s "${sitelisp}"/site-gentoo.el "${T}"/site-gentoo.el; then |
| 369 | then |
|
|
| 370 | # This prevents outputting unnecessary text when there |
368 | # This prevents outputting unnecessary text when there |
| 371 | # was actually no change. |
369 | # was actually no change. |
| 372 | # A case is a remerge where we have doubled output. |
370 | # A case is a remerge where we have doubled output. |
|
|
371 | rm -f "${T}"/site-gentoo.el |
| 373 | echo " no changes." |
372 | echo " no changes." |
| 374 | else |
373 | else |
| 375 | mv "${T}"/site-gentoo.el "${ROOT}${SITELISP}"/site-gentoo.el |
374 | mv "${T}"/site-gentoo.el "${sitelisp}"/site-gentoo.el |
| 376 | [ -f "${T}"/site-start.el ] \ |
|
|
| 377 | && [ ! -e "${ROOT}${SITELISP}"/site-start.el ] \ |
|
|
| 378 | && mv "${T}"/site-start.el "${ROOT}${SITELISP}"/site-start.el |
|
|
| 379 | echo |
375 | echo |
|
|
376 | case ${#sflist[@]} in |
|
|
377 | 0) ewarn "... Huh? No site initialisation files found." ;; |
|
|
378 | 1) einfo "... ${#sflist[@]} site initialisation file included." ;; |
| 380 | einfo "... ${#sflist[@]} site initialisation file(s) included." |
379 | *) einfo "... ${#sflist[@]} site initialisation files included." ;; |
|
|
380 | esac |
| 381 | fi |
381 | fi |
| 382 | |
382 | |
| 383 | if [ "${firstrun}" ]; then |
|
|
| 384 | echo |
|
|
| 385 | while read line; do einfo "${line:- }"; done <<-EOF |
|
|
| 386 | All site initialisation for Gentoo-installed packages is added to |
|
|
| 387 | /usr/share/emacs/site-lisp/site-gentoo.el; site-start.el is not |
|
|
| 388 | managed by Gentoo. You are responsible for all maintenance of |
|
|
| 389 | site-start.el if there is such a file. |
|
|
| 390 | |
|
|
| 391 | In order for this site initialisation to be loaded for all users |
|
|
| 392 | automatically, you can add a line like this: |
|
|
| 393 | |
|
|
| 394 | (require 'site-gentoo) |
|
|
| 395 | |
|
|
| 396 | to /usr/share/emacs/site-lisp/site-start.el. Alternatively, that line |
|
|
| 397 | can be added by individual users to their initialisation files, or, |
|
|
| 398 | for greater flexibility, users can load individual package-specific |
|
|
| 399 | initialisation files from /usr/share/emacs/site-lisp/site-gentoo.d/. |
|
|
| 400 | EOF |
|
|
| 401 | echo |
|
|
| 402 | fi |
|
|
| 403 | |
|
|
| 404 | if [ "${obsolete}" ]; then |
|
|
| 405 | echo |
|
|
| 406 | while read line; do ewarn "${line}"; done <<-EOF |
|
|
| 407 | Site-initialisation files of Emacs packages are now installed in |
|
|
| 408 | /usr/share/emacs/site-lisp/site-gentoo.d/. We strongly recommend |
|
|
| 409 | that you use app-admin/emacs-updater to rebuild the installed |
|
|
| 410 | Emacs packages. |
|
|
| 411 | EOF |
|
|
| 412 | fi |
|
|
| 413 | |
|
|
| 414 | # cleanup |
|
|
| 415 | rm -f "${T}"/site-{gentoo,start}.el |
|
|
| 416 | |
|
|
| 417 | return 0 |
383 | return 0 |
| 418 | } |
384 | } |