# Maintainer: stef # Contributor: Timo Teräs pkgname=emacs pkgver=27.1 pkgrel=2 pkgdesc="The extensible, customizable, self-documenting real-time display editor" arch="all" depends="emacs-nox" url="https://www.gnu.org/software/emacs/emacs.html" license="GPL-3.0-or-later" makedepends="autoconf automake linux-headers gawk ncurses-dev ncurses-libs gnutls-dev gmp-dev jansson-dev harfbuzz-dev" subpackages="$pkgname-doc $pkgname-nox" source="https://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz no-git-repo.patch" case $CARCH in mips64|s390x) # limited by librsvg (rust) _docdir="nox" ;; *) makedepends="$makedepends glib-dev fontconfig-dev libpng-dev librsvg-dev giflib-dev libxpm-dev gtk+2.0-dev gtk+3.0-dev alsa-lib-dev libxml2-dev pango-dev tiff-dev libjpeg-turbo-dev libxaw-dev" subpackages="$subpackages $pkgname-x11 $pkgname-gtk2 $pkgname-gtk3" _docdir="gtk2" ;; esac prepare() { cd "$builddir/$1" default_prepare ./autogen.sh } _build_variant() { cd "$builddir/$1" shift CFLAGS=-fno-pie \ LDFLAGS=-no-pie \ ./configure \ --build=$CBUILD \ --host=$CHOST \ --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/lib \ --localstatedir=/var \ --without-makeinfo \ --with-gameuser=:games \ --with-gpm \ --with-harfbuzz \ --with-json \ "${@}" make } _build_x11() { _build_variant x11 \ --with-x-toolkit=athena \ --without-toolkit-scroll-bars \ --without-dbus \ --with-xft \ --with-jpeg=yes \ --with-tiff=yes } _build_gtk2() { _build_variant gtk2 \ --with-x-toolkit=gtk2 \ --with-xft \ --with-jpeg=yes \ --with-tiff=no } _build_gtk3() { _build_variant gtk3 \ --with-x-toolkit=gtk3 \ --with-xft \ --with-jpeg=yes \ --with-tiff=no } _build_nox() { _build_variant nox \ --without-sound \ --without-x \ --without-file-notification } build() { mkdir -p nox mv ./* nox || true case "$CARCH" in mips64|s390x) # limited by librsvg (rust) _build_nox ;; *) cp -a nox x11 cp -a nox gtk2 cp -a nox gtk3 _build_nox _build_x11 _build_gtk2 _build_gtk3 ;; esac } package() { mkdir -p "$pkgdir" } doc() { depends="" mkdir -p "$subpkgdir" cd "$builddir"/"$_docdir" make DESTDIR="$subpkgdir" install # remove conflict with ctags package mv "$subpkgdir"/usr/share/man/man1/ctags.1.gz "$subpkgdir"/usr/share/man/man1/ctags.emacs.1.gz # only keep info and man directories, all other is in the specific package rm -rf "${subpkgdir:?}"/usr/bin \ "$subpkgdir"/usr/lib \ "$subpkgdir"/usr/share/appdata \ "$subpkgdir"/usr/share/applications \ "$subpkgdir"/usr/share/emacs \ "$subpkgdir"/usr/share/icons \ "${subpkgdir:?}"/var \ "$subpkgdir"/usr/lib/systemd } _subpackage() { cd "$builddir/$1" make DESTDIR="$subpkgdir" install # remove conflict with ctags package mv "$subpkgdir"/usr/bin/ctags "$subpkgdir"/usr/bin/ctags.emacs rm -rf "$subpkgdir"/usr/share/info \ "$subpkgdir"/usr/share/man # fix user/root permissions on usr/share files find "$subpkgdir"/usr/share/emacs/ -exec chown root:root {} \; find "$subpkgdir"/usr/lib -perm -g+s,g+x ! -type d -exec chmod g-s {} \; # fix perms on /var/games chmod 775 "$subpkgdir"/var/games chmod 775 "$subpkgdir"/var/games/emacs chmod 664 "$subpkgdir"/var/games/emacs/* chown -R root:games "$subpkgdir"/var/games } nox() { pkgdesc="$pkgdesc - without X11" depends="!emacs-x11 !emacs-gtk2 !emacs-gtk3" _subpackage nox } x11() { pkgdesc="$pkgdesc - with X11" depends="!emacs-nox !emacs-gtk2 !emacs-gtk3 hicolor-icon-theme desktop-file-utils" _subpackage x11 } gtk2() { pkgdesc="$pkgdesc - with GTK2" depends="!emacs-nox !emacs-x11 !emacs-gtk3 hicolor-icon-theme desktop-file-utils" _subpackage gtk2 } gtk3() { pkgdesc="$pkgdesc - with GTK3" depends="!emacs-nox !emacs-x11 !emacs-gtk2 hicolor-icon-theme desktop-file-utils" _subpackage gtk3 } sha512sums="dfb26531d2c19cf9fb56505f03d799654b45e5f9528e777900e8280ed2c1d21e04c52f510528e31e015977c471ae63164cedee6174b7439ebcf479a21fc18064 emacs-27.1.tar.xz 5a2d1d10d66fd335b16d9f2d6d1e45e093067db87f8ef2d14a8c921cc94b3e226310c7cc691d19eb91eaf16de9ae4f20ff8be3596a4906b0514fa5f098328d97 no-git-repo.patch"