# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/app-editors/emacs-cvs/emacs-cvs-23.0.50.ebuild,v 1.3 2007/08/30 12:38:26 ulm Exp $ ECVS_AUTH="pserver" ECVS_SERVER="cvs.savannah.gnu.org:/sources/emacs" ECVS_MODULE="emacs" ECVS_BRANCH="HEAD" ECVS_LOCALNAME="emacs" WANT_AUTOCONF="2.61" WANT_AUTOMAKE="latest" inherit autotools cvs elisp-common eutils flag-o-matic DESCRIPTION="The extensible, customizable, self-documenting real-time display editor" HOMEPAGE="http://www.gnu.org/software/emacs/" SRC_URI="" LICENSE="GPL-3 FDL-1.2 BSD" SLOT="23" KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" IUSE="alsa gif gpm gtk gzip-el hesiod jpeg motif png spell sound source svg tiff toolkit-scroll-bars X Xaw3d xpm" RESTRICT="strip" X_DEPEND="x11-libs/libXmu x11-libs/libXt x11-misc/xbitmaps" RDEPEND="!=app-editors/emacs-cvs-23.0.0-r6 sys-libs/ncurses >=app-admin/eselect-emacs-0.7-r1 sys-libs/zlib hesiod? ( net-dns/hesiod ) spell? ( || ( app-text/ispell app-text/aspell ) ) alsa? ( media-sound/alsa-headers ) gpm? ( sys-libs/gpm ) X? ( $X_DEPEND x11-misc/emacs-desktop gif? ( media-libs/giflib ) jpeg? ( media-libs/jpeg ) tiff? ( media-libs/tiff ) png? ( media-libs/libpng ) svg? ( >=gnome-base/librsvg-2.0 ) xpm? ( x11-libs/libXpm ) gtk? ( =x11-libs/gtk+-2* ) !gtk? ( Xaw3d? ( x11-libs/Xaw3d ) !Xaw3d? ( motif? ( virtual/motif ) ) ) )" DEPEND="${RDEPEND} gzip-el? ( app-arch/gzip )" PROVIDE="virtual/editor" S="${WORKDIR}/${ECVS_LOCALNAME}" EMACS_SUFFIX="emacs-${SLOT}" src_unpack() { cvs_src_unpack cd "${S}" # FULL_VERSION keeps the full version number, which is needed in # order to determine some path information correctly for copy/move # operations later on FULL_VERSION=$(grep 'defconst[ ]*emacs-version' lisp/version.el \ | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/') [ "${FULL_VERSION}" ] || die "Cannot determine current Emacs version" echo einfo "Emacs CVS branch: ${ECVS_BRANCH}" einfo "Emacs version number: ${FULL_VERSION}" [ "${FULL_VERSION}" = ${PV} ] \ || die "Upstream version number changed to ${FULL_VERSION}" echo 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" if ! use gzip-el; then # Emacs' build system automatically detects the gzip binary and # compresses el files. We don't want that so confuse it with a # wrong binary name sed -i -e "s/ gzip/ PrEvEnTcOmPrEsSiOn/" configure.in \ || die "unable to sed configure.in" fi epatch "${FILESDIR}/${PN}-freebsd-sparc.patch" # ALSA is detected and used even if not requested by the USE=alsa flag. # So remove the automagic check use alsa || epatch "${FILESDIR}/${PN}-disable_alsa_detection-r1.patch" eautoreconf } src_compile() { export SANDBOX_ON=0 # for the unbelievers, see Bug #131505 ALLOWED_FLAGS="" strip-flags unset LDFLAGS replace-flags -O[3-9] -O2 local myconf if use alsa && ! use sound; then echo einfo "Although sound USE flag is disabled you chose to have alsa," einfo "so sound is switched on anyway." echo myconf="${myconf} --with-sound" else myconf="${myconf} $(use_with sound)" fi if use X; then myconf="${myconf} --with-x" myconf="${myconf} $(use_with toolkit-scroll-bars)" myconf="${myconf} $(use_with jpeg) $(use_with tiff)" myconf="${myconf} $(use_with gif) $(use_with png)" myconf="${myconf} $(use_with xpm) $(use_with svg rsvg)" # GTK+ is the default toolkit if USE=gtk is chosen with other # possibilities. Emacs upstream thinks this should be standard # policy on all distributions if use gtk; then echo einfo "Configuring to build with GTK support, disabling all other toolkits" echo myconf="${myconf} --with-x-toolkit=gtk" elif use Xaw3d; then einfo "Configuring to build with Xaw3d(athena) support" myconf="${myconf} --with-x-toolkit=athena" myconf="${myconf} --without-gtk" elif use motif; then einfo "Configuring to build with motif toolkit support" myconf="${myconf} --with-x-toolkit=motif" myconf="${myconf} --without-gtk" else einfo "Configuring to build with no toolkit" myconf="${myconf} --with-x-toolkit=no" myconf="${myconf} --without-gtk" fi else myconf="${myconf} --without-x" fi myconf="${myconf} $(use_with hesiod)" myconf="${myconf} $(use_with gpm)" econf \ --program-suffix=-${EMACS_SUFFIX} \ --infodir=/usr/share/info/${EMACS_SUFFIX} \ --without-carbon \ ${myconf} || die "econf emacs failed" emake CC="$(tc-getCC)" bootstrap || die "make bootstrap failed" } src_install () { emake install DESTDIR="${D}" || die "make install failed" rm "${D}"/usr/bin/emacs-${FULL_VERSION}-${EMACS_SUFFIX} \ || die "removing duplicate emacs executable failed" mv "${D}"/usr/bin/emacs-${EMACS_SUFFIX} "${D}"/usr/bin/${EMACS_SUFFIX} \ || die "moving Emacs executable failed" # move info documentation to the correct place einfo "Fixing info documentation ..." for i in "${D}"/usr/share/info/${EMACS_SUFFIX}/*; do mv ${i} ${i}.info || die "mv info failed" done # move man pages to the correct place einfo "Fixing manpages ..." for m in "${D}"/usr/share/man/man1/* ; do mv ${m} ${m%.1}-${EMACS_SUFFIX}.1 || die "mv man failed" done # avoid collision between slots, see bug #169033 e.g. rm "${D}"/usr/share/emacs/site-lisp/subdirs.el rm "${D}"/var/lib/games/emacs/{snake,tetris}-scores keepdir /var/lib/games/emacs/ if use source; then insinto /usr/share/emacs/${FULL_VERSION}/src # This is not meant to install all the source -- just the # C source you might find via find-function doins src/*.[ch] sed 's/^X//' >00${PN}-${SLOT}-gentoo.el <<-EOF (if (string-match "\\\\\`${FULL_VERSION//./\\\\.}\\\\>" emacs-version) X (setq find-function-C-source-directory X "/usr/share/emacs/${FULL_VERSION}/src")) EOF elisp-site-file-install 00${PN}-${SLOT}-gentoo.el fi dodoc AUTHORS BUGS CONTRIBUTE README || die "dodoc failed" } 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_SUFFIX} f einfo "Regenerating Info directory index in ${infodir} ..." rm -f ${ROOT}${infodir}/dir{,.*} for f in ${ROOT}${infodir}/*.info*; do [[ ${f##*/} == *[0-9].info* ]] \ || install-info --info-dir=${ROOT}${infodir} ${f} &>/dev/null done echo } pkg_postinst() { test -f ${ROOT}/usr/share/emacs/site-lisp/subdirs.el || cp ${ROOT}/usr/share/emacs{/${FULL_VERSION},}/site-lisp/subdirs.el local f for f in ${ROOT}/var/lib/games/emacs/{snake,tetris}-scores; do test -e ${f} || touch ${f} done elisp-site-regen emacs-infodir-rebuild eselect emacs update --if-unset if use X; then elog "You need to install some fonts for Emacs. Under monolithic" elog "XFree86/Xorg you typically had such fonts installed by default." elog "With modular Xorg, you will have to perform this step yourself." elog "Installing media-fonts/font-adobe-{75,100}dpi on the X server's" elog "machine would satisfy basic Emacs requirements under X11." fi echo elog "You can set the version to be started by /usr/bin/emacs through" elog "the Emacs eselect module. Man and info pages are automatically" elog "redirected, so you are to test emacs-cvs along with the stable" elog "release. \"man emacs.eselect\" for details." } pkg_postrm() { elisp-site-regen emacs-infodir-rebuild eselect emacs update --if-unset }