blob: 600f1f7fde4ae1d3a4d30d29d445d1cbfb25a5a7 [file] [log] [blame]
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-21.4-r19.ebuild,v 1.15 2010/01/22 17:50:19 ulm Exp $
EAPI=2
inherit flag-o-matic eutils toolchain-funcs autotools
DESCRIPTION="The extensible, customizable, self-documenting real-time display editor"
HOMEPAGE="http://www.gnu.org/software/emacs/"
SRC_URI="mirror://gnu/emacs/${P}a.tar.gz
mirror://gentoo/${P}-patches-9.tar.bz2
leim? ( mirror://gnu/emacs/leim-${PV}.tar.gz )"
LICENSE="GPL-2 FDL-1.1 BSD as-is MIT"
SLOT="21"
KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
IUSE="X Xaw3d leim motif sendmail"
DEPEND="sys-libs/ncurses
>=app-admin/eselect-emacs-1.2
X? (
x11-libs/libXext
x11-libs/libICE
x11-libs/libSM
x11-libs/libXmu
x11-libs/libXpm
x11-misc/xbitmaps
>=media-libs/giflib-4.1.0.1b
>=media-libs/jpeg-6b-r2:0
>=media-libs/tiff-3.5.5-r3
>=media-libs/libpng-1.2.1
Xaw3d? ( x11-libs/Xaw3d )
!Xaw3d? ( motif? ( x11-libs/openmotif ) )
)"
RDEPEND="${DEPEND}
>=app-emacs/emacs-common-gentoo-1[X?]
sendmail? ( virtual/mta )"
src_prepare() {
EPATCH_SUFFIX=patch epatch
sed -i \
-e "s:/usr/lib/crtbegin.o:$(`tc-getCC` -print-file-name=crtbegin.o):g" \
-e "s:/usr/lib/crtend.o:$(`tc-getCC` -print-file-name=crtend.o):g" \
"${S}"/src/s/freebsd.h || die "unable to sed freebsd.h settings"
# This will need to be updated for X-Compilation
sed -i -e "s:/usr/lib/\([^ ]*\).o:/usr/$(get_libdir)/\1.o:g" \
"${S}/src/s/gnu-linux.h" || die
# custom aclocal.m4 was only needed for autoconf 2.13 and earlier
rm aclocal.m4
eaclocal
eautoconf
}
src_configure() {
# -fstack-protector gets internal compiler error at xterm.c (bug 33265)
filter-flags -fstack-protector
# emacs doesn't handle LDFLAGS properly (bug #77430 and bug #65002)
unset LDFLAGS
# ever since GCC 3.2
replace-flags -O[3-9] -O2
# -march is known to cause signal 6 on some environment
filter-flags "-march=*"
local myconf
if use X ; then
myconf="${myconf}
--with-x
--with-xpm
--with-jpeg
--with-tiff
--with-gif
--with-png"
if use Xaw3d ; then
einfo "Configuring to build with Xaw3d (Athena/Lucid) toolkit"
myconf="${myconf} --with-x-toolkit=athena"
use motif \
&& ewarn "USE flag \"motif\" ignored (superseded by \"Xaw3d\")"
elif use motif ; then
einfo "Configuring to build with Motif toolkit"
myconf="${myconf} --with-x-toolkit=motif"
else
# do not build emacs with any toolkit, bug 35300
einfo "Configuring to build with no toolkit"
myconf="${myconf} --with-x-toolkit=no"
fi
else
myconf="${myconf} --without-x"
fi
econf ${myconf} || die "econf failed"
}
src_compile() {
export SANDBOX_ON=0
emake CC="$(tc-getCC)" || die "emake failed"
einfo "Recompiling patched lisp files..."
(cd lisp; emake recompile) || die "emake recompile failed"
(cd src; emake versionclean)
emake CC="$(tc-getCC)" || die "emake failed"
}
src_install() {
local i m
einstall || die "einstall failed"
for i in "${D}"/usr/bin/* ; do
mv "${i}" "${i}-emacs-${SLOT}" || die "mv ${i} failed"
done
mv "${D}"/usr/bin/emacs{-emacs,}-${SLOT} || die "mv emacs failed"
rm "${D}"/usr/bin/emacs-${PV}-emacs-${SLOT}
# move info documentation to the correct place
mkdir "${T}/emacs-${SLOT}"
mv "${D}/usr/share/info/dir" "${T}"
for i in "${D}"/usr/share/info/*
do
mv "${i}" "${T}/emacs-${SLOT}/${i##*/}.info"
done
mv "${T}/emacs-${SLOT}" "${D}/usr/share/info"
mv "${T}/dir" "${D}/usr/share/info/emacs-${SLOT}"
# move man pages to the correct place
for m in "${D}"/usr/share/man/man1/* ; do
mv "${m}" "${m%.1}-emacs-${SLOT}.1" || die "mv ${m} failed"
done
# avoid collision between slots
rm "${D}"/usr/share/emacs/site-lisp/subdirs.el
# fix permissions
find "${D}" -perm 664 |xargs chmod -f 644 2>/dev/null
find "${D}" -type d |xargs chmod -f 755 2>/dev/null
keepdir /usr/share/emacs/${PV}/leim
dodoc BUGS ChangeLog README
}
emacs-infodir-rebuild() {
# Depending on the Portage version, the Info dir file is compressed
# or removed. It is only rebuilt by Portage if our directory is in
# INFOPATH, which is not guaranteed. So we rebuild it ourselves.
local infodir=/usr/share/info/emacs-${SLOT} f
[ -d "${ROOT}"${infodir} ] || return # may occur with FEATURES=noinfo
einfo "Regenerating Info directory index in ${infodir} ..."
rm -f "${ROOT}"${infodir}/dir{,.*}
for f in "${ROOT}"${infodir}/*.info*; do
[[ ${f##*/} != *[0-9].info* && -e ${f} ]] \
&& install-info --info-dir="${ROOT}"${infodir} "${f}" &>/dev/null
done
rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty
}
pkg_postinst() {
emacs-infodir-rebuild
eselect emacs update ifunset
if ! use sendmail && ! has_version "virtual/mta"; then
elog "You disabled sendmail support for Emacs. If you later install"
elog "a MTA then you will need to recompile Emacs. See Bug #11104."
fi
if use X; then
echo
elog "You need to install some fonts for Emacs."
elog "Installing media-fonts/font-adobe-{75,100}dpi on the X server's"
elog "machine would satisfy basic Emacs requirements under X11."
fi
}
pkg_postrm() {
emacs-infodir-rebuild
eselect emacs update ifunset
}