Ihor Radchenko <[email protected]> writes:

> Morgan Smith <[email protected]> writes:
>
>> I have now adjusted to patch series to use git submodules.
>
>> I've made "org-dependencies.el" print out exactly what commands you need
>> to run.
>
> LGTM.
>

:D

>> I've completely removed the cleanpkg target.  Not really sure what to do
>> there as I've handed over control of compiling everything to emacs's
>> builtin "package.el".  Maybe figuring that out can wait until after this
>> is merged?
>
> What about pointing package dir to deps/compiled or something similar?
> Then, make clean/make cleanpkg can simply remove that.

You know what.  That works great.  I even added back in the emacs
version directory code we had previously so you don't have to recompile
the deps when changing Emacs versions. (we only do cleanpkg with
cleanall, not clean in this current iteration)

I still have to have the annoying repro work around though.

Here's the changes from my last patch series:

>From 3847b41be9a7b6f80dca8e89009aaab3fc6bc261 Mon Sep 17 00:00:00 2001
From: Morgan Smith <[email protected]>
Date: Sat, 10 Oct 2026 18:54:38 -0400
Subject: [PATCH] fixup! Upgrade Org build system to handle third-party
 dependencies

---
 .gitignore    |  1 +
 mk/default.mk |  8 ++++++--
 mk/targets.mk | 12 ++++++++++--
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 0eb5d834a..fa65eba40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,6 +48,7 @@ local*.mk
 .gitattributes
 mk/x11idle
 ChangeLog
+deps/compiled
 
 # Files generated during `make packages/org` in a clone of `elpa.git`.
 
diff --git a/mk/default.mk b/mk/default.mk
index 9adda1508..56881d7d5 100644
--- a/mk/default.mk
+++ b/mk/default.mk
@@ -6,6 +6,7 @@
 
 # Name of your emacs binary
 EMACS	= emacs
+EMACS_VERSION := $(shell $(EMACS) -Q --batch --eval '(message "%s" emacs-version)' 2>&1)
 
 # Where local software is found
 prefix	= /usr/share
@@ -31,7 +32,10 @@ GIT_BRANCH =
 TMPDIR ?= /tmp
 testdir = $(TMPDIR)/tmp-orgtest
 
+# Where to store Org dependencies
 top_builddir := $(shell pwd)
+pkgdir_top := $(top_builddir)/deps/compiled
+pkgdir := $(pkgdir_top)/$(EMACS_VERSION)
 
 # Configuration for testing
 # Verbose ERT summary by default for Emacs-28 and above.
@@ -121,8 +125,8 @@ REPRO = $(NOBATCH) $(BTEST_INIT) $(REPRO_INIT) $(REPRO_ARGS)
 # EMACSQ = -vanilla # XEmacs
 EMACSQ  = $(EMACS)  -Q \
 	  --eval '(setq vc-handled-backends nil org-startup-folded nil org-element-cache-persistent nil)' \
-	  --eval '(setq package-user-dir (expand-file-name "./deps" "${top_builddir}"))' \
-	  --eval '(setq package-directory-list (list (expand-file-name "./deps" "${top_builddir}")))' \
+	  --eval '(setq package-user-dir (expand-file-name "${pkgdir}"))' \
+	  --eval '(setq package-directory-list (list (expand-file-name "${pkgdir}")))' \
 	  -f package-initialize
 
 # Using emacs in batch mode.
diff --git a/mk/targets.mk b/mk/targets.mk
index af9eea826..807cbf54b 100644
--- a/mk/targets.mk
+++ b/mk/targets.mk
@@ -34,7 +34,7 @@ endif
 	info html pdf card refcard doc docs \
 	autoloads cleanall clean $(CLEANDIRS:%=clean%) \
 	clean-install cleanelc cleandirs \
-	cleanlisp cleandoc cleandocs cleantest \
+	cleanlisp cleandoc cleandocs cleantest cleanpkg \
 	compile compile-dirty uncompiled \
 	config config-test config-exe config-all config-eol config-version \
 	vanilla repro
@@ -139,6 +139,7 @@ $(INSTSUB):
 autoloads: lisp
 	$(MAKE) -C $< $@
 
+repro: SKIP_CLEANPKG = yes
 repro: cleanall autoloads
 	-@$(REPRO) &
 
@@ -159,7 +160,7 @@ cleandirs:
 
 clean:	cleanlisp cleandoc
 
-cleanall: cleandirs cleantest cleangithooks
+cleanall: cleandirs cleantest cleangithooks cleanpkg
 	-$(FIND) . \( -name \*~ -o -name \*# -o -name .#\* \) -exec $(RM) {} +
 	-$(FIND) $(CLEANDIRS) \( -name \*~ -o -name \*.elc \) -exec $(RM) {} +
 
@@ -184,3 +185,10 @@ cleantest:
 	  $(FIND) $(testdir) -type d -exec $(CHMOD) u+w {} + && \
 	  $(RMR) $(testdir) ; \
 	}
+
+cleanpkg:
+	-@if [ -z "$(SKIP_CLEANPKG)" ]; then \
+		$(RMR) $(pkgdir_top); \
+	else \
+		echo "Skipping cleanpkg"; \
+	fi
-- 
2.54.0

Reply via email to