Patrick Williams | b48b7b4 | 2016-08-17 15:04:38 -0500 | [diff] [blame^] | 1 | DESCRIPTION = "Emacs" |
| 2 | HOMEPAGE = "http://www.gnu.org/software/emacs/" |
| 3 | LICENSE = "GPLv3" |
| 4 | LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" |
| 5 | SECTION = "editor" |
| 6 | # and it needs to run some generated binaries.. |
| 7 | DEPENDS += "qemu-native" |
| 8 | |
| 9 | DEPENDS +=" liblockfile" |
| 10 | |
| 11 | X11DEPENDS = " \ |
| 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 | |
| 19 | EXTRA_OECONF = "--without-sound --with-crt-dir=${STAGING_LIBDIR} " |
| 20 | |
| 21 | PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" |
| 22 | PACKAGECONFIG[x11] = "--with-x-toolkit=gtk,--without-x --without-dbus,${X11DEPENDS}" |
| 23 | |
| 24 | |
| 25 | inherit autotools |
| 26 | |
| 27 | PACKAGES =+ "${PN}-el" |
| 28 | |
| 29 | FILES_${PN}-el = "${datadir}/emacs/*/*/*.el.gz \ |
| 30 | ${datadir}/emacs/*/*/*/*.el.gz" |
| 31 | |
| 32 | FILES_${PN} += "${datadir}/emacs ${datadir}/icons" |
| 33 | |
| 34 | FILES_${PN}-dbg += "${libexecdir}/emacs/*/*/.debug ${datadir}/emacs/*/*/.debug" |
| 35 | |
| 36 | TREEDIR = "${WORKDIR}/qemu-treedir" |
| 37 | |
| 38 | QEMUARCH= "${TARGET_ARCH}" |
| 39 | QEMUARCH_x86 = "i386" |
| 40 | |
| 41 | # Large stack is required at least on x86_64 host, otherwise random segfaults appear: |
| 42 | QEMU = "qemu-${QEMUARCH} ${QEMU_OPTIONS} -s 1048576 -L ${TREEDIR} " |
| 43 | |
| 44 | export LOGNAME = "$(whoami)" |
| 45 | |
| 46 | do_compile_prepend() { |
| 47 | sed -i ':1;s:\(START.* \|LIB_STANDARD.* \|LIBES.* \)/usr/lib:\1${STAGING_LIBDIR}:;t1' ${S}/src/s/gnu-linux.h `find "${S}" -name Makefile` |
| 48 | export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${TOOLCHAIN_PATH}/${TARGET_SYS}/lib" |
| 49 | # Ugly hack, see files/use-qemu.patch for more: |
| 50 | ln -sf ../src/emacs lisp/emacs |
| 51 | ln -sf ../src/emacs lib-src/emacs |
| 52 | ln -sf ../src/emacs leim/emacs |
| 53 | #copy STAGING_DIR_TARGET and libgcc_s.so* to WORKDIR/qemu-treedir #copied code from glibc-package.bbclass |
| 54 | treedir=${TREEDIR} |
| 55 | if [ -e $treedir ];then |
| 56 | rm -rf $treedir |
| 57 | fi |
| 58 | |
| 59 | mkdir -p $treedir/${base_libdir} |
| 60 | |
| 61 | if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so ]; then |
| 62 | cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so $treedir/${base_libdir} |
| 63 | fi |
| 64 | if [ -f ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* ]; then |
| 65 | cp -pPR ${TOOLCHAIN_PATH}/${TARGET_SYS}/${base_libdir}/libgcc_s.so.* $treedir/${base_libdir} |
| 66 | fi |
| 67 | # stupid hack, but without it, it tries to use /usr/lib/libc.so from host and fails |
| 68 | # temacs: error while loading shared libraries: /usr/lib/libc.so: ELF file version does not match current one |
| 69 | if [ ! -f $treedir/${base_libdir}/libc.so ]; then |
| 70 | ln -s libc.so.6 $treedir/${base_libdir}/libc.so |
| 71 | fi |
| 72 | |
| 73 | # copy only as much stuff as we need |
| 74 | # before: 5.5G ../../qemu-treedir/ |
| 75 | # after: 17M ../../qemu-treedir/ |
| 76 | cp -pPR \ |
| 77 | ${STAGING_DIR_TARGET}/${base_libdir}/ld-* \ |
| 78 | ${STAGING_DIR_TARGET}/${base_libdir}/libc.* \ |
| 79 | ${STAGING_DIR_TARGET}/${base_libdir}/libc-* \ |
| 80 | ${STAGING_DIR_TARGET}/${base_libdir}/libm-* \ |
| 81 | ${STAGING_DIR_TARGET}/${base_libdir}/libm.* \ |
| 82 | ${STAGING_DIR_TARGET}/${base_libdir}/libtinfo.so.* \ |
| 83 | ${STAGING_DIR_TARGET}/${base_libdir}/libresolv* \ |
| 84 | ${STAGING_DIR_TARGET}/${base_libdir}/libdl* \ |
| 85 | ${STAGING_DIR_TARGET}/${base_libdir}/librt* \ |
| 86 | ${STAGING_DIR_TARGET}/${base_libdir}/libgcc_s.so.* \ |
| 87 | ${STAGING_DIR_TARGET}/${base_libdir}/libpthread* $treedir/${base_libdir}/ |
| 88 | |
| 89 | if [ ! -z "${@bb.utils.contains('PACKAGECONFIG', 'x11', 'x11', '', d)}" ] ; then |
| 90 | echo "X11 build enabled" |
| 91 | # copy only as much stuff as we need |
| 92 | # before: 5.5G ../../qemu-treedir/ |
| 93 | # after: 86M ../../qemu-treedir/ |
| 94 | cp -pPR \ |
| 95 | ${STAGING_DIR_TARGET}/${base_libdir}/libuuid.so.* \ |
| 96 | ${STAGING_DIR_TARGET}/${base_libdir}/libz.so.* \ |
| 97 | ${STAGING_DIR_TARGET}/${libdir}/libICE.so.* \ |
| 98 | ${STAGING_DIR_TARGET}/${libdir}/libSM.so.* \ |
| 99 | ${STAGING_DIR_TARGET}/${libdir}/libatk-1.0.so.* \ |
| 100 | ${STAGING_DIR_TARGET}/${libdir}/libcairo.so.* \ |
| 101 | ${STAGING_DIR_TARGET}/${libdir}/libdbus-1.so.* \ |
| 102 | ${STAGING_DIR_TARGET}/${libdir}/libdbus-glib-1.so.* \ |
| 103 | ${STAGING_DIR_TARGET}/${libdir}/libexpat.so.* \ |
| 104 | ${STAGING_DIR_TARGET}/${libdir}/libffi.so.* \ |
| 105 | ${STAGING_DIR_TARGET}/${libdir}/libfontconfig.so.* \ |
| 106 | ${STAGING_DIR_TARGET}/${libdir}/libfreetype.so.* \ |
| 107 | ${STAGING_DIR_TARGET}/${libdir}/libgconf-2.so.* \ |
| 108 | ${STAGING_DIR_TARGET}/${libdir}/libgif.so.* \ |
| 109 | ${STAGING_DIR_TARGET}/${libdir}/libjpeg.so.* \ |
| 110 | ${STAGING_DIR_TARGET}/${libdir}/liblzma.so.* \ |
| 111 | ${STAGING_DIR_TARGET}/${libdir}/libpixman-1.so.* \ |
| 112 | ${STAGING_DIR_TARGET}/${libdir}/libpng1*.so.* \ |
| 113 | ${STAGING_DIR_TARGET}/${libdir}/librsvg-2.so.* \ |
| 114 | ${STAGING_DIR_TARGET}/${libdir}/libstdc++.so.* \ |
| 115 | ${STAGING_DIR_TARGET}/${libdir}/libtiff.so.* \ |
| 116 | ${STAGING_DIR_TARGET}/${libdir}/libxml2.so.* \ |
| 117 | ${STAGING_DIR_TARGET}/${libdir}/libcroco-0.6.so.* \ |
| 118 | ${STAGING_DIR_TARGET}/${libdir}/libharfbuzz.so.* \ |
| 119 | ${STAGING_DIR_TARGET}/${libdir}/libicule.so.* \ |
| 120 | ${STAGING_DIR_TARGET}/${libdir}/libicuuc.so.* \ |
| 121 | ${STAGING_DIR_TARGET}/${libdir}/libicudata.so.* $treedir/${base_libdir}/ |
| 122 | |
| 123 | # X11 Xau Xcomposite Xcursor Xdamage Xdmcp Xext Xfixes Xft Xpm Xrandr Xrender |
| 124 | cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libX*.so.* $treedir/${base_libdir}/ |
| 125 | |
| 126 | # gdk-x11 gdk_pixbuf gio glib gmodule gobject gthread gtk-x11 |
| 127 | cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libg*-2.0.so.* $treedir/${base_libdir}/ |
| 128 | |
| 129 | # pango pangocairo pangoft2 |
| 130 | cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libpango*-1.0.so.* $treedir/${base_libdir}/ |
| 131 | |
| 132 | # xcb-render xcb-shm xcb |
| 133 | cp -pPR ${STAGING_DIR_TARGET}/${libdir}/libxcb*.so.* $treedir/${base_libdir}/ |
| 134 | fi |
| 135 | } |
| 136 | |
| 137 | do_install_append() { |
| 138 | # freaks package.bbclass and whole bitbake call returns error code |
| 139 | # 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 |
| 140 | mv ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.ko ${D}${datadir}/${BPN}/${PV}/etc/tutorials/TUTORIAL.KO |
| 141 | # Info dir listing isn't interesting at this point so remove it if it exists. |
| 142 | if [ -e "${D}${infodir}/dir" ]; then |
| 143 | rm -f ${D}${infodir}/dir |
| 144 | fi |
| 145 | } |
| 146 | |
| 147 | EXTRA_OEMAKE += 'QEMU="${QEMU}"' |