# Maintainer: Natanael Copa # Contributor: Timo Teräs pkgname=emacs pkgver=29.1 pkgrel=2 pkgdesc="Extensible, customizable, self-documenting real-time display editor (common files)" arch="all" url="https://www.gnu.org/software/emacs/emacs.html" license="GPL-3.0-or-later" makedepends=" !libexecinfo-dev alsa-lib-dev autoconf automake fontconfig-dev gawk giflib-dev glib-dev gmp-dev gnutls-dev gtk+3.0-dev harfbuzz-dev jansson-dev libgccjit-dev libjpeg-turbo-dev libpng-dev librsvg-dev libwebp-dev libxaw-dev libxml2-dev libxpm-dev linux-headers ncurses-dev pango-dev sqlite-dev tiff-dev tree-sitter-dev " subpackages=" $pkgname-doc $pkgname-nox $pkgname-gtk3 $pkgname-gtk3-nativecomp:gtk3_nativecomp $pkgname-pgtk $pkgname-pgtk-nativecomp:pgtk_nativecomp $pkgname-x11 $pkgname-x11-nativecomp:x11_nativecomp " source="https://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz no-git-repo.patch " # secfixes: # 28.2-r6: # - CVE-2023-27986 # 28.2-r5: # - CVE-2023-27985 # 28.2-r3: # - CVE-2022-45939 prepare() { default_prepare ./autogen.sh rm etc/emacs.service # systemd unit mkdir -p nox mv ./* nox || true cp -a nox x11 cp -a nox x11-nativecomp cp -a nox gtk3 cp -a nox gtk3-nativecomp cp -a nox pgtk cp -a nox pgtk-nativecomp } _build_variant() { cd "$builddir/$1" shift CFLAGS="$CFLAGS -O2 -flto=auto" \ CXXFLAGS="$CXXFLAGS -O2 -flto=auto" \ ./configure \ --build=$CBUILD \ --host=$CHOST \ --prefix=/usr \ --sysconfdir=/etc \ --libexecdir=/usr/lib \ --localstatedir=/var \ --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_x11_nativecomp() { _build_variant x11-nativecomp \ --with-x-toolkit=athena \ --without-toolkit-scroll-bars \ --without-dbus \ --with-xft \ --with-jpeg=yes \ --with-tiff=yes \ --with-native-compilation=aot \ --without-compress-install } _build_gtk3() { _build_variant gtk3 \ --with-x-toolkit=gtk3 \ --with-xft \ --with-jpeg=yes \ --with-tiff=no } _build_gtk3_nativecomp() { _build_variant gtk3-nativecomp \ --with-x-toolkit=gtk3 \ --with-xft \ --with-jpeg=yes \ --with-tiff=no \ --with-native-compilation=aot } _build_pgtk() { _build_variant pgtk \ --with-x-toolkit=gtk3 \ --with-pgtk \ --with-xft \ --with-jpeg=yes \ --with-tiff=no } _build_pgtk_nativecomp() { _build_variant pgtk-nativecomp \ --with-x-toolkit=gtk3 \ --with-pgtk \ --with-xft \ --with-jpeg=yes \ --with-tiff=no \ --with-native-compilation=aot } _build_nox() { _build_variant nox \ --without-sound \ --without-x \ --without-file-notification } build() { _build_nox _build_x11 _build_x11_nativecomp _build_gtk3 _build_gtk3_nativecomp _build_pgtk _build_pgtk_nativecomp } package() { make DESTDIR="$pkgdir" install -C gtk3 cd "$pkgdir" # resolve conflict with ctags package mv usr/bin/ctags \ usr/bin/ctags.emacs mv usr/share/man/man1/ctags.1.gz \ usr/share/man/man1/ctags.emacs.1.gz # remove things that are per-subpackage and not common rm -r \ usr/bin/emacs \ usr/bin/emacs-$pkgver \ usr/lib/emacs/$pkgver/*/emacs*.pdmp \ usr/lib/systemd \ usr/share/emacs/$pkgver/lisp \ usr/share/emacs/$pkgver/site-lisp # fix perms on /var/games chmod 775 var/games chmod 775 var/games/emacs chmod 664 var/games/emacs/* chown -R root:games var/games # fix user/root permissions on usr/share files find usr/share/emacs/ -exec chown root:root {} \; find usr/lib -perm -g+s,g+x ! -type d -exec chmod g-s {} \; } _subpackage() { cd "$builddir/$1" make DESTDIR="$subpkgdir" install cd "$subpkgdir" # remove things that are in -common rm -rf \ usr/bin/ctags \ usr/bin/ebrowse \ usr/bin/etags \ usr/bin/emacsclient \ usr/include \ usr/lib/emacs/$pkgver/*/hexl \ usr/lib/emacs/$pkgver/*/movemail \ usr/lib/emacs/$pkgver/*/rcs2log \ usr/lib/emacs/$pkgver/*/update-game-score \ usr/lib/systemd \ usr/share/applications \ usr/share/emacs/$pkgver/etc \ usr/share/icons \ usr/share/info \ usr/share/man \ usr/share/metainfo \ var/games # fix user/root permissions on usr/share files find usr/share/emacs/ -exec chown root:root {} \; find usr/lib -perm -g+s,g+x ! -type d -exec chmod g-s {} \; } nox() { pkgdesc="$pkgdesc - non-graphical" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-gtk3-nativecomp !emacs-pgtk !emacs-pgtk-nativecomp !emacs-x11 !emacs-x11-nativecomp " _subpackage nox } x11() { pkgdesc="$pkgdesc - with X11" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-gtk3-nativecomp !emacs-pgtk !emacs-pgtk-nativecomp !emacs-nox !emacs-x11-nativecomp desktop-file-utils hicolor-icon-theme " _subpackage x11 } x11_nativecomp() { pkgdesc="$pkgdesc - with X11 and native compilation" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-gtk3-nativecomp !emacs-pgtk !emacs-pgtk-nativecomp !emacs-nox !emacs-x11 desktop-file-utils hicolor-icon-theme " _subpackage x11-nativecomp } gtk3() { pkgdesc="$pkgdesc - with GTK3" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3-nativecomp !emacs-pgtk !emacs-pgtk-nativecomp !emacs-nox !emacs-x11 !emacs-x11-nativecomp desktop-file-utils hicolor-icon-theme " _subpackage gtk3 } gtk3_nativecomp() { pkgdesc="$pkgdesc - with GTK3 and native compilation" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-pgtk !emacs-pgtk-nativecomp !emacs-nox !emacs-x11 !emacs-x11-nativecomp desktop-file-utils hicolor-icon-theme " _subpackage gtk3-nativecomp } pgtk() { pkgdesc="$pkgdesc - with pure GTK" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-gtk3-nativecomp !emacs-pgtk-nativecomp !emacs-nox !emacs-x11 !emacs-x11-nativecomp desktop-file-utils hicolor-icon-theme " _subpackage pgtk } pgtk_nativecomp() { pkgdesc="$pkgdesc - with pure GTK and native compilation" depends=" $pkgname=$pkgver-r$pkgrel !emacs-gtk3 !emacs-gtk3-nativecomp !emacs-pgtk !emacs-nox !emacs-x11 !emacs-x11-nativecomp desktop-file-utils hicolor-icon-theme " _subpackage pgtk-nativecomp } sha512sums=" de10f2af462682019af680e6a82fd33feb05ce6d995bedf5756264fa06e29d90cab02c5884b0aeade1c5ab39cf064e0fb6ff9f78d9eedbd162f0a985945b9ec2 emacs-29.1.tar.xz 5a2d1d10d66fd335b16d9f2d6d1e45e093067db87f8ef2d14a8c921cc94b3e226310c7cc691d19eb91eaf16de9ae4f20ff8be3596a4906b0514fa5f098328d97 no-git-repo.patch "