Skip to content

Commit

Permalink
app-editors/emacs: Version bump.
Browse files Browse the repository at this point in the history
Package-Manager: Portage-2.3.8, Repoman-2.3.3
  • Loading branch information
ulm committed Sep 12, 2017
1 parent a5ea015 commit bb2f95b
Show file tree
Hide file tree
Showing 2 changed files with 357 additions and 0 deletions.
1 change: 1 addition & 0 deletions app-editors/emacs/Manifest
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ DIST emacs-24.5.tar.xz 39759804 SHA256 dd47d71dd2a526cf6b47cb49af793ec2e26af69a0
DIST emacs-25.1.tar.xz 42498944 SHA256 19f2798ee3bc26c95dca3303e7ab141e7ad65d6ea2b6945eeba4dbea7df48f33 SHA512 67442b9027869c44430e1d4c3e92e74601e667c9aef7e3da16f20a562b5e3fa8c64efdd4b4055919550523093d32eac73c094b644f6573fed41b4e0938668922 WHIRLPOOL 77cf4e126580634ec5aa2d2252a5d3334b6880a2abc32c54543b8df1a7dc9687bf41c54994044be7517b397bcfc2fc1094286ff4c05a7d6f64a8ef8376a4abfb
DIST emacs-25.2-patches-1.tar.xz 2104 SHA256 ea0ba1cf1fb06eb76907cc034acb440af1147bdc0fa849ba8185d016fe58e4ff SHA512 45c666ba6332c8fb60a925c6af9c0da113f46055159d931feddb99ce19b2a03e0101b3a4d671fe699cd5f33fd58a25791bfb8b16e20f463e5d304902ee24854a WHIRLPOOL 97c49266b7be18f028ae939dbdcfd3933637770506f108fcd9d08fa33c63f376fbb6fe520e42ec28adb6d4527c298173bffe596af774748946a3d8a130aa90f7
DIST emacs-25.2.tar.xz 46900336 SHA256 59b55194c9979987c5e9f1a1a4ab5406714e80ffcfd415cc6b9222413bc073fa SHA512 2485d5ccd58ecc953cbd2458bdfa45e3c9a6ddfdb1b93c72b957a0da2460d4e42092905e039e8f5bac337ea1ecb9ac404b28702a363323ee5813b30032ebf00c WHIRLPOOL 98de8ad164cf65b21e5fbfdbd7fcee84da32e3de66715d2f03f3c4d03cfa68d49aff2124e5da331282bb5fd9c2b2fbac4ddfd0985e907d2354994c783dddd83f
DIST emacs-25.3.tar.xz 42854740 SHA256 253ac5e7075e594549b83fd9ec116a9dc37294d415e2f21f8ee109829307c00b SHA512 1cce656451b6ca8502ebb229e88bd3ef48b7f9444a10eeac4ea43bd5491b2efacd641dfa35227a33362c3866493d3449cf1df81606563eef44bba0ed668e457f WHIRLPOOL 603ec6b203523a22556e48616b4a5ab227c32d3653ac4b713e6cb0357e3556964bc92a1818b417bbf9037cca7dac55935da9458dc3d29b3bb24d66157e74c8df
356 changes: 356 additions & 0 deletions app-editors/emacs/emacs-25.3.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,356 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit elisp-common flag-o-matic multilib readme.gentoo-r1

DESCRIPTION="The extensible, customizable, self-documenting real-time display editor"
HOMEPAGE="https://www.gnu.org/software/emacs/"
SRC_URI="mirror://gnu/emacs/${P}.tar.xz"

LICENSE="GPL-3+ FDL-1.3+ BSD HPND MIT W3C unicode PSF-2"
SLOT="25"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
IUSE="acl alsa aqua athena cairo dbus dynamic-loading games gconf gfile gif gpm gsettings gtk +gtk3 gzip-el hesiod imagemagick +inotify jpeg kerberos libxml2 livecd m17n-lib motif pax_kernel png selinux sound source ssl svg tiff toolkit-scroll-bars wide-int X Xaw3d xft +xpm xwidgets zlib"
REQUIRED_USE="?? ( aqua X )"

RDEPEND="sys-libs/ncurses:0=
>=app-eselect/eselect-emacs-1.16
>=app-emacs/emacs-common-gentoo-1.5[games?,X?]
net-libs/liblockfile
acl? ( virtual/acl )
alsa? ( media-libs/alsa-lib )
dbus? ( sys-apps/dbus )
gpm? ( sys-libs/gpm )
hesiod? ( net-dns/hesiod )
!inotify? ( gfile? ( >=dev-libs/glib-2.28.6 ) )
kerberos? ( virtual/krb5 )
libxml2? ( >=dev-libs/libxml2-2.2.0 )
selinux? ( sys-libs/libselinux )
ssl? ( net-libs/gnutls:0= )
zlib? ( sys-libs/zlib )
X? (
x11-libs/libXmu
x11-libs/libXt
x11-misc/xbitmaps
gconf? ( >=gnome-base/gconf-2.26.2 )
gsettings? ( >=dev-libs/glib-2.28.6 )
gif? ( media-libs/giflib:0= )
jpeg? ( virtual/jpeg:0= )
png? ( >=media-libs/libpng-1.4:0= )
svg? ( >=gnome-base/librsvg-2.0 )
tiff? ( media-libs/tiff:0 )
xpm? ( x11-libs/libXpm )
imagemagick? ( >=media-gfx/imagemagick-6.6.2:0= )
xft? (
media-libs/fontconfig
media-libs/freetype
x11-libs/libXft
cairo? ( >=x11-libs/cairo-1.12.18 )
m17n-lib? (
>=dev-libs/libotf-0.9.4
>=dev-libs/m17n-lib-1.5.1
)
)
gtk? (
xwidgets? (
x11-libs/gtk+:3
net-libs/webkit-gtk:3=
)
!xwidgets? (
gtk3? ( x11-libs/gtk+:3 )
!gtk3? ( x11-libs/gtk+:2 )
)
)
!gtk? (
motif? ( >=x11-libs/motif-2.3:0 )
!motif? (
Xaw3d? ( x11-libs/libXaw3d )
!Xaw3d? ( athena? ( x11-libs/libXaw ) )
)
)
)"

DEPEND="${RDEPEND}
virtual/pkgconfig
gzip-el? ( app-arch/gzip )
pax_kernel? ( sys-apps/attr )"

RDEPEND="${RDEPEND}
!<app-editors/emacs-vcs-${PV}"

EMACS_SUFFIX="${PN/emacs/emacs-${SLOT}}"
SITEFILE="20${PN}-${SLOT}-gentoo.el"
# 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%%_*}"
S="${WORKDIR}/emacs-${FULL_VERSION}"

src_prepare() {
eapply_user

# Fix filename reference in redirected man page
sed -i -e "/^\\.so/s/etags/&-${EMACS_SUFFIX}/" doc/man/ctags.1 \
|| die "unable to sed ctags.1"

#AT_M4DIR=m4 eautoreconf
#touch src/stamp-h.in || die
}

src_configure() {
strip-flags
filter-flags -pie #526948

if use sh; then
replace-flags "-O[1-9]" -O0 #262359
elif use ia64; then
replace-flags "-O[2-9]" -O1 #325373
else
replace-flags "-O[3-9]" -O2
fi

local myconf

if use alsa; then
use sound || ewarn \
"USE flag \"alsa\" overrides \"-sound\"; enabling sound support."
myconf+=" --with-sound=alsa"
else
myconf+=" --with-sound=$(usex sound oss)"
fi

if use X; then
myconf+=" --with-x --without-ns"
myconf+=" $(use_with gconf)"
myconf+=" $(use_with gsettings)"
myconf+=" $(use_with toolkit-scroll-bars)"
myconf+=" $(use_with gif)"
myconf+=" $(use_with jpeg)"
myconf+=" $(use_with png)"
myconf+=" $(use_with svg rsvg)"
myconf+=" $(use_with tiff)"
myconf+=" $(use_with xpm)"
myconf+=" $(use_with imagemagick)"

if use xft; then
myconf+=" --with-xft"
myconf+=" $(use_with cairo)"
myconf+=" $(use_with m17n-lib libotf)"
myconf+=" $(use_with m17n-lib m17n-flt)"
else
myconf+=" --without-xft"
myconf+=" --without-cairo"
myconf+=" --without-libotf --without-m17n-flt"
use cairo && ewarn \
"USE flag \"cairo\" has no effect if \"xft\" is not set."
use m17n-lib && ewarn \
"USE flag \"m17n-lib\" has no effect if \"xft\" is not set."
fi

local f line
if use gtk; then
einfo "Configuring to build with GIMP Toolkit (GTK+)"
while read line; do ewarn "${line}"; done <<-EOF
Your version of GTK+ will have problems with closing open
displays. This is no problem if you just use one display, but
if you use more than one and close one of them Emacs may crash.
See <https://bugzilla.gnome.org/show_bug.cgi?id=85715>.
If you intend to use more than one display, then it is strongly
recommended that you compile Emacs with the Athena/Lucid or the
Motif toolkit instead.
EOF
if use xwidgets; then
myconf+=" --with-x-toolkit=gtk3 --with-xwidgets"
else
myconf+=" --with-x-toolkit=$(usex gtk3 gtk3 gtk2)"
myconf+=" --without-xwidgets"
fi
for f in motif Xaw3d athena; do
use ${f} && ewarn \
"USE flag \"${f}\" has no effect if \"gtk\" is set."
done
elif use motif; then
einfo "Configuring to build with Motif toolkit"
myconf+=" --with-x-toolkit=motif"
for f in Xaw3d athena; do
use ${f} && ewarn \
"USE flag \"${f}\" has no effect if \"motif\" is set."
done
elif use athena || use Xaw3d; then
einfo "Configuring to build with Athena/Lucid toolkit"
myconf+=" --with-x-toolkit=lucid $(use_with Xaw3d xaw3d)"
else
einfo "Configuring to build with no toolkit"
myconf+=" --with-x-toolkit=no"
fi
! use gtk && use xwidgets && ewarn \
"USE flag \"xwidgets\" has no effect if \"gtk\" is not set."
elif use aqua; then
einfo "Configuring to build with Nextstep (Cocoa) support"
myconf+=" --with-ns --disable-ns-self-contained"
myconf+=" --without-x"
else
myconf+=" --without-x --without-ns"
fi

# Save version information in the Emacs binary. It will be available
# in variable "system-configuration-options".
myconf+=" GENTOO_PACKAGE=${CATEGORY}/${PF}"

econf \
--program-suffix="-${EMACS_SUFFIX}" \
--infodir="${EPREFIX}"/usr/share/info/${EMACS_SUFFIX} \
--localstatedir="${EPREFIX}"/var \
--enable-locallisppath="${EPREFIX}/etc/emacs:${EPREFIX}${SITELISP}" \
--with-gameuser=":gamestat" \
--without-compress-install \
--with-file-notification=$(usev inotify || usev gfile || echo no) \
$(use_enable acl) \
$(use_with dbus) \
$(use_with dynamic-loading modules) \
$(use_with gpm) \
$(use_with hesiod) \
$(use_with kerberos) $(use_with kerberos kerberos5) \
$(use_with libxml2 xml2) \
$(use_with selinux) \
$(use_with ssl gnutls) \
$(use_with wide-int) \
$(use_with zlib) \
${myconf}
}

src_compile() {
export SANDBOX_ON=0 # for the unbelievers, see Bug #131505
emake
}

src_install () {
emake DESTDIR="${D}" NO_BIN_LINK=t install

mv "${ED}"/usr/bin/{emacs-${FULL_VERSION}-,}${EMACS_SUFFIX} \
|| die "moving emacs executable failed"
mv "${ED}"/usr/share/man/man1/{emacs-,}${EMACS_SUFFIX}.1 \
|| die "moving emacs man page failed"

# move info dir to avoid collisions with the dir file generated by portage
mv "${ED}"/usr/share/info/${EMACS_SUFFIX}/dir{,.orig} \
|| die "moving info dir failed"
touch "${ED}"/usr/share/info/${EMACS_SUFFIX}/.keepinfodir
docompress -x /usr/share/info/${EMACS_SUFFIX}/dir.orig

# avoid collision between slots, see bug #169033 e.g.
rm "${ED}"/usr/share/emacs/site-lisp/subdirs.el
rm -rf "${ED}"/usr/share/{appdata,applications,icons}
rm -rf "${ED}"/var

# remove unused <version>/site-lisp dir
rm -rf "${ED}"/usr/share/emacs/${FULL_VERSION}/site-lisp

# remove COPYING file (except for etc/COPYING used by describe-copying)
rm "${ED}"/usr/share/emacs/${FULL_VERSION}/lisp/COPYING

if use gzip-el; then
# compress .el files when a corresponding .elc exists
find "${ED}"/usr/share/emacs/${FULL_VERSION}/lisp -type f \
-name "*.elc" -print | sed 's/\.elc$/.el/' | xargs gzip -9n
assert "gzip .el failed"
fi

local cdir
if use source; then
cdir="/usr/share/emacs/${FULL_VERSION}/src"
insinto "${cdir}"
# This is not meant to install all the source -- just the
# C source you might find via find-function
doins src/*.{c,h,m}
elif has installsources ${FEATURES}; then
cdir="/usr/src/debug/${CATEGORY}/${PF}/${S#"${WORKDIR}/"}/src"
fi

sed -e "${cdir:+#}/^Y/d" -e "s/^[XY]//" >"${T}/${SITEFILE}" <<-EOF
X
;;; ${PN}-${SLOT} site-lisp configuration
X
(when (string-match "\\\\\`${FULL_VERSION//./\\\\.}\\\\>" emacs-version)
Y (setq find-function-C-source-directory
Y "${EPREFIX}${cdir}")
X (let ((path (getenv "INFOPATH"))
X (dir "${EPREFIX}/usr/share/info/${EMACS_SUFFIX}")
X (re "\\\\\`${EPREFIX}/usr/share/info\\\\>"))
X (and path
X ;; move Emacs Info dir before anything else in /usr/share/info
X (let* ((p (cons nil (split-string path ":" t))) (q p))
X (while (and (cdr q) (not (string-match re (cadr q))))
X (setq q (cdr q)))
X (setcdr q (cons dir (delete dir (cdr q))))
X (setq Info-directory-list (prune-directory-list (cdr p)))))))
EOF
elisp-site-file-install "${T}/${SITEFILE}" || die

dodoc README BUGS CONTRIBUTE

if use aqua; then
dodir /Applications/Gentoo
rm -rf "${ED}"/Applications/Gentoo/Emacs${EMACS_SUFFIX#emacs}.app
mv nextstep/Emacs.app \
"${ED}"/Applications/Gentoo/Emacs${EMACS_SUFFIX#emacs}.app || die
fi

DOC_CONTENTS="You can set the version to be started by /usr/bin/emacs
through the Emacs eselect module, which also redirects man and info
pages. Therefore, several Emacs versions can be installed at the
same time. \"man emacs.eselect\" for details.
\\n\\nIf you upgrade from Emacs version 24.2 or earlier, then it is
strongly recommended that you use app-admin/emacs-updater to rebuild
all byte-compiled elisp files of the installed Emacs packages."
use X && DOC_CONTENTS+="\\n\\nYou need to install some fonts for Emacs.
Installing media-fonts/font-adobe-{75,100}dpi on the X server's
machine would satisfy basic Emacs requirements under X11.
See also https://wiki.gentoo.org/wiki/Xft_support_for_GNU_Emacs
for how to enable anti-aliased fonts."
use aqua && DOC_CONTENTS+="\\n\\nEmacs${EMACS_SUFFIX#emacs}.app is in
\"${EPREFIX}/Applications/Gentoo\". You may want to copy or symlink
it into /Applications by yourself."
readme.gentoo_create_doc
}

pkg_preinst() {
# move Info dir file to correct name
local infodir=/usr/share/info/${EMACS_SUFFIX} f
if [[ -f ${ED}${infodir}/dir.orig ]]; then
mv "${ED}"${infodir}/dir{.orig,} || die "moving info dir failed"
elif [[ -d "${ED}"${infodir} ]]; then
# this should not happen in EAPI 4
ewarn "Regenerating Info directory index in ${infodir} ..."
rm -f "${ED}"${infodir}/dir{,.*}
for f in "${ED}"${infodir}/*; do
if [[ ${f##*/} != *-[0-9]* && -e ${f} ]]; then
install-info --info-dir="${ED}"${infodir} "${f}" \
|| die "install-info failed"
fi
done
fi
}

pkg_postinst() {
elisp-site-regen
readme.gentoo_print_elog

if use livecd; then
# force an update of the emacs symlink for the livecd/dvd,
# because some microemacs packages set it with USE=livecd
eselect emacs update
elif [[ $(readlink "${EROOT}"/usr/bin/emacs) = ${EMACS_SUFFIX} ]]; then
# refresh symlinks in case any installed files have changed
eselect emacs set ${EMACS_SUFFIX}
else
eselect emacs update ifunset
fi
}

pkg_postrm() {
elisp-site-regen
eselect emacs update ifunset
}

0 comments on commit bb2f95b

Please sign in to comment.