diff options
author | Ulrich Müller <ulm@gentoo.org> | 2009-09-14 17:49:31 +0000 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2009-09-14 17:49:31 +0000 |
commit | 05d401eb32d6dbc44909419bc73d7d94c9f50d57 (patch) | |
tree | 988431d3057a2cf19aa5908f1234aee2f7d5e999 /eclass/elisp.eclass | |
parent | Add CEDET homepage too. (diff) | |
download | emacs-05d401eb32d6dbc44909419bc73d7d94c9f50d57.tar.gz emacs-05d401eb32d6dbc44909419bc73d7d94c9f50d57.tar.bz2 emacs-05d401eb32d6dbc44909419bc73d7d94c9f50d57.zip |
Add support for Texinfo files, variable ELISP_TEXINFO.
svn path=/emacs-overlay/; revision=1450
Diffstat (limited to 'eclass/elisp.eclass')
-rw-r--r-- | eclass/elisp.eclass | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/eclass/elisp.eclass b/eclass/elisp.eclass new file mode 100644 index 0000000..2fad475 --- /dev/null +++ b/eclass/elisp.eclass @@ -0,0 +1,138 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ +# +# Copyright 2002-2003 Matthew Kennedy <mkennedy@gentoo.org> +# Copyright 2003 Jeremy Maitin-Shepard <jbms@attbi.com> +# Copyright 2007-2009 Christian Faulhammer <fauli@gentoo.org> +# Copyright 2007-2009 Ulrich Müller <ulm@gentoo.org> +# +# @ECLASS: elisp.eclass +# @MAINTAINER: +# Feel free to contact the Emacs team through <emacs@gentoo.org> if you +# have problems, suggestions or questions. +# @BLURB: Eclass for Emacs Lisp packages +# @DESCRIPTION: +# +# This eclass is designed to install elisp files of Emacs related +# packages into the site-lisp directory. The majority of elisp packages +# will only need to define the standard ebuild variables (like SRC_URI) +# and optionally SITEFILE for successful installation. +# +# Emacs support for other than pure elisp packages is handled by +# elisp-common.eclass where you won't have a dependency on Emacs itself. +# All elisp-* functions are documented there. +# +# If the package's source is a single (in whatever way) compressed elisp +# file with the file name ${P}.el, then this eclass will move ${P}.el to +# ${PN}.el in src_unpack(). + +# @ECLASS-VARIABLE: NEED_EMACS +# @DESCRIPTION: +# If you need anything different from Emacs 21, use the NEED_EMACS +# variable before inheriting elisp.eclass. Set it to the major version +# your package uses and the dependency will be adjusted. + +# @ECLASS-VARIABLE: ELISP_PATCHES +# @DESCRIPTION: +# Any patches to apply after unpacking the sources. Patches are searched +# both in ${PWD} and ${FILESDIR}. + +# @ECLASS-VARIABLE: SITEFILE +# @DESCRIPTION: +# Name of package's site-init file. The filename must match the shell +# pattern "[1-8][0-9]*-gentoo.el"; numbers below 10 and above 89 are +# reserved for internal use. "50${PN}-gentoo.el" is a reasonable choice +# in most cases. + +# @ECLASS-VARIABLE: ELISP_TEXINFO +# @DESCRIPTION: +# Space separated list of Texinfo sources. Respective GNU Info files +# will be generated in src_compile() and installed in src_install(). + +# @ECLASS-VARIABLE: DOCS +# @DESCRIPTION: +# DOCS="blah.txt ChangeLog" is automatically used to install the given +# files by dodoc in src_install(). + +inherit elisp-common eutils + +case "${EAPI:-0}" in + 0|1) EXPORT_FUNCTIONS src_{unpack,compile,install} \ + pkg_{setup,postinst,postrm} ;; + *) EXPORT_FUNCTIONS src_{unpack,prepare,configure,compile,install} \ + pkg_{setup,postinst,postrm} ;; +esac + +DEPEND=">=virtual/emacs-${NEED_EMACS:-21}" +RDEPEND="${DEPEND}" +IUSE="" + +elisp_pkg_setup() { + local need_emacs=${NEED_EMACS:-21} + local have_emacs=$(elisp-emacs-version) + if [ "${have_emacs%%.*}" -lt "${need_emacs%%.*}" ]; then + eerror "This package needs at least Emacs ${need_emacs%%.*}." + eerror "Use \"eselect emacs\" to select the active version." + die "Emacs version ${have_emacs} is too low." + fi + einfo "Emacs version: ${have_emacs}" +} + +elisp_src_unpack() { + [ -n "${A}" ] && unpack ${A} + if [ -f ${P}.el ]; then + # the "simple elisp" case with a single *.el file in WORKDIR + mv ${P}.el ${PN}.el || die + [ -d "${S}" ] || S=${WORKDIR} + fi + + case "${EAPI:-0}" in + 0|1) [ -d "${S}" ] && cd "${S}" + elisp_src_prepare ;; + esac +} + +elisp_src_prepare() { + local patch + for patch in ${ELISP_PATCHES}; do + if [ -f "${patch}" ]; then + epatch "${patch}" + elif [ -f "${FILESDIR}/${patch}" ]; then + epatch "${FILESDIR}/${patch}" + else + die "Cannot find ${patch}" + fi + done +} + +elisp_src_configure() { :; } + +elisp_src_compile() { + elisp-compile *.el || die + if [ -n "${ELISP_TEXINFO}" ]; do + makeinfo ${ELISP_TEXINFO} || die + done +} + +elisp_src_install() { + elisp-install ${PN} *.el *.elc || die + if [ -n "${SITEFILE}" ]; then + elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die + fi + if [ -n "${ELISP_TEXINFO}" ]; then + set -- ${ELISP_TEXINFO} + doinfo ${@/%.*/.info*} || die + fi + if [ -n "${DOCS}" ]; then + dodoc ${DOCS} || die + fi +} + +elisp_pkg_postinst() { + elisp-site-regen +} + +elisp_pkg_postrm() { + elisp-site-regen +} |