forked from openembedded/meta-openembedded
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Rebase (and rename) use-emacs-native-tools-for-cross-compiling.patch - Build bootstrap-emacs for emacs-native - Use bootstrap-emacs (native) for cross compiling. - We need to pass EMACSLOADPATH and EMACSDATA so we can control the directories being used by bootstrap-emacs. - Create avoid-running-host-binaries-for-sanity.patch to avoid running the newly integrated santity-check by emacs since it tries to run target binaries on the host. - Fix emacs-minimal packaging for new version. Signed-off-by: Alejandro Hernandez Samaniego <[email protected]> Signed-off-by: Khem Raj <[email protected]>
- Loading branch information
Showing
4 changed files
with
187 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
meta-oe/recipes-support/emacs/files/avoid-running-host-binaries-for-sanity.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
Upstream-Status: Inappropriate [OE-Specific] | ||
|
||
Emacs introduced a sanity-check for the build artifacts, where it | ||
runs the newly built emacs to perform some checks. | ||
|
||
This is not going to work for us since we are cross-compiling, | ||
we need to avoid running target binaries on the host | ||
|
||
Signed-off-by: Alejandro Hernandez Samaniego <[email protected]> | ||
|
||
Index: emacs-29.1/Makefile.in | ||
=================================================================== | ||
--- emacs-29.1.orig/Makefile.in | ||
+++ emacs-29.1/Makefile.in | ||
@@ -416,19 +416,10 @@ advice-on-failure: | ||
@exit ${exit-status} | ||
|
||
sanity-check: | ||
- @[ -f .no-advice-on-failure ] && exit 0; true | ||
- @v=$$(src/emacs${EXEEXT} --batch --eval \ | ||
- '(progn (defun f (n) (if (= 0 n) 1 (* n (f (- n 1))))) (princ (f 10)))' \ | ||
- 2> /dev/null); \ | ||
- [ "X$$v" = "X3628800" ] && exit 0; \ | ||
- echo >&2 '***'; \ | ||
- echo >&2 '*** '"\"make ${make-target}\" succeeded, but Emacs is not functional."; \ | ||
- echo >&2 '***'; \ | ||
- cat Makefile | \ | ||
- sed -n '/^# ADVICE-ON-FAILURE-BEGIN:${make-target}/,$${p;/^# ADVICE-ON-FAILURE-END:${make-target}/q;};' | \ | ||
- sed 's/^# /*** /' | grep -v '^\*\*\* ADVICE-ON-FAILURE-' >&2; \ | ||
- echo >&2 '***'; \ | ||
- exit 1 | ||
+# The Makefile will try to call the newly built emacs to perform some checks | ||
+# this is not going to work since it was (probably) built for a different architecture. | ||
+# Avoid calling target binaries from the host and simply assume our build artifacts work. | ||
+ exit 0 | ||
|
||
.PHONY: all ${SUBDIR} blessmail epaths-force epaths-force-w32 epaths-force-ns-self-contained etc-emacsver | ||
|
106 changes: 106 additions & 0 deletions
106
meta-oe/recipes-support/emacs/files/use-emacs-native-tools-for-cross-compiling.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
Upstream-Status: Inappropriate [OE-Specific] | ||
|
||
When building emacs, it builds some tools for the HOST | ||
that are then used to build for target, such as | ||
make-fingerprint and make-docfile and bootstrap-emacs, | ||
this needs to be adapted to be used by bitbake, otherwise | ||
the compiled executables arent compatible with the HOST. | ||
|
||
We also need to be able to use emacs env variables to | ||
control how bootstrap-emacs is used when cross-compiling. | ||
|
||
Use the above mentioned tools provided by the native | ||
version of the recipe instead. | ||
|
||
Signed-off-by: Alejandro Enedino Hernandez Samaniego <[email protected]> | ||
|
||
Index: emacs-29.1/src/Makefile.in | ||
=================================================================== | ||
--- emacs-29.1.orig/src/Makefile.in | ||
+++ emacs-29.1/src/Makefile.in | ||
@@ -1,3 +1,4 @@ | ||
+ | ||
### @configure_input@ | ||
|
||
# Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2023 Free Software | ||
@@ -508,7 +509,7 @@ ifeq ($(CHECK_STRUCTS),true) | ||
pdumper.o: dmpstruct.h | ||
endif | ||
dmpstruct.h: $(srcdir)/dmpstruct.awk | ||
-dmpstruct.h: $(libsrc)/make-fingerprint$(EXEEXT) $(dmpstruct_headers) | ||
+dmpstruct.h: $(dmpstruct_headers) | ||
$(AM_V_GEN)POSIXLY_CORRECT=1 awk -f $(srcdir)/dmpstruct.awk \ | ||
$(dmpstruct_headers) > $@ | ||
|
||
@@ -610,8 +611,7 @@ SYSTEM_TYPE = @SYSTEM_TYPE@ | ||
## Strictly speaking, emacs does not depend directly on all of $lisp, | ||
## since not all pieces are used on all platforms. But DOC depends | ||
## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here. | ||
-emacs$(EXEEXT): temacs$(EXEEXT) \ | ||
- lisp.mk $(etc)/DOC $(lisp) \ | ||
+emacs$(EXEEXT): lisp.mk $(etc)/DOC $(lisp) \ | ||
$(lispsource)/international/charprop.el ${charsets} | ||
ifeq ($(SYSTEM_TYPE),cygwin) | ||
find ${top_builddir} -name '*.eln' | rebase -v -O -T - | ||
@@ -654,7 +654,7 @@ endif | ||
$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(doc_obj) | ||
$(AM_V_GEN)$(MKDIR_P) $(etc) | ||
$(AM_V_at)rm -f $(etc)/DOC | ||
- $(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \ | ||
+ make-docfile -d $(srcdir) \ | ||
$(SOME_MACHINE_OBJECTS) $(doc_obj) > $(etc)/DOC | ||
|
||
$(libsrc)/make-docfile$(EXEEXT) $(libsrc)/make-fingerprint$(EXEEXT): \ | ||
@@ -671,7 +671,7 @@ buildobj.h: Makefile | ||
GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m) | ||
|
||
gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) | ||
- $(AM_V_GLOBALS)$(libsrc)/make-docfile -d $(srcdir) -g $(doc_obj) > globals.tmp | ||
+ make-docfile -d $(srcdir) -g $(doc_obj) > globals.tmp | ||
$(AM_V_at)$(top_srcdir)/build-aux/move-if-change globals.tmp globals.h | ||
$(AM_V_at)echo timestamp > $@ | ||
|
||
@@ -685,7 +685,7 @@ $(LIBEGNU_ARCHIVE): $(config_h) | ||
$(MAKE) -C $(dir $@) all | ||
|
||
ifeq ($(HAVE_PDUMPER),yes) | ||
-MAKE_PDUMPER_FINGERPRINT = $(libsrc)/make-fingerprint$(EXEEXT) | ||
+MAKE_PDUMPER_FINGERPRINT = make-fingerprint | ||
else | ||
MAKE_PDUMPER_FINGERPRINT = | ||
endif | ||
Index: emacs-29.1/lisp/Makefile.in | ||
=================================================================== | ||
--- emacs-29.1.orig/lisp/Makefile.in | ||
+++ emacs-29.1/lisp/Makefile.in | ||
@@ -53,7 +53,7 @@ FIND_DELETE = @FIND_DELETE@ | ||
# We never change directory before running Emacs, so a relative file | ||
# name is fine, and makes life easier. If we need to change | ||
# directory, we can use emacs --chdir. | ||
-EMACS = ../src/emacs${EXEEXT} | ||
+EMACS = bootstrap-emacs | ||
|
||
# Command line flags for Emacs. | ||
|
||
@@ -109,7 +109,7 @@ MAIN_FIRST = ./emacs-lisp/eieio.el ./ema | ||
./org/oc.el ./org/ol.el ./emacs-lisp/cl-lib.el | ||
|
||
# Prevent any settings in the user environment causing problems. | ||
-unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH | ||
+unexport EMACSDOC EMACSPATH | ||
|
||
# The actual Emacs command run in the targets below. | ||
emacs = '$(EMACS)' $(EMACSOPT) | ||
Index: emacs-29.1/Makefile.in | ||
=================================================================== | ||
--- emacs-29.1.orig/Makefile.in | ||
+++ emacs-29.1/Makefile.in | ||
@@ -328,7 +328,7 @@ GLIB_COMPILE_SCHEMAS = glib-compile-sche | ||
TRANSFORM = @program_transform_name@ | ||
|
||
# Prevent any settings in the user environment causing problems. | ||
-unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH | ||
+unexport EMACSDOC EMACSPATH | ||
|
||
# What emacs should be called when installed. | ||
EMACS_NAME = `echo emacs | sed '$(TRANSFORM)'` |
85 changes: 0 additions & 85 deletions
85
meta-oe/recipes-support/emacs/files/usemake-docfile-native.patch
This file was deleted.
Oops, something went wrong.