From 8d5f9f023af18828656df85a0ce4069e004dbf5d Mon Sep 17 00:00:00 2001 Message-Id: <8d5f9f023af18828656df85a0ce4069e004dbf5d.1651373896.git.yantar92@gmail.com> From: Ihor Radchenko Date: Sun, 1 May 2022 10:44:10 +0800 Subject: [PATCH] mk: Add make target "repro" for easy bug testing * mk/default.mk (REPRO_DEBUG): New custom variable enabling extra debugging facilities in Emacs instance open by make repro. (REPRO_ARGS): Extra arguments passed to Emacs by make repro. (REPRO_INIT): (REPRO): Define Emacs cmd for testing. * mk/targets.mk (.PHONY): (repro): Add new target. * doc/org-manual.org (Feedback): Describe the new make target. --- doc/org-manual.org | 8 ++++++++ mk/default.mk | 21 +++++++++++++++++++++ mk/targets.mk | 5 ++++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index c0bd853ca..6a574977e 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -269,6 +269,14 @@ ** Feedback (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp")) #+end_src +If you are using Org mode version from Git repository, you can start +minimal session using make. + +: # Bare Emacs +: make repro +: # or pass extra arguments +: make repro REPRO_ARGS="-l /path/to/minimal/config.el /tmp/bug.org" + If an error occurs, a "backtrace" can be very useful---see below on how to create one. Often a small example file helps, along with clear information about: diff --git a/mk/default.mk b/mk/default.mk index 804089280..33e737da3 100644 --- a/mk/default.mk +++ b/mk/default.mk @@ -59,6 +59,11 @@ BTEST_OB_LANGUAGES = awk C fortran maxima lilypond octave perl python # extra packages to require for testing BTEST_EXTRA = # ess-site # load ESS for R tests +# Whether to activate extra debugging facilities for make repro. +REPRO_DEBUG ?= yes +# Extra arguments passed to Emacs for make repro. +# e.g. -l config.el /tmp/bug.org +REPRO_ARGS ?= ##->8------------------------------------------------------------------- ## YOU MAY NEED TO ADAPT THESE DEFINITIONS ##---------------------------------------------------------------------- @@ -93,6 +98,22 @@ BTEST = $(BATCH) $(BTEST_INIT) \ # should be useful for manual testing and verification of problems. NOBATCH = $(EMACSQ) $(BTEST_INIT) -l org -f org-version +ifeq ($(REPRO_DEBUG), yes) +REPRO_INIT = --eval "(setq \ + debug-on-error t\ + debug-on-signal nil\ + debug-on-quit nil\ + org-element--cache-self-verify 'backtrace\ + org-element--cache-self-verify-frequency 1.0\ + org-element--cache-map-statistics t)" +else +REPRO_INIT = +endif + +# Running a plain emacs with no config, this Org mode loaded, and +# debugging facilities activated. +REPRO = $(NOBATCH) $(REPRO_INIT) $(REPRO_ARGS) + # start Emacs with no user and site configuration # EMACSQ = -vanilla # XEmacs EMACSQ = $(EMACS) -Q diff --git a/mk/targets.mk b/mk/targets.mk index 6de77b1e6..5cba63e21 100644 --- a/mk/targets.mk +++ b/mk/targets.mk @@ -41,7 +41,7 @@ endif cleanlisp cleandoc cleandocs cleantest \ compile compile-dirty uncompiled \ config config-test config-exe config-all config-eol config-version \ - vanilla + vanilla repro CONF_BASE = EMACS DESTDIR ORGCM ORG_MAKE_DOC CONF_DEST = lispdir infodir datadir testdir @@ -132,6 +132,9 @@ $(INSTSUB): autoloads: lisp $(MAKE) -C $< $@ +repro: cleanall autoloads + -@$(REPRO) & + cleandirs: $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;) -- 2.35.1