summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-support/emacs
diff options
context:
space:
mode:
authorTudor Florea <tudor.florea@enea.com>2015-10-08 22:51:41 +0200
committerTudor Florea <tudor.florea@enea.com>2015-10-08 22:51:41 +0200
commit1219bf8a90a7bf8cd3a5363551ef635d51e8fc8e (patch)
treea21a5fc103bb3bd65ecd85ed22be5228fc54e447 /meta-oe/recipes-support/emacs
downloadmeta-openembedded-1219bf8a90a7bf8cd3a5363551ef635d51e8fc8e.tar.gz
initial commit for Enea Linux 5.0 arm
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Diffstat (limited to 'meta-oe/recipes-support/emacs')
-rw-r--r--meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch16
-rw-r--r--meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch104
-rw-r--r--meta-oe/recipes-support/emacs/emacs.inc149
-rw-r--r--meta-oe/recipes-support/emacs/emacs_23.4.bb12
4 files changed, 281 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch b/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch
new file mode 100644
index 000000000..4200301a3
--- /dev/null
+++ b/meta-oe/recipes-support/emacs/emacs-23.4/nostdlib-unwind.patch
@@ -0,0 +1,16 @@
1Fix linking problem:
2undefined reference to `__aeabi_unwind_cpp_pr0'
3undefined reference to `__aeabi_unwind_cpp_pr1'
4Index: emacs/src/Makefile.in
5===================================================================
6--- emacs.orig/src/Makefile.in 2008-08-16 14:20:18.000000000 +0000
7+++ emacs/src/Makefile.in 2008-08-16 14:51:25.000000000 +0000
8@@ -443,7 +443,7 @@
9 ask GCC explicitly where to find libgcc.a. */
10
11 #ifndef LINKER
12-#define LINKER $(CC) -nostdlib
13+#define LINKER $(CC) -nostdlib -lgcc_s
14 #endif
15
16 #ifndef LIB_GCC
diff --git a/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch b/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch
new file mode 100644
index 000000000..c15207a43
--- /dev/null
+++ b/meta-oe/recipes-support/emacs/emacs-23.4/use-qemu.patch
@@ -0,0 +1,104 @@
1Upstream-Status: Inappropriate [embedded specific]
2
3diff -uNr emacs-23.4/Makefile.in emacs-23.4.new/Makefile.in
4--- emacs-23.4/Makefile.in 2012-01-11 13:35:01.000000000 +0100
5+++ emacs-23.4.new/Makefile.in 2012-07-31 00:54:07.223590866 +0200
6@@ -336,7 +336,7 @@
7 # all preloaded elisp files, and only then dump the actual src/emacs, which
8 # is not wrong, but is overkill in 99.99% of the cases.
9 src: Makefile FRC
10- boot=bootstrap-emacs$(EXEEXT); \
11+ boot=${QEMU} bootstrap-emacs$(EXEEXT); \
12 if [ ! -x "src/$$boot" ]; then \
13 cd $@; $(MAKE) all $(MFLAGS) \
14 CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
15diff -uNr emacs-23.4/leim/Makefile.in emacs-23.4.new/leim/Makefile.in
16--- emacs-23.4/leim/Makefile.in 2012-01-11 13:35:01.000000000 +0100
17+++ emacs-23.4.new/leim/Makefile.in 2012-07-31 00:54:07.179590866 +0200
18@@ -51,7 +51,7 @@
19
20 # How to run Emacs.
21 RUN-EMACS = EMACSLOADPATH=$(buildlisppath) LC_ALL=C \
22- ${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
23+ ${QEMU} ${BUILT-EMACS} -batch --no-init-file --no-site-file --multibyte
24
25 # Subdirectories to be made if ${srcdir} is different from the current
26 # directory.
27diff -uNr emacs-23.4/lib-src/Makefile.in emacs-23.4.new/lib-src/Makefile.in
28--- emacs-23.4/lib-src/Makefile.in 2012-01-11 13:35:01.000000000 +0100
29+++ emacs-23.4.new/lib-src/Makefile.in 2012-07-31 00:54:07.180590866 +0200
30@@ -23,7 +23,7 @@
31 SHELL = /bin/sh
32
33 # Following ../lisp/Makefile.in.
34-EMACS = ../src/emacs
35+EMACS = ${QEMU} ../src/emacs
36 EMACSOPT = -batch --no-site-file --multibyte
37
38 # ==================== Things `configure' will edit ====================
39@@ -372,7 +372,7 @@
40 clobbered too. */
41 test-distrib${EXEEXT}: ${srcdir}/test-distrib.c
42 $(CC) ${ALL_CFLAGS} -o test-distrib ${srcdir}/test-distrib.c
43- ./test-distrib ${srcdir}/testfile
44+ ${QEMU} ./test-distrib ${srcdir}/testfile
45
46 /* We need the following in order to create a <getopt.h> when the system
47 does not have one that works with the given compiler. */
48diff -uNr emacs-23.4/lisp/Makefile.in emacs-23.4.new/lisp/Makefile.in
49--- emacs-23.4/lisp/Makefile.in 2012-01-11 13:35:01.000000000 +0100
50+++ emacs-23.4.new/lisp/Makefile.in 2012-07-31 00:54:07.195590866 +0200
51@@ -26,8 +26,7 @@
52 # You can specify a different executable on the make command line,
53 # e.g. "make EMACS=../src/emacs ...".
54
55-EMACS = ../src/emacs
56-
57+EMACS = "${QEMU} ../src/emacs"
58 # Command line flags for Emacs. This must include --multibyte,
59 # otherwise some files will not compile.
60
61diff -uNr emacs-23.4/src/Makefile.in emacs-23.4.new/src/Makefile.in
62--- emacs-23.4/src/Makefile.in 2012-01-12 11:27:54.000000000 +0100
63+++ emacs-23.4.new/src/Makefile.in 2012-07-31 00:55:30.344593847 +0200
64@@ -482,7 +482,7 @@
65 this with the shell''s ``for'' construct.
66 Note that some people do not have '.' in their paths, so we must
67 use ./prefix-args. */
68-#define YMF_PASS_LDFLAGS(flags) `./prefix-args -Xlinker flags`
69+#define YMF_PASS_LDFLAGS(flags) `${QEMU} ./prefix-args -Xlinker flags`
70 #else
71 #define YMF_PASS_LDFLAGS(flags) flags
72 #endif
73@@ -919,9 +919,9 @@
74 $(GNULIB_VAR) LIB_MATH LIB_STANDARD $(GNULIB_VAR)
75
76 #ifdef HAVE_SHM
77-RUN_TEMACS = `/bin/pwd`/temacs -nl
78+RUN_TEMACS = ${QEMU} temacs -nl
79 #else
80-RUN_TEMACS = `/bin/pwd`/temacs
81+RUN_TEMACS = ${QEMU} temacs
82 #endif
83
84 all: emacs${EXEEXT} $(OTHER_FILES)
85@@ -936,7 +936,7 @@
86 @: This new Emacs is as functional and more efficient then
87 @: bootstrap-emacs, so let us replace it.
88 -ln -f emacs${EXEEXT} bootstrap-emacs${EXEEXT}
89- -./emacs -q -batch -f list-load-path-shadows
90+ -${QEMU} ./emacs -q -batch -f list-load-path-shadows
91 #endif /* ! defined (CANNOT_DUMP) */
92
93 /* We run make-docfile twice because the command line may get too long
94@@ -954,8 +954,8 @@
95 only in order to reduce the command line length. --Stef */
96 ${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${lisp} ${SOME_MACHINE_LISP}
97 -rm -f ${etc}DOC
98- ${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
99- ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
100+ ${QEMU}${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
101+ ${QEMU} ${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
102
103 ${libsrc}make-docfile${EXEEXT}:
104 cd ${libsrc}; ${MAKE} ${MFLAGS} make-docfile${EXEEXT}
diff --git a/meta-oe/recipes-support/emacs/emacs.inc b/meta-oe/recipes-support/emacs/emacs.inc
new file mode 100644
index 000000000..a1a4965ab
--- /dev/null
+++ b/meta-oe/recipes-support/emacs/emacs.inc
@@ -0,0 +1,149 @@
1DESCRIPTION = "Emacs"
2HOMEPAGE = "http://www.gnu.org/software/emacs/"
3LICENSE = "GPLv3"
4LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
5SECTION = "editor"
6# and it needs to run some generated binaries..
7DEPENDS += "qemu-native"
8
9DEPENDS +=" liblockfile"
10
11X11DEPENDS = " \
12 libice libsm atk cairo dbus expat libffi fontconfig freetype gconf giflib \
13 jpeg xz pixman libpng librsvg tiff libcroco \
14 libx11 libxau libxcomposite libxcursor libxdamage libxdmcp libxext libxfixes \
15 libxft libxpm libxrandr libxrender \
16 gdk-pixbuf glib-2.0 gtk+ pango libxcb harfbuzz icu \
17"
18
19EXTRA_OECONF = "--without-sound --with-crt-dir=${STAGING_LIBDIR} "
20
21PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
22PACKAGECONFIG[x11] = "--with-x-toolkit=gtk,--without-x --without-dbus,${X11DEPENDS}"
23
24
25inherit autotools
26
27PACKAGES =+ "${PN}-el"
28
29FILES_${PN}-el = "${datadir}/emacs/*/*/*.el.gz \
30 ${datadir}/emacs/*/*/*/*.el.gz"
31
32FILES_${PN} += "${datadir}/emacs ${datadir}/icons"
33
34FILES_${PN}-dbg += "${libexecdir}/emacs/*/*/.debug ${datadir}/emacs/*/*/.debug"
35
36TREEDIR = "${WORKDIR}/qemu-treedir"
37
38QEMUARCH= "${TARGET_ARCH}"
39QEMUARCH_i486 = "i386"
40QEMUARCH_i586 = "i386"
41QEMUARCH_i686 = "i386"
42
43# Large stack is required at least on x86_64 host, otherwise random segfaults appear:
44QEMU = "qemu-${QEMUARCH} ${QEMU_OPTIONS} -s 1048576 -L ${TREEDIR} "
45
46export LOGNAME = "$(whoami)"
47
48do_compile_prepend() {
49 sed -i ':1;s:\(START.* \|LIB_STANDARD.* \|LIBES.* \)/usr/lib:\1${STAGING_LIBDIR}:;t1' ${S}/src/s/gnu-linux.h `find "${S}" -name Makefile`
50 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${TOOLCHAIN_PATH}/${TARGET_SYS}/lib"
51# Ugly hack, see files/use-qemu.patch for more:
52 ln -sf ../src/emacs lisp/emacs
53 ln -sf ../src/emacs lib-src/emacs
54 ln -sf ../src/emacs leim/emacs
55#copy STAGING_DIR_TARGET and libgcc_s.so* to WORKDIR/qemu-treedir #copied code from glibc-package.bbclass
56 treedir=${TREEDIR}
57 if [ -e $treedir ];then
58 rm -rf $treedir
59 fi
60
61 mkdir -p $treedir/${base_libdir}
62
63 if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so ]; then
64 cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so $treedir/${base_libdir}
65 fi
66 if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* ]; then
67 cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* $treedir/${base_libdir}
68 fi
69 # stupid hack, but without it, it tries to use /usr/lib/libc.so from host and fails
70 # temacs: error while loading shared libraries: /usr/lib/libc.so: ELF file version does not match current one
71 if [ ! -f $treedir/${base_libdir}/libc.so ]; then
72 ln -s libc.so.6 $treedir/${base_libdir}/libc.so
73 fi
74
75 # copy only as much stuff as we need
76 # before: 5.5G ../../qemu-treedir/
77 # after: 17M ../../qemu-treedir/
78 cp -pPR \
79 ${STAGING_DIR_TARGET}/${base_libdir}/ld-* \
80 ${STAGING_DIR_TARGET}/${base_libdir}/libc.* \
81 ${STAGING_DIR_TARGET}/${base_libdir}/libc-* \
82 ${STAGING_DIR_TARGET}/${base_libdir}/libm-* \
83 ${STAGING_DIR_TARGET}/${base_libdir}/libm.* \
84 ${STAGING_DIR_TARGET}/${base_libdir}/libtinfo.so.* \
85 ${STAGING_DIR_TARGET}/${base_libdir}/libresolv* \
86 ${STAGING_DIR_TARGET}/${base_libdir}/libdl* \
87 ${STAGING_DIR_TARGET}/${base_libdir}/librt* \
88 ${STAGING_DIR_TARGET}/${base_libdir}/libgcc_s.so.* \
89 ${STAGING_DIR_TARGET}/${base_libdir}/libpthread* $treedir/${base_libdir}/
90
91 if [ ! -z "${@base_contains('PACKAGECONFIG', 'x11', 'x11', '', d)}" ] ; then
92 echo "X11 build enabled"
93 # copy only as much stuff as we need
94 # before: 5.5G ../../qemu-treedir/
95 # after: 86M ../../qemu-treedir/
96 cp -pPR \
97 ${STAGING_DIR_TARGET}/${base_libdir}/libuuid.so.* \
98 ${STAGING_DIR_TARGET}/${base_libdir}/libz.so.* \
99 ${STAGING_DIR_TARGET}/${libdir}/libICE.so.* \
100 ${STAGING_DIR_TARGET}/${libdir}/libSM.so.* \
101 ${STAGING_DIR_TARGET}/${libdir}/libatk-1.0.so.* \
102 ${STAGING_DIR_TARGET}/${libdir}/libcairo.so.* \
103 ${STAGING_DIR_TARGET}/${libdir}/libdbus-1.so.* \
104 ${STAGING_DIR_TARGET}/${libdir}/libdbus-glib-1.so.* \
105 ${STAGING_DIR_TARGET}/${libdir}/libexpat.so.* \
106 ${STAGING_DIR_TARGET}/${libdir}/libffi.so.* \
107 ${STAGING_DIR_TARGET}/${libdir}/libfontconfig.so.* \
108 ${STAGING_DIR_TARGET}/${libdir}/libfreetype.so.* \
109 ${STAGING_DIR_TARGET}/${libdir}/libgconf-2.so.* \
110 ${STAGING_DIR_TARGET}/${libdir}/libgif.so.* \
111 ${STAGING_DIR_TARGET}/${libdir}/libjpeg.so.* \
112 ${STAGING_DIR_TARGET}/${libdir}/liblzma.so.* \
113 ${STAGING_DIR_TARGET}/${libdir}/libpixman-1.so.* \
114 ${STAGING_DIR_TARGET}/${libdir}/libpng1*.so.* \
115 ${STAGING_DIR_TARGET}/${libdir}/librsvg-2.so.* \
116 ${STAGING_DIR_TARGET}/${libdir}/libstdc++.so.* \
117 ${STAGING_DIR_TARGET}/${libdir}/libtiff.so.* \
118 ${STAGING_DIR_TARGET}/${libdir}/libxml2.so.* \
119 ${STAGING_DIR_TARGET}/${libdir}/libcroco-0.6.so.* \
120 ${STAGING_DIR_TARGET}/${libdir}/libharfbuzz.so.* \
121 ${STAGING_DIR_TARGET}/${libdir}/libicule.so.* \
122 ${STAGING_DIR_TARGET}/${libdir}/libicuuc.so.* \
123 ${STAGING_DIR_TARGET}/${libdir}/libicudata.so.* $treedir/${base_libdir}/
124
125 # X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext Xfixes Xft Xpm Xrandr Xrender
126 cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libX*.so.* $treedir/${base_libdir}/
127
128 # gdk-x11 gdk_pixbuf gio glib gmodule gobject gthread gtk-x11
129 cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libg*-2.0.so.* $treedir/${base_libdir}/
130
131 # pango pangocairo pangoft2
132 cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libpango*-1.0.so.* $treedir/${base_libdir}/
133
134 # xcb-render xcb-shm xcb
135 cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libxcb*.so.* $treedir/${base_libdir}/
136 fi
137}
138
139do_install_append() {
140 # freaks package.bbclass and whole bitbake call returns error code
141 # ERROR: runstrip: ''arm-oe-linux-gnueabi-strip' '/var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/emacs-23.4-r0/package/usr/share/emacs/23.4/etc/tutorials/TUTORIAL.ko'' strip command failed
142 mv ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.ko ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.KO
143 # Info dir listing isn't interesting at this point so remove it if it exists.
144 if [ -e "${D}${infodir}/dir" ]; then
145 rm -f ${D}${infodir}/dir
146 fi
147}
148
149EXTRA_OEMAKE += 'QEMU="${QEMU}"'
diff --git a/meta-oe/recipes-support/emacs/emacs_23.4.bb b/meta-oe/recipes-support/emacs/emacs_23.4.bb
new file mode 100644
index 000000000..a32482883
--- /dev/null
+++ b/meta-oe/recipes-support/emacs/emacs_23.4.bb
@@ -0,0 +1,12 @@
1require emacs.inc
2
3PR = "r4"
4
5PNBLACKLIST[emacs] ?= "qemu: uncaught target signal 11 (Segmentation fault) - core dumped"
6
7SRC_URI = "${GNU_MIRROR}/emacs/emacs-${PV}.tar.gz;name=tarball \
8 file://use-qemu.patch \
9 file://nostdlib-unwind.patch \
10"
11SRC_URI[tarball.md5sum] = "34405165fcd978fbc8b304cbd99ccf4f"
12SRC_URI[tarball.sha256sum] = "b9a2b8434052771f797d2032772eba862ff9aa143029efc72295170607289c18"