From f4e5d69f1b6a954bcde78b8b365e85d0933e870f Mon Sep 17 00:00:00 2001 From: Ulrich Müller Date: Fri, 11 Apr 2008 14:00:09 +0000 Subject: Fix vcdiff insecure temporary file creation, CVE-2008-1694, security bug 216880. (Portage version: 2.1.5_rc2, RepoMan options: --force) --- app-editors/emacs/ChangeLog | 14 +- app-editors/emacs/emacs-18.59-r4.ebuild | 4 +- app-editors/emacs/emacs-21.4-r14.ebuild | 193 --------------- app-editors/emacs/emacs-21.4-r15.ebuild | 193 +++++++++++++++ app-editors/emacs/emacs-22.1-r3.ebuild | 261 -------------------- app-editors/emacs/emacs-22.1-r4.ebuild | 262 +++++++++++++++++++++ app-editors/emacs/emacs-22.2-r1.ebuild | 255 ++++++++++++++++++++ app-editors/emacs/emacs-22.2.ebuild | 254 -------------------- .../emacs/files/emacs-22.1-vcdiff-tmp-race.patch | 25 ++ 9 files changed, 750 insertions(+), 711 deletions(-) delete mode 100644 app-editors/emacs/emacs-21.4-r14.ebuild create mode 100644 app-editors/emacs/emacs-21.4-r15.ebuild delete mode 100644 app-editors/emacs/emacs-22.1-r3.ebuild create mode 100644 app-editors/emacs/emacs-22.1-r4.ebuild create mode 100644 app-editors/emacs/emacs-22.2-r1.ebuild delete mode 100644 app-editors/emacs/emacs-22.2.ebuild create mode 100644 app-editors/emacs/files/emacs-22.1-vcdiff-tmp-race.patch (limited to 'app-editors') diff --git a/app-editors/emacs/ChangeLog b/app-editors/emacs/ChangeLog index b0e4b86834cf..0e729942518a 100644 --- a/app-editors/emacs/ChangeLog +++ b/app-editors/emacs/ChangeLog @@ -1,6 +1,18 @@ # ChangeLog for app-editors/emacs # Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.236 2008/04/06 22:05:14 ulm Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/ChangeLog,v 1.237 2008/04/11 14:00:08 ulm Exp $ + +*emacs-22.2-r1 (08 Apr 2008) +*emacs-22.1-r4 (08 Apr 2008) +*emacs-21.4-r15 (08 Apr 2008) + + 08 Apr 2008; Ulrich Mueller + +files/emacs-22.1-vcdiff-tmp-race.patch, -emacs-21.4-r14.ebuild, + +emacs-21.4-r15.ebuild, -emacs-22.1-r3.ebuild, +emacs-22.1-r4.ebuild, + -emacs-22.2.ebuild, +emacs-22.2-r1.ebuild: + Security fix for vcdiff insecure temporary file creation, CVE-2008-1694, + bug 216880. Straight to stable, since there is no sensible way for arch + teams to test (vcdiff was used for SCCS only). Remove vulnerable revisions. 06 Apr 2008; Ulrich Mueller +files/emacs-22.2-heimdal-gentoo.patch, emacs-22.2.ebuild: diff --git a/app-editors/emacs/emacs-18.59-r4.ebuild b/app-editors/emacs/emacs-18.59-r4.ebuild index 62124d943ccb..74b71d159a96 100644 --- a/app-editors/emacs/emacs-18.59-r4.ebuild +++ b/app-editors/emacs/emacs-18.59-r4.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r4.ebuild,v 1.9 2008/03/28 06:29:03 ulm Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-18.59-r4.ebuild,v 1.10 2008/04/11 14:00:08 ulm Exp $ inherit eutils toolchain-funcs flag-o-matic @@ -8,7 +8,7 @@ DESCRIPTION="The extensible self-documenting text editor" HOMEPAGE="http://www.gnu.org/software/emacs/" SRC_URI="mirror://gnu/old-gnu/emacs/${P}.tar.gz ftp://ftp.splode.com/pub/users/friedman/emacs/${P}-linux22x-elf-glibc21.diff.gz - mirror://gentoo/${P}-patches.tar.bz2" + mirror://gentoo/${P}-patches-1.tar.bz2" LICENSE="GPL-1 BSD" SLOT="18" diff --git a/app-editors/emacs/emacs-21.4-r14.ebuild b/app-editors/emacs/emacs-21.4-r14.ebuild deleted file mode 100644 index 2c26d7bb4873..000000000000 --- a/app-editors/emacs/emacs-21.4-r14.ebuild +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-21.4-r14.ebuild,v 1.14 2008/02/02 21:08:12 ulm Exp $ - -WANT_AUTOCONF="2.1" - -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-1.tar.bz2 - leim? ( mirror://gnu/emacs/leim-${PV}.tar.gz )" - -LICENSE="GPL-2 FDL-1.1 BSD" -SLOT="21" -KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd" -IUSE="X Xaw3d leim motif nls sendmail" - -RDEPEND="sys-libs/ncurses - X? ( - x11-libs/libXext - x11-libs/libICE - x11-libs/libSM - x11-libs/libXmu - x11-libs/libXpm - x11-misc/emacs-desktop - >=media-libs/giflib-4.1.0.1b - >=media-libs/jpeg-6b-r2 - >=media-libs/tiff-3.5.5-r3 - >=media-libs/libpng-1.2.1 - Xaw3d? ( x11-libs/Xaw3d ) - !Xaw3d? ( motif? ( virtual/motif ) ) - ) - sendmail? ( virtual/mta ) - >=app-admin/eselect-emacs-1.2" - -DEPEND="${RDEPEND} - X? ( x11-misc/xbitmaps )" - -src_unpack() { - unpack ${A} - cd "${S}" - - 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" - - # install emacsclient.1 man page (#165466) - sed -i -e "s/for page in emacs/& emacsclient/" Makefile.in || die - - # 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 -} - -src_compile() { - export SANDBOX_ON=0 - - # -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=*" - - eautoconf - - local myconf - use nls || myconf="${myconf} --disable-nls" - 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) support" - myconf="${myconf} --with-x-toolkit=athena" - elif use motif ; then - einfo "Configuring to build with motif toolkit support" - 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" - 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 "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} - - einfo "Fixing info documentation..." - 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}" - - einfo "Fixing manpages..." - 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 - - einfo "Fixing 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 - keepdir /usr/share/emacs/site-lisp - - 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 - 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 - rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty - echo -} - -pkg_postinst() { - test -f "${ROOT}"/usr/share/emacs/site-lisp/subdirs.el || - cp "${ROOT}"/usr/share/emacs{/${PV},}/site-lisp/subdirs.el - - emacs-infodir-rebuild - - if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then - # transition from pre-eselect revision - eselect emacs set emacs-${SLOT} - else - eselect emacs update ifunset - fi - - 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 - 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 -} - -pkg_postrm() { - emacs-infodir-rebuild - eselect emacs update ifunset -} diff --git a/app-editors/emacs/emacs-21.4-r15.ebuild b/app-editors/emacs/emacs-21.4-r15.ebuild new file mode 100644 index 000000000000..f99fde4321d1 --- /dev/null +++ b/app-editors/emacs/emacs-21.4-r15.ebuild @@ -0,0 +1,193 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-21.4-r15.ebuild,v 1.1 2008/04/11 14:00:08 ulm Exp $ + +WANT_AUTOCONF="2.1" + +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-2.tar.bz2 + leim? ( mirror://gnu/emacs/leim-${PV}.tar.gz )" + +LICENSE="GPL-2 FDL-1.1 BSD" +SLOT="21" +KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd" +IUSE="X Xaw3d leim motif nls sendmail" + +RDEPEND="sys-libs/ncurses + X? ( + x11-libs/libXext + x11-libs/libICE + x11-libs/libSM + x11-libs/libXmu + x11-libs/libXpm + x11-misc/emacs-desktop + >=media-libs/giflib-4.1.0.1b + >=media-libs/jpeg-6b-r2 + >=media-libs/tiff-3.5.5-r3 + >=media-libs/libpng-1.2.1 + Xaw3d? ( x11-libs/Xaw3d ) + !Xaw3d? ( motif? ( virtual/motif ) ) + ) + sendmail? ( virtual/mta ) + >=app-admin/eselect-emacs-1.2" + +DEPEND="${RDEPEND} + X? ( x11-misc/xbitmaps )" + +src_unpack() { + unpack ${A} + cd "${S}" + + 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" + + # install emacsclient.1 man page (#165466) + sed -i -e "s/for page in emacs/& emacsclient/" Makefile.in || die + + # 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 + + eautoconf +} + +src_compile() { + export SANDBOX_ON=0 + + # -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 + use nls || myconf="${myconf} --disable-nls" + 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) support" + myconf="${myconf} --with-x-toolkit=athena" + elif use motif ; then + einfo "Configuring to build with motif toolkit support" + 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" + 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 "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} + + einfo "Fixing info documentation..." + 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}" + + einfo "Fixing manpages..." + 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 + + einfo "Fixing 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 + keepdir /usr/share/emacs/site-lisp + + 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 + 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 + rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty + echo +} + +pkg_postinst() { + test -f "${ROOT}"/usr/share/emacs/site-lisp/subdirs.el || + cp "${ROOT}"/usr/share/emacs{/${PV},}/site-lisp/subdirs.el + + emacs-infodir-rebuild + + if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then + # transition from pre-eselect revision + eselect emacs set emacs-${SLOT} + else + eselect emacs update ifunset + fi + + 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 + 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 +} + +pkg_postrm() { + emacs-infodir-rebuild + eselect emacs update ifunset +} diff --git a/app-editors/emacs/emacs-22.1-r3.ebuild b/app-editors/emacs/emacs-22.1-r3.ebuild deleted file mode 100644 index 2f79bfdb1a37..000000000000 --- a/app-editors/emacs/emacs-22.1-r3.ebuild +++ /dev/null @@ -1,261 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-22.1-r3.ebuild,v 1.20 2008/03/28 06:29:03 ulm Exp $ - -WANT_AUTOCONF="2.5" -WANT_AUTOMAKE="latest" - -inherit autotools 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="mirror://gnu/emacs/${P}.tar.gz" - -LICENSE="GPL-2 FDL-1.2 BSD" -SLOT="22" -KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd" -IUSE="alsa gif gtk gzip-el hesiod jpeg motif png spell sound source tiff toolkit-scroll-bars X Xaw3d xpm" -RESTRICT="strip" - -RDEPEND="!=app-admin/eselect-emacs-1.2 - net-libs/liblockfile - hesiod? ( net-dns/hesiod ) - spell? ( || ( app-text/ispell app-text/aspell ) ) - alsa? ( media-libs/alsa-lib ) - X? ( - x11-libs/libXmu - x11-libs/libXt - x11-misc/xbitmaps - x11-misc/emacs-desktop - gif? ( media-libs/giflib ) - jpeg? ( media-libs/jpeg ) - tiff? ( media-libs/tiff ) - png? ( media-libs/libpng ) - xpm? ( x11-libs/libXpm ) - gtk? ( =x11-libs/gtk+-2* ) - !gtk? ( - Xaw3d? ( x11-libs/Xaw3d ) - !Xaw3d? ( - motif? ( virtual/motif ) - ) - ) - )" - -DEPEND="${RDEPEND} - alsa? ( dev-util/pkgconfig ) - X? ( gtk? ( dev-util/pkgconfig ) ) - gzip-el? ( app-arch/gzip )" - -# 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="${PV}" - -src_unpack() { - unpack ${A} - cd "${S}" - - epatch "${FILESDIR}/${P}-Xaw3d-headers.patch" - epatch "${FILESDIR}/${P}-freebsd-sparc.patch" - epatch "${FILESDIR}/${P}-oldxmenu-qa.patch" - epatch "${FILESDIR}/${P}-backup-buffer.patch" - epatch "${FILESDIR}/${P}-hack-local-variables.patch" - epatch "${FILESDIR}/${P}-format-int.patch" - epatch "${FILESDIR}/${P}-s390x-non-multilib.patch" - - 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 alsa; then - # ALSA is detected even if not requested by its USE flag. - # Suppress it by supplying pkg-config with a wrong library name. - sed -i -e "/ALSA_MODULES=/s/alsa/DiSaBlEaLsA/" configure.in \ - || die "unable to sed configure.in" - fi - 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 - - eautoreconf -} - -src_compile() { - export SANDBOX_ON=0 # for the unbelievers, see Bug #131505 - ALLOWED_FLAGS="" - strip-flags - unset LDFLAGS - if use hppa; then # bug #193703 - replace-flags -O[2-9] -O - else - replace-flags -O[3-9] -O2 - fi - sed -i -e "s/-lungif/-lgif/g" configure* src/Makefile* || die - - 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)" - - # 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)" - - econf \ - --program-suffix=-emacs-${SLOT} \ - --infodir=/usr/share/info/emacs-${SLOT} \ - --without-carbon \ - ${myconf} || die "econf emacs failed" - - 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 - - emake install DESTDIR="${D}" || die "make install failed" - - rm "${D}"/usr/bin/emacs-${FULL_VERSION}-emacs-${SLOT} \ - || die "removing duplicate emacs executable failed" - mv "${D}"/usr/bin/emacs-emacs-${SLOT} "${D}"/usr/bin/emacs-${SLOT} \ - || die "moving Emacs executable failed" - - # move info documentation to the correct place - einfo "Fixing info documentation ..." - for i in "${D}"/usr/share/info/emacs-${SLOT}/*; 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-${SLOT}.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 /usr/share/emacs/site-lisp - 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//' >10${PN}-${SLOT}-gentoo.el <<-EOF - - ;;; ${PN}-${SLOT} site-lisp configuration - - (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 10${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-${SLOT} 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 - rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty - 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 - - if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then - # transition from pre-eselect revision - eselect emacs set emacs-${SLOT} - else - eselect emacs update ifunset - fi - - 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, which also redirects man and info pages." - elog "Therefore, several Emacs versions can be installed at the same time." - elog "\"man emacs.eselect\" for details." -} - -pkg_postrm() { - elisp-site-regen - emacs-infodir-rebuild - eselect emacs update ifunset -} diff --git a/app-editors/emacs/emacs-22.1-r4.ebuild b/app-editors/emacs/emacs-22.1-r4.ebuild new file mode 100644 index 000000000000..382217bb9cdc --- /dev/null +++ b/app-editors/emacs/emacs-22.1-r4.ebuild @@ -0,0 +1,262 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-22.1-r4.ebuild,v 1.1 2008/04/11 14:00:08 ulm Exp $ + +WANT_AUTOCONF="2.5" +WANT_AUTOMAKE="latest" + +inherit autotools 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="mirror://gnu/emacs/${P}.tar.gz" + +LICENSE="GPL-2 FDL-1.2 BSD" +SLOT="22" +KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd" +IUSE="alsa gif gtk gzip-el hesiod jpeg motif png spell sound source tiff toolkit-scroll-bars X Xaw3d xpm" +RESTRICT="strip" + +RDEPEND="!=app-admin/eselect-emacs-1.2 + net-libs/liblockfile + hesiod? ( net-dns/hesiod ) + spell? ( || ( app-text/ispell app-text/aspell ) ) + alsa? ( media-libs/alsa-lib ) + X? ( + x11-libs/libXmu + x11-libs/libXt + x11-misc/xbitmaps + x11-misc/emacs-desktop + gif? ( media-libs/giflib ) + jpeg? ( media-libs/jpeg ) + tiff? ( media-libs/tiff ) + png? ( media-libs/libpng ) + xpm? ( x11-libs/libXpm ) + gtk? ( =x11-libs/gtk+-2* ) + !gtk? ( + Xaw3d? ( x11-libs/Xaw3d ) + !Xaw3d? ( + motif? ( virtual/motif ) + ) + ) + )" + +DEPEND="${RDEPEND} + alsa? ( dev-util/pkgconfig ) + X? ( gtk? ( dev-util/pkgconfig ) ) + gzip-el? ( app-arch/gzip )" + +# 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="${PV}" + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}/${P}-Xaw3d-headers.patch" + epatch "${FILESDIR}/${P}-freebsd-sparc.patch" + epatch "${FILESDIR}/${P}-oldxmenu-qa.patch" + epatch "${FILESDIR}/${P}-backup-buffer.patch" + epatch "${FILESDIR}/${P}-hack-local-variables.patch" + epatch "${FILESDIR}/${P}-format-int.patch" + epatch "${FILESDIR}/${P}-s390x-non-multilib.patch" + epatch "${FILESDIR}/${P}-vcdiff-tmp-race.patch" + + 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 alsa; then + # ALSA is detected even if not requested by its USE flag. + # Suppress it by supplying pkg-config with a wrong library name. + sed -i -e "/ALSA_MODULES=/s/alsa/DiSaBlEaLsA/" configure.in \ + || die "unable to sed configure.in" + fi + 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 + + eautoreconf +} + +src_compile() { + export SANDBOX_ON=0 # for the unbelievers, see Bug #131505 + ALLOWED_FLAGS="" + strip-flags + unset LDFLAGS + if use hppa; then # bug #193703 + replace-flags -O[2-9] -O + else + replace-flags -O[3-9] -O2 + fi + sed -i -e "s/-lungif/-lgif/g" configure* src/Makefile* || die + + 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)" + + # 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)" + + econf \ + --program-suffix=-emacs-${SLOT} \ + --infodir=/usr/share/info/emacs-${SLOT} \ + --without-carbon \ + ${myconf} || die "econf emacs failed" + + 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 + + emake install DESTDIR="${D}" || die "make install failed" + + rm "${D}"/usr/bin/emacs-${FULL_VERSION}-emacs-${SLOT} \ + || die "removing duplicate emacs executable failed" + mv "${D}"/usr/bin/emacs-emacs-${SLOT} "${D}"/usr/bin/emacs-${SLOT} \ + || die "moving Emacs executable failed" + + # move info documentation to the correct place + einfo "Fixing info documentation ..." + for i in "${D}"/usr/share/info/emacs-${SLOT}/*; 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-${SLOT}.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 /usr/share/emacs/site-lisp + 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//' >10${PN}-${SLOT}-gentoo.el <<-EOF + + ;;; ${PN}-${SLOT} site-lisp configuration + + (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 10${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-${SLOT} 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 + rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty + 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 + + if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then + # transition from pre-eselect revision + eselect emacs set emacs-${SLOT} + else + eselect emacs update ifunset + fi + + 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, which also redirects man and info pages." + elog "Therefore, several Emacs versions can be installed at the same time." + elog "\"man emacs.eselect\" for details." +} + +pkg_postrm() { + elisp-site-regen + emacs-infodir-rebuild + eselect emacs update ifunset +} diff --git a/app-editors/emacs/emacs-22.2-r1.ebuild b/app-editors/emacs/emacs-22.2-r1.ebuild new file mode 100644 index 000000000000..c538063a9f53 --- /dev/null +++ b/app-editors/emacs/emacs-22.2-r1.ebuild @@ -0,0 +1,255 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-22.2-r1.ebuild,v 1.1 2008/04/11 14:00:08 ulm Exp $ + +inherit autotools 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="mirror://gnu/emacs/${P}.tar.gz" + +LICENSE="GPL-3 FDL-1.2 BSD" +SLOT="22" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" +IUSE="alsa gif gtk gzip-el hesiod jpeg kerberos motif png spell sound source tiff toolkit-scroll-bars X Xaw3d xpm" +RESTRICT="strip" + +RDEPEND="!=app-admin/eselect-emacs-1.2 + net-libs/liblockfile + hesiod? ( net-dns/hesiod ) + kerberos? ( virtual/krb5 ) + spell? ( || ( app-text/ispell app-text/aspell ) ) + alsa? ( media-libs/alsa-lib ) + X? ( + x11-libs/libXmu + x11-libs/libXt + x11-misc/xbitmaps + x11-misc/emacs-desktop + gif? ( media-libs/giflib ) + jpeg? ( media-libs/jpeg ) + tiff? ( media-libs/tiff ) + png? ( media-libs/libpng ) + xpm? ( x11-libs/libXpm ) + gtk? ( =x11-libs/gtk+-2* ) + !gtk? ( + Xaw3d? ( x11-libs/Xaw3d ) + !Xaw3d? ( + motif? ( virtual/motif ) + ) + ) + )" + +DEPEND="${RDEPEND} + alsa? ( dev-util/pkgconfig ) + X? ( gtk? ( dev-util/pkgconfig ) ) + gzip-el? ( app-arch/gzip )" + +# 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="${PV}" + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}/emacs-22.1-Xaw3d-headers.patch" + epatch "${FILESDIR}/emacs-22.1-freebsd-sparc.patch" + epatch "${FILESDIR}/emacs-22.1-vcdiff-tmp-race.patch" + epatch "${FILESDIR}/${P}-heimdal-gentoo.patch" + + 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 alsa; then + # ALSA is detected even if not requested by its USE flag. + # Suppress it by supplying pkg-config with a wrong library name. + sed -i -e "/ALSA_MODULES=/s/alsa/DiSaBlEaLsA/" configure.in \ + || die "unable to sed configure.in" + fi + 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 + + eautoreconf +} + +src_compile() { + export SANDBOX_ON=0 # for the unbelievers, see Bug #131505 + ALLOWED_FLAGS="" + strip-flags + #unset LDFLAGS + if use hppa; then # bug #193703 + replace-flags -O[2-9] -O + else + replace-flags -O[3-9] -O2 + fi + sed -i -e "s/-lungif/-lgif/g" configure* src/Makefile* || die + + 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)" + + # 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 + einfo "Configuring to build with GTK+ support" + 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 kerberos) $(use_with kerberos kerberos5)" + + econf \ + --program-suffix=-emacs-${SLOT} \ + --infodir=/usr/share/info/emacs-${SLOT} \ + --without-carbon \ + ${myconf} || die "econf emacs failed" + + 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 + + emake install DESTDIR="${D}" || die "make install failed" + + rm "${D}"/usr/bin/emacs-${FULL_VERSION}-emacs-${SLOT} \ + || die "removing duplicate emacs executable failed" + mv "${D}"/usr/bin/emacs-emacs-${SLOT} "${D}"/usr/bin/emacs-${SLOT} \ + || die "moving Emacs executable failed" + + # move info documentation to the correct place + einfo "Fixing info documentation ..." + for i in "${D}"/usr/share/info/emacs-${SLOT}/*; 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-${SLOT}.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 /usr/share/emacs/site-lisp + 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//' >10${PN}-${SLOT}-gentoo.el <<-EOF + + ;;; ${PN}-${SLOT} site-lisp configuration + + (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 10${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-${SLOT} 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 + rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty + echo +} + +pkg_postinst() { + [ -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 + [ -e "${f}" ] || touch "${f}" + done + + elisp-site-regen + emacs-infodir-rebuild + + if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then + # transition from pre-eselect revision + eselect emacs set emacs-${SLOT} + else + eselect emacs update ifunset + fi + + 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, which also redirects man and info pages." + elog "Therefore, several Emacs versions can be installed at the same time." + elog "\"man emacs.eselect\" for details." +} + +pkg_postrm() { + elisp-site-regen + emacs-infodir-rebuild + eselect emacs update ifunset +} diff --git a/app-editors/emacs/emacs-22.2.ebuild b/app-editors/emacs/emacs-22.2.ebuild deleted file mode 100644 index becd979d775e..000000000000 --- a/app-editors/emacs/emacs-22.2.ebuild +++ /dev/null @@ -1,254 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-editors/emacs/emacs-22.2.ebuild,v 1.4 2008/04/06 22:05:14 ulm Exp $ - -inherit autotools 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="mirror://gnu/emacs/${P}.tar.gz" - -LICENSE="GPL-3 FDL-1.2 BSD" -SLOT="22" -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" -IUSE="alsa gif gtk gzip-el hesiod jpeg kerberos motif png spell sound source tiff toolkit-scroll-bars X Xaw3d xpm" -RESTRICT="strip" - -RDEPEND="!=app-admin/eselect-emacs-1.2 - net-libs/liblockfile - hesiod? ( net-dns/hesiod ) - kerberos? ( virtual/krb5 ) - spell? ( || ( app-text/ispell app-text/aspell ) ) - alsa? ( media-libs/alsa-lib ) - X? ( - x11-libs/libXmu - x11-libs/libXt - x11-misc/xbitmaps - x11-misc/emacs-desktop - gif? ( media-libs/giflib ) - jpeg? ( media-libs/jpeg ) - tiff? ( media-libs/tiff ) - png? ( media-libs/libpng ) - xpm? ( x11-libs/libXpm ) - gtk? ( =x11-libs/gtk+-2* ) - !gtk? ( - Xaw3d? ( x11-libs/Xaw3d ) - !Xaw3d? ( - motif? ( virtual/motif ) - ) - ) - )" - -DEPEND="${RDEPEND} - alsa? ( dev-util/pkgconfig ) - X? ( gtk? ( dev-util/pkgconfig ) ) - gzip-el? ( app-arch/gzip )" - -# 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="${PV}" - -src_unpack() { - unpack ${A} - cd "${S}" - - epatch "${FILESDIR}/emacs-22.1-Xaw3d-headers.patch" - epatch "${FILESDIR}/emacs-22.1-freebsd-sparc.patch" - epatch "${FILESDIR}/${P}-heimdal-gentoo.patch" - - 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 alsa; then - # ALSA is detected even if not requested by its USE flag. - # Suppress it by supplying pkg-config with a wrong library name. - sed -i -e "/ALSA_MODULES=/s/alsa/DiSaBlEaLsA/" configure.in \ - || die "unable to sed configure.in" - fi - 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 - - eautoreconf -} - -src_compile() { - export SANDBOX_ON=0 # for the unbelievers, see Bug #131505 - ALLOWED_FLAGS="" - strip-flags - #unset LDFLAGS - if use hppa; then # bug #193703 - replace-flags -O[2-9] -O - else - replace-flags -O[3-9] -O2 - fi - sed -i -e "s/-lungif/-lgif/g" configure* src/Makefile* || die - - 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)" - - # 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 - einfo "Configuring to build with GTK+ support" - 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 kerberos) $(use_with kerberos kerberos5)" - - econf \ - --program-suffix=-emacs-${SLOT} \ - --infodir=/usr/share/info/emacs-${SLOT} \ - --without-carbon \ - ${myconf} || die "econf emacs failed" - - 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 - - emake install DESTDIR="${D}" || die "make install failed" - - rm "${D}"/usr/bin/emacs-${FULL_VERSION}-emacs-${SLOT} \ - || die "removing duplicate emacs executable failed" - mv "${D}"/usr/bin/emacs-emacs-${SLOT} "${D}"/usr/bin/emacs-${SLOT} \ - || die "moving Emacs executable failed" - - # move info documentation to the correct place - einfo "Fixing info documentation ..." - for i in "${D}"/usr/share/info/emacs-${SLOT}/*; 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-${SLOT}.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 /usr/share/emacs/site-lisp - 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//' >10${PN}-${SLOT}-gentoo.el <<-EOF - - ;;; ${PN}-${SLOT} site-lisp configuration - - (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 10${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-${SLOT} 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 - rmdir "${ROOT}"${infodir} 2>/dev/null # remove dir if it is empty - echo -} - -pkg_postinst() { - [ -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 - [ -e "${f}" ] || touch "${f}" - done - - elisp-site-regen - emacs-infodir-rebuild - - if [[ $(readlink "${ROOT}"/usr/bin/emacs) == emacs.emacs-${SLOT}* ]]; then - # transition from pre-eselect revision - eselect emacs set emacs-${SLOT} - else - eselect emacs update ifunset - fi - - 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, which also redirects man and info pages." - elog "Therefore, several Emacs versions can be installed at the same time." - elog "\"man emacs.eselect\" for details." -} - -pkg_postrm() { - elisp-site-regen - emacs-infodir-rebuild - eselect emacs update ifunset -} diff --git a/app-editors/emacs/files/emacs-22.1-vcdiff-tmp-race.patch b/app-editors/emacs/files/emacs-22.1-vcdiff-tmp-race.patch new file mode 100644 index 000000000000..7f59d6afeeac --- /dev/null +++ b/app-editors/emacs/files/emacs-22.1-vcdiff-tmp-race.patch @@ -0,0 +1,25 @@ +Steve Grubb of Red Hat discovered that vcdiff script as shipped with Emacs +(confirmed in versions 20.7 to 22.1.50) uses temporary files insecurely, +which makes it possible for local attacker to conduct a symlink attack and +make the victim overwrite arbitrary file. + +diff -ur emacs-21.4.orig/lib-src/vcdiff emacs-21.4/lib-src/vcdiff +--- emacs-21.4.orig/lib-src/vcdiff 2006-09-28 12:07:51.000000000 -0400 ++++ emacs-21.4/lib-src/vcdiff 2006-09-28 15:58:53.000000000 -0400 +@@ -86,14 +86,14 @@ + case $f in + s.* | */s.*) + if +- rev1=/tmp/geta$$ ++ rev1=`mktemp /tmp/geta.XXXXXXXX` + get -s -p -k $sid1 "$f" > $rev1 && + case $sid2 in + '') + workfile=`expr " /$f" : '.*/s.\(.*\)'` + ;; + *) +- rev2=/tmp/getb$$ ++ rev2=`mktemp /tmp/getb.XXXXXXXX` + get -s -p -k $sid2 "$f" > $rev2 + workfile=$rev2 + esac -- cgit v1.2.3-65-gdbad