emacs_27.1.bb 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. SUMMARY = "Emacs is the extensible, customizable, self-documenting real-time display editor"
  2. HOMEPAGE = "https://www.gnu.org/software/emacs/"
  3. LICENSE = "GPLv3"
  4. LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
  5. SRC_URI = "https://ftp.gnu.org/pub/gnu/emacs/emacs-${PV}.tar.xz"
  6. SRC_URI_append_class-target = " file://usemake-docfile-native.patch"
  7. SRC_URI[sha256sum] = "4a4c128f915fc937d61edfc273c98106711b540c9be3cd5d2e2b9b5b2f172e41"
  8. PACKAGECONFIG[gnutls] = "--with-gnutls=yes,--with-gnutls=no,gnutls"
  9. PACKAGECONFIG[kerberos] = "--with-kerberos=yes,--with-kerberos=no,krb5"
  10. PACKAGECONFIG[libgmp] = "--with-libgmp=yes,--with-libgmp=no,gmp"
  11. PACKAGECONFIG ??= "gnutls kerberos libgmp"
  12. # We could use --without-all but its better to
  13. # split it into several packages (size of minimal doesnt change)
  14. EXTRA_OECONF = " --with-x=no --with-dumping=none"
  15. DEPENDS = "ncurses"
  16. DEPENDS_append_class-target = " emacs-native"
  17. inherit autotools mime-xdg
  18. do_compile_class-native (){
  19. cd ${B}/lib-src
  20. oe_runmake make-docfile
  21. oe_runmake make-fingerprint
  22. }
  23. do_install_class-native(){
  24. install -d ${D}${bindir}
  25. install -m 755 ${B}/lib-src/make-docfile ${D}/${bindir}/
  26. install -m 755 ${B}/lib-src/make-fingerprint ${D}/${bindir}/
  27. }
  28. do_install_append(){
  29. # Delete systemd stuff, extend using DISTRO_FEATURES?
  30. rm -rf ${D}/${libdir}
  31. # Extra stuff which isnt needed
  32. rm -rf ${D}/${datadir}/metainfo
  33. rm -rf ${D}/${datadir}/info
  34. # Emacs copies files to ${D} while building, which were unpacked
  35. # by a different user, we need to restore those
  36. chown -R root:root ${D}${datadir}
  37. }
  38. # Use a similar strategy to how we build python:
  39. # Create three packages
  40. # minimal - A working lisp based text editor
  41. # base - What would probably work for most
  42. # full - A fully working emacs
  43. # The lists of files are long but are worth it
  44. # Installing "emacs" installs the base package
  45. PACKAGE_BEFORE_PN = "${PN}-minimal ${PN}-base ${PN}-full"
  46. RPROVIDES_${PN}-base = "${PN}"
  47. RDEPENDS_${PN}-base_class-target = "${PN}-minimal"
  48. RDEPENDS_${PN}-full_class-target = "${PN}"
  49. # A minimal version of emacs that works
  50. FILES_${PN}-minimal = " \
  51. ${datadir}/${BPN}/${PV}/lisp/loadup.el \
  52. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/byte-run.elc \
  53. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/backquote.elc \
  54. ${datadir}/${BPN}/${PV}/lisp/subr.elc \
  55. ${datadir}/${BPN}/${PV}/lisp/version.elc \
  56. ${datadir}/${BPN}/${PV}/lisp/widget.elc \
  57. ${datadir}/${BPN}/${PV}/lisp/custom.elc \
  58. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/map-ynp.elc \
  59. ${datadir}/${BPN}/${PV}/lisp/international/mule.elc \
  60. ${datadir}/${BPN}/${PV}/lisp/international/mule-conf.elc \
  61. ${datadir}/${BPN}/${PV}/lisp/env.elc \
  62. ${datadir}/${BPN}/${PV}/lisp/format.elc \
  63. ${datadir}/${BPN}/${PV}/lisp/bindings.elc \
  64. ${datadir}/${BPN}/${PV}/lisp/window.elc \
  65. ${datadir}/${BPN}/${PV}/lisp/files.elc \
  66. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/macroexp.elc \
  67. ${datadir}/${BPN}/${PV}/lisp/cus-face.elc \
  68. ${datadir}/${BPN}/${PV}/lisp/faces.elc \
  69. ${datadir}/${BPN}/${PV}/lisp/button.elc \
  70. ${datadir}/${BPN}/${PV}/lisp/loaddefs.el \
  71. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/nadvice.elc \
  72. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-preloaded.elc \
  73. ${datadir}/${BPN}/${PV}/lisp/obarray.elc \
  74. ${datadir}/${BPN}/${PV}/lisp/abbrev.elc \
  75. ${datadir}/${BPN}/${PV}/lisp/simple.elc \
  76. ${datadir}/${BPN}/${PV}/lisp/jka-cmpr-hook.elc \
  77. ${datadir}/${BPN}/${PV}/lisp/epa-hook.elc \
  78. ${datadir}/${BPN}/${PV}/lisp/international/mule-cmds.elc \
  79. ${datadir}/${BPN}/${PV}/lisp/case-table.elc \
  80. ${datadir}/${BPN}/${PV}/lisp/international/charprop.el \
  81. ${datadir}/${BPN}/${PV}/lisp/international/characters.elc \
  82. ${datadir}/${BPN}/${PV}/lisp/international/charscript.elc \
  83. ${datadir}/${BPN}/${PV}/lisp/composite.elc \
  84. ${datadir}/${BPN}/${PV}/lisp/language/chinese.elc \
  85. ${datadir}/${BPN}/${PV}/lisp/language/cyrillic.elc \
  86. ${datadir}/${BPN}/${PV}/lisp/language/indian.elc \
  87. ${datadir}/${BPN}/${PV}/lisp/language/sinhala.elc \
  88. ${datadir}/${BPN}/${PV}/lisp/language/english.elc \
  89. ${datadir}/${BPN}/${PV}/lisp/language/ethiopic.elc \
  90. ${datadir}/${BPN}/${PV}/lisp/language/european.elc \
  91. ${datadir}/${BPN}/${PV}/lisp/language/czech.elc \
  92. ${datadir}/${BPN}/${PV}/lisp/language/slovak.elc \
  93. ${datadir}/${BPN}/${PV}/lisp/language/romanian.elc \
  94. ${datadir}/${BPN}/${PV}/lisp/language/greek.elc \
  95. ${datadir}/${BPN}/${PV}/lisp/language/hebrew.elc \
  96. ${datadir}/${BPN}/${PV}/lisp/international/cp51932.elc \
  97. ${datadir}/${BPN}/${PV}/lisp/international/eucjp-ms.elc \
  98. ${datadir}/${BPN}/${PV}/lisp/language/japanese.elc \
  99. ${datadir}/${BPN}/${PV}/lisp/language/korean.elc \
  100. ${datadir}/${BPN}/${PV}/lisp/language/lao.elc \
  101. ${datadir}/${BPN}/${PV}/lisp/language/tai-viet.elc \
  102. ${datadir}/${BPN}/${PV}/lisp/language/thai.elc \
  103. ${datadir}/${BPN}/${PV}/lisp/language/tibetan.elc \
  104. ${datadir}/${BPN}/${PV}/lisp/language/vietnamese.elc \
  105. ${datadir}/${BPN}/${PV}/lisp/language/misc-lang.elc \
  106. ${datadir}/${BPN}/${PV}/lisp/language/utf-8-lang.elc \
  107. ${datadir}/${BPN}/${PV}/lisp/language/georgian.elc \
  108. ${datadir}/${BPN}/${PV}/lisp/language/khmer.elc \
  109. ${datadir}/${BPN}/${PV}/lisp/language/burmese.elc \
  110. ${datadir}/${BPN}/${PV}/lisp/language/cham.elc \
  111. ${datadir}/${BPN}/${PV}/lisp/indent.elc \
  112. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-generic.elc \
  113. ${datadir}/${BPN}/${PV}/lisp/minibuffer.elc \
  114. ${datadir}/${BPN}/${PV}/lisp/frame.elc \
  115. ${datadir}/${BPN}/${PV}/lisp/startup.elc \
  116. ${datadir}/${BPN}/${PV}/lisp/term/tty-colors.elc \
  117. ${datadir}/${BPN}/${PV}/lisp/font-core.elc \
  118. ${datadir}/${BPN}/${PV}/lisp/facemenu.elc \
  119. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/syntax.elc \
  120. ${datadir}/${BPN}/${PV}/lisp/font-lock.elc \
  121. ${datadir}/${BPN}/${PV}/lisp/jit-lock.elc \
  122. ${datadir}/${BPN}/${PV}/lisp/mouse.elc \
  123. ${datadir}/${BPN}/${PV}/lisp/select.elc \
  124. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/timer.elc \
  125. ${datadir}/${BPN}/${PV}/lisp/isearch.elc \
  126. ${datadir}/${BPN}/${PV}/lisp/rfn-eshadow.elc \
  127. ${datadir}/${BPN}/${PV}/lisp/menu-bar.elc \
  128. ${datadir}/${BPN}/${PV}/lisp/tab-bar.elc \
  129. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/lisp.elc \
  130. ${datadir}/${BPN}/${PV}/lisp/textmodes/page.elc \
  131. ${datadir}/${BPN}/${PV}/lisp/register.elc \
  132. ${datadir}/${BPN}/${PV}/lisp/textmodes/paragraphs.elc \
  133. ${datadir}/${BPN}/${PV}/lisp/progmodes/prog-mode.elc \
  134. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/lisp-mode.elc \
  135. ${datadir}/${BPN}/${PV}/lisp/progmodes/elisp-mode.elc \
  136. ${datadir}/${BPN}/${PV}/lisp/textmodes/text-mode.elc \
  137. ${datadir}/${BPN}/${PV}/lisp/textmodes/fill.elc \
  138. ${datadir}/${BPN}/${PV}/lisp/newcomment.elc \
  139. ${datadir}/${BPN}/${PV}/lisp/replace.elc \
  140. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/tabulated-list.elc \
  141. ${datadir}/${BPN}/${PV}/lisp/buff-menu.elc \
  142. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/float-sup.elc \
  143. ${datadir}/${BPN}/${PV}/lisp/vc/vc-hooks.elc \
  144. ${datadir}/${BPN}/${PV}/lisp/vc/ediff-hook.elc \
  145. ${datadir}/${BPN}/${PV}/lisp/uniquify.elc \
  146. ${datadir}/${BPN}/${PV}/lisp/electric.elc \
  147. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eldoc.elc \
  148. ${datadir}/${BPN}/${PV}/lisp/cus-start.elc \
  149. ${datadir}/${BPN}/${PV}/lisp/tooltip.elc \
  150. ${datadir}/${BPN}/${PV}/lisp/simple.elc \
  151. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/regexp-opt.elc \
  152. ${datadir}/${BPN}/${PV}/lisp/term/xterm.elc \
  153. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/bytecomp.elc \
  154. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cconv.elc \
  155. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/gv.elc \
  156. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/byte-opt.elc \
  157. ${datadir}/${BPN}/${PV}/lisp/image.elc \
  158. ${datadir}/${BPN}/${PV}/lisp/ldefs-boot.el \
  159. ${datadir}/${BPN}/${PV}/lisp/help.elc \
  160. ${datadir}/${BPN}/${PV}/lisp/international/uni*.el \
  161. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/vc/warnings.elc \
  162. ${datadir}/${BPN}/${PV}/etc/charsets/ \
  163. ${datadir}/${BPN}/${PV}/lisp/disp-table.elc \
  164. ${bindir}/emacs* \
  165. ${prefix}/libexec \
  166. "
  167. # What works for "most" is relative, but this can be easily extended if needed
  168. FILES_${PN}-base = " \
  169. ${datadir}/${BPN}/${PV}/etc/srecode \
  170. ${datadir}/${BPN}/${PV}/etc/e \
  171. ${datadir}/${BPN}/${PV}/etc/forms \
  172. ${datadir}/${BPN}/${PV}/lisp/cedet \
  173. ${datadir}/${BPN}/${PV}/site-lisp/ \
  174. ${datadir}/${BPN}/${PV}/lisp/subdirs.el \
  175. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-mode.elc \
  176. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-defs.elc \
  177. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-vars.elc \
  178. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-engine.elc \
  179. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-styles.elc \
  180. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-fonts.elc \
  181. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-cmds.elc \
  182. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-align.elc \
  183. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-menus.elc \
  184. ${datadir}/${BPN}/${PV}/lisp/progmodes/cc-guess.elc \
  185. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-lib.elc \
  186. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-macs.elc \
  187. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/pcase.elc \
  188. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/inline.elc \
  189. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/cl-seq.elc \
  190. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/easymenu.elc \
  191. ${datadir}/${BPN}/${PV}/lisp/progmodes/python* \
  192. ${datadir}/${BPN}/${PV}/lisp/ansi-color.elc \
  193. ${datadir}/${BPN}/${PV}/lisp/comint.elc \
  194. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/ring.elc \
  195. ${datadir}/${BPN}/${PV}/lisp/json.elc \
  196. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/map.elc \
  197. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/seq.elc \
  198. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/subr-x.elc \
  199. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/seq.elc \
  200. ${datadir}/${BPN}/${PV}/lisp/net/tramp-sh.elc \
  201. ${datadir}/${BPN}/${PV}/lisp/net/tramp.elc \
  202. ${datadir}/${BPN}/${PV}/lisp/net/tramp-compat.elc \
  203. ${datadir}/${BPN}/${PV}/lisp/auth-source.elc \
  204. ${datadir}/${BPN}/${PV}/lisp/password-cache.elc \
  205. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eieio.elc \
  206. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/eieio-core.elc \
  207. ${datadir}/${BPN}/${PV}/lisp/format-spec.elc \
  208. ${datadir}/${BPN}/${PV}/lisp/ls-lisp.elc \
  209. ${datadir}/${BPN}/${PV}/lisp/calendar/parse-time.elc \
  210. ${datadir}/${BPN}/${PV}/lisp/calendar/iso8601.elc \
  211. ${datadir}/${BPN}/${PV}/lisp/calendar/time-date.elc \
  212. ${datadir}/${BPN}/${PV}/lisp/shell.elc \
  213. ${datadir}/${BPN}/${PV}/lisp/pcomplete.elc \
  214. ${datadir}/${BPN}/${PV}/lisp/net/tramp-integration.elc \
  215. ${datadir}/${BPN}/${PV}/lisp/files-x.elc \
  216. ${datadir}/${BPN}/${PV}/lisp/net/trampver.elc \
  217. ${datadir}/${BPN}/${PV}/lisp/net/tramp-loaddefs.el \
  218. ${datadir}/${BPN}/${PV}/lisp/progmodes/*perl* \
  219. ${datadir}/${BPN}/${PV}/lisp/emacs-lisp/smie.elc \
  220. ${datadir}/${BPN}/${PV}/lisp/progmodes/*asm* \
  221. ${datadir}/${BPN}/${PV}/lisp/progmodes/cpp* \
  222. ${datadir}/${BPN}/${PV}/lisp/progmodes/make* \
  223. ${datadir}/${BPN}/${PV}/lisp/progmodes/sh-script* \
  224. ${datadir}/${BPN}/${PV}/etc/themes/adwaita-theme.el \
  225. ${datadir}/${BPN}/${PV}/etc/themes/wheatgrass-theme.el \
  226. ${datadir}/${BPN}/${PV}/etc/themes/deeper-blue-theme.el \
  227. ${datadir}/${BPN}/${PV}/etc/themes/light-blue-theme.el \
  228. ${datadir}/${BPN}/${PV}/etc/themes/misterioso-theme.el \
  229. ${datadir}/${BPN}/${PV}/etc/themes/tango-theme.el \
  230. ${datadir}/${BPN}/${PV}/etc/themes/wombat-theme.el \
  231. ${datadir}/${BPN}/${PV}/lisp/progmodes/prog* \
  232. ${datadir}/${BPN}/${PV}/lisp/progmodes/executable* \
  233. "
  234. # Restore FILES for the full package to catch everything left
  235. FILES_${PN}-full = "${FILES_${PN}}"
  236. FILES_${PN}-full_append = " ${datadir}/icons"
  237. # The following does NOT build a native emacs.
  238. # It only builds some parts of it that are
  239. # required to by the build for target emacs.
  240. BBCLASSEXTEND = "native"