aboutsummaryrefslogtreecommitdiffstats
path: root/community/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'community/emacs')
-rw-r--r--community/emacs/APKBUILD153
-rw-r--r--community/emacs/gamedir.patch11
-rw-r--r--community/emacs/musl.patch87
-rw-r--r--community/emacs/noaslr-dump.patch20
4 files changed, 271 insertions, 0 deletions
diff --git a/community/emacs/APKBUILD b/community/emacs/APKBUILD
new file mode 100644
index 00000000000..b2efeb83800
--- /dev/null
+++ b/community/emacs/APKBUILD
@@ -0,0 +1,153 @@
+# Maintainer: stef <l0ls0fo2i@ctrlc.hu>
+# Contributor: Timo Teräs <timo.teras@iki.fi>
+
+pkgname=emacs
+pkgver=25.1
+pkgrel=0
+pkgdesc="The extensible, customizable, self-documenting real-time display editor"
+arch="all"
+depends="emacs-nox"
+url="http://www.gnu.org/software/emacs/emacs.html"
+license="GPL3"
+makedepends="autoconf automake linux-headers paxmark gawk
+ librsvg-dev giflib-dev libxpm-dev gtk+2.0-dev gconf-dev alsa-lib-dev
+ imagemagick-dev glib-dev fontconfig-dev libpng-dev
+ libxml2-dev pango-dev tiff-dev libjpeg-turbo-dev ncurses-dev
+ ncurses-libs gnutls-dev libxaw-dev"
+subpackages="$pkgname-doc $pkgname-nox $pkgname-x11 $pkgname-gtk2"
+source="ftp://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz
+ gamedir.patch
+ noaslr-dump.patch
+ musl.patch"
+
+prepare() {
+ cd "$builddir/$1"
+ default_prepare || return 1
+ ./autogen.sh || return 1
+}
+
+builddir="$srcdir/emacs-$pkgver"
+_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 \
+ "${@}" \
+ || return 1
+ 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_nox() {
+ _build_variant nox \
+ --without-sound \
+ --without-x \
+ --without-file-notification
+}
+
+build() {
+ cd "$builddir"
+ mkdir -p nox
+ mv * nox
+ cp -a nox gtk2
+ cp -a nox x11
+ _build_x11 || return 1
+ _build_nox || return 1
+ _build_gtk2
+}
+
+package() {
+ mkdir -p "$pkgdir"
+}
+
+doc() {
+ mkdir -p "$subpkgdir"
+ cd "$builddir/gtk2"
+ 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
+}
+
+_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"
+ _subpackage nox
+}
+
+x11() {
+ pkgdesc="$pkgdesc - with X11"
+ depends="!emacs-nox !emacs-gtk2 hicolor-icon-theme desktop-file-utils"
+ _subpackage x11
+}
+
+gtk2() {
+ pkgdesc="$pkgdesc - with GTK2"
+ depends="!emacs-nox !emacs-x11 hicolor-icon-theme desktop-file-utils"
+ _subpackage gtk2
+}
+
+md5sums="4f3d42fb22823a659e16bfa89078a74c emacs-25.1.tar.xz
+c95bf3abad87ec6c74488ff1b7062dfa gamedir.patch
+96eb456995fe4dfa7530bee8b54f1bd3 noaslr-dump.patch
+eb965a14fc23c23d67e6210386147c67 musl.patch"
+sha256sums="19f2798ee3bc26c95dca3303e7ab141e7ad65d6ea2b6945eeba4dbea7df48f33 emacs-25.1.tar.xz
+e8e43127bfed67ce9e4ba1fcb9bf2f173771a667965f0bf75a26b5e43e3d602b gamedir.patch
+f66b53fca3cd41b36943484f50e37a913be1f126a819b41b4d1b9a0b709c5979 noaslr-dump.patch
+c53b38298af75b327e6bfcfc93f1de7815ad361d08ace03a68c5adbf63127297 musl.patch"
+sha512sums="67442b9027869c44430e1d4c3e92e74601e667c9aef7e3da16f20a562b5e3fa8c64efdd4b4055919550523093d32eac73c094b644f6573fed41b4e0938668922 emacs-25.1.tar.xz
+8898f309aeaf274366849bd5c56c8e2a1be94dfee2f01b20f1700bf26203f49b9600237e5090fc3d8eaad3ea246f803ffd493d0c04cb3512084a4e3bf58f8f5e gamedir.patch
+d3a30a9bf7ef7349806a75ee919d6683a8000eb70f4c3040d149bd8911dc95b931a05c7cbf9f5b93176940ad87520dbb2ddef3b4136b0d5b140de0cdbc4b7a8f noaslr-dump.patch
+4ec078f970c2d0ad9b082a613e7c7e64e40f37eaee96e67ab9b2e467595c74533f94ced74f6753e393a9c0ead88fad75adcfdd31be4295f5763292a6dd846fe8 musl.patch"
diff --git a/community/emacs/gamedir.patch b/community/emacs/gamedir.patch
new file mode 100644
index 00000000000..c1bcbadd632
--- /dev/null
+++ b/community/emacs/gamedir.patch
@@ -0,0 +1,11 @@
+diff -urw emacs-25.1/lib-src/Makefile.in emacs-25.1-gamedir/lib-src/Makefile.in
+--- emacs-25.1/lib-src/Makefile.in 2016-06-29 09:49:18.000000000 +0000
++++ emacs-25.1-gamedir/lib-src/Makefile.in 2016-10-24 15:37:46.718699816 +0000
+@@ -414,7 +414,6 @@
+
+ update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(NTLIB) $(config_h)
+ $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} \
+- -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
+ $< $(NTLIB) $(LOADLIBES) -o $@
+
+ emacsclient.res: ../nt/emacsclient.rc $(NTINC)/../icons/emacs.ico
diff --git a/community/emacs/musl.patch b/community/emacs/musl.patch
new file mode 100644
index 00000000000..7841d04e769
--- /dev/null
+++ b/community/emacs/musl.patch
@@ -0,0 +1,87 @@
+--- emacs-25.1/configure.ac 2016-07-25 07:08:36.000000000 +0000
++++ emacs-25.1-musl/configure.ac 2016-10-24 15:38:00.518625055 +0000
+@@ -2133,7 +2133,7 @@
+
+ system_malloc=$emacs_cv_sanitize_address
+
+-hybrid_malloc=
++hybrid_malloc=yes
+
+ case "$opsys" in
+ ## darwin ld insists on the use of malloc routines in the System framework.
+--- emacs-25.1/src/Makefile.in 2016-06-29 09:49:20.000000000 +0000
++++ emacs-25.1-musl/src/Makefile.in 2016-10-24 15:38:00.518625055 +0000
+@@ -398,6 +398,7 @@
+ doprnt.o intervals.o textprop.o composite.o xml.o $(NOTIFY_OBJ) \
+ $(XWIDGETS_OBJ) \
+ profiler.o decompress.o \
++ sheap.o \
+ $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \
+ $(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ)
+ obj = $(base_obj) $(NS_OBJC_OBJ)
+--- emacs-25.1/src/gmalloc.c 2016-06-29 09:49:22.000000000 +0000
++++ emacs-25.1-musl/src/gmalloc.c 2016-10-24 15:38:00.518625055 +0000
+@@ -70,7 +70,7 @@
+ #define aligned_alloc galigned_alloc
+ #define free gfree
+
+-#ifdef CYGWIN
++//#ifdef CYGWIN
+ extern void *bss_sbrk (ptrdiff_t size);
+ extern int bss_sbrk_did_unexec;
+ extern char bss_sbrk_buffer[];
+@@ -78,7 +78,7 @@
+ #define DUMPED bss_sbrk_did_unexec
+ #define ALLOCATED_BEFORE_DUMPING(P) \
+ ((P) < bss_sbrk_buffer_end && (P) >= (void *) bss_sbrk_buffer)
+-#endif
++//#endif
+
+ #ifdef __cplusplus
+ extern "C"
+@@ -1523,16 +1523,19 @@
+ __default_morecore (ptrdiff_t increment)
+ {
+ void *result;
+-#if defined (CYGWIN)
++//#if defined (CYGWIN)
+ if (!DUMPED)
+ {
+ return bss_sbrk (increment);
+ }
+-#endif
++//#endif
++#if 0
+ result = (void *) __sbrk (increment);
+ if (result == (void *) -1)
+ return NULL;
+ return result;
++#endif
++ return NULL;
+ }
+ /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
+
+--- emacs-25.1/src/print.c 2016-06-29 09:49:22.000000000 +0000
++++ emacs-25.1-musl/src/print.c 2016-10-24 15:38:00.518625055 +0000
+@@ -775,7 +775,7 @@
+ print_output_debug_flag = x;
+ }
+
+-#if defined (GNU_LINUX)
++#if defined (GNU_LINUX) && defined (__GLIBC__)
+
+ /* This functionality is not vitally important in general, so we rely on
+ non-portable ability to use stderr as lvalue. */
+--- emacs-25.1/src/unexelf.c 2016-06-29 09:49:23.000000000 +0000
++++ emacs-25.1-musl/src/unexelf.c 2016-10-24 15:38:00.518625055 +0000
+@@ -227,6 +227,9 @@
+ off_t new_file_size;
+ void *new_break;
+
++ extern int bss_sbrk_did_unexec;
++ bss_sbrk_did_unexec = 1;
++
+ /* Pointers to the base of the image of the two files. */
+ caddr_t old_base, new_base;
+
+
diff --git a/community/emacs/noaslr-dump.patch b/community/emacs/noaslr-dump.patch
new file mode 100644
index 00000000000..b7dfcb5e785
--- /dev/null
+++ b/community/emacs/noaslr-dump.patch
@@ -0,0 +1,20 @@
+diff -urw emacs-25.1/src/Makefile.in emacs-25.1-noaslr-dump/src/Makefile.in
+--- emacs-25.1/src/Makefile.in 2016-06-29 09:49:20.000000000 +0000
++++ emacs-25.1-noaslr-dump/src/Makefile.in 2016-10-24 15:38:10.365238378 +0000
+@@ -532,6 +532,7 @@
+ ifeq ($(CANNOT_DUMP),yes)
+ ln -f temacs$(EXEEXT) $@
+ else
++ paxmark -r temacs$(EXEEXT)
+ LC_ALL=C $(RUN_TEMACS) -batch -l loadup dump
+ ifneq ($(PAXCTL_dumped),)
+ $(PAXCTL_dumped) $@
+@@ -737,6 +738,7 @@
+ ifeq ($(CANNOT_DUMP),yes)
+ ln -f temacs$(EXEEXT) $@
+ else
++ paxmark -r temacs$(EXEEXT)
+ $(RUN_TEMACS) --batch --load loadup bootstrap
+ ifneq ($(PAXCTL_dumped),)
+ $(PAXCTL_dumped) emacs$(EXEEXT)
+Only in emacs-25.1-noaslr-dump/src: Makefile.in.orig