From a5f5801ddb9c120366058c8794a2e8b6a260b7a8 Mon Sep 17 00:00:00 2001 From: Phillip Lord Date: Sun, 20 Jan 2019 23:22:58 +0000 Subject: [PATCH] Probably working but untested version --- Makefile.in | 2 +- elpa/Makefile.in | 7 +++++-- elpa/bin/extract-package.sh | 19 ++++++++++++++---- elpa/bin/package-makefile.mk | 39 ++++++++++++++++++++++++++++++++++-- notes.org | 17 ++++++++++++++++ 5 files changed, 75 insertions(+), 9 deletions(-) diff --git a/Makefile.in b/Makefile.in index b6cd04d1f3d..5214876c71b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -311,7 +311,7 @@ EMACS = ${EMACS_NAME}${EXEEXT} EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT} # Subdirectories to make recursively. -SUBDIR = $(NTDIR) lib lib-src src lisp +SUBDIR = $(NTDIR) elpa lib lib-src src lisp # The subdir makefiles created by config.status. SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@ diff --git a/elpa/Makefile.in b/elpa/Makefile.in index 1469737f560..20339d161ad 100644 --- a/elpa/Makefile.in +++ b/elpa/Makefile.in @@ -29,12 +29,15 @@ packages/d28cf8632d2691dc93afbb28500126242d37961c-pabbrev: elpa-update directori ./bin/extract-package.sh -s d28cf8632d2691dc93afbb28500126242d37961c -p pabbrev -e pabbrev: packages/d28cf8632d2691dc93afbb28500126242d37961c-pabbrev - $(MAKE) -C packages/d28cf8632d2691dc93afbb28500126242d37961c-pabbrev/ -f package-makefile.mk deploy + $(MAKE) -C packages/d28cf8632d2691dc93afbb28500126242d37961c-pabbrev/pabbrev -f package-makefile.mk deploy PACKAGE=pabbrev packages/cba688842ac089ad516155d1b2d6d73826929449-hydra: elpa-update directories ./bin/extract-package.sh -s cba688842ac089ad516155d1b2d6d73826929449 -p hydra hydra: packages/cba688842ac089ad516155d1b2d6d73826929449-hydra - $(MAKE) -C packages/cba688842ac089ad516155d1b2d6d73826929449-hydra -f package-makefile.mk deploy + $(MAKE) -C packages/cba688842ac089ad516155d1b2d6d73826929449-hydra/hydra -f package-makefile.mk deploy PACKAGE=hydra + clean: rm -rf packages + rm -rf ../lisp/elpa + rm -rf ../test/lisp/elpa diff --git a/elpa/bin/extract-package.sh b/elpa/bin/extract-package.sh index a8440df44cd..7325d95e28d 100755 --- a/elpa/bin/extract-package.sh +++ b/elpa/bin/extract-package.sh @@ -2,12 +2,23 @@ function grab_external { rm -rf packages/*$PACKAGE - mkdir packages/$SHA-$PACKAGE + mkdir --parents packages/$SHA-$PACKAGE/$PACKAGE cd elpa-git git archive $SHA \ - | tar xv -C ../packages/$SHA-$PACKAGE + | tar xv -C ../packages/$SHA-$PACKAGE/$PACKAGE cd .. - cp bin/package-makefile.mk packages/$SHA-$PACKAGE + cp --no-clobber bin/package-makefile.mk packages/$SHA-$PACKAGE/$PACKAGE/ +} + + +function grab_subtree { + rm -rf packages/*$PACKAGE + mkdir --parents packages/$SHA-$PACKAGE/$PACKAGE + cd elpa-git + git archive $SHA \ + | tar xv -C ../packages/$SHA-$PACKAGE/$PACKAGE + cd .. + cp --no-clobber bin/package-makefile.mk packages/$SHA-$PACKAGE/$PACKAGE } SHA= @@ -34,4 +45,4 @@ then exit 0 fi -exit 1 +grab_subtree diff --git a/elpa/bin/package-makefile.mk b/elpa/bin/package-makefile.mk index 70bff684b17..d368fc07aa1 100644 --- a/elpa/bin/package-makefile.mk +++ b/elpa/bin/package-makefile.mk @@ -1,2 +1,37 @@ -deploy: - echo hello `pwd` +FILE = $(realpath $(lastword $(MAKEFILE_LIST))) +DIR = $(dir $(FILE)) +DIRS = $(subst /, ,$(DIR)) +PACKAGE=$(lastword $(DIRS)) + +TEST=$(wildcard *-test.el) +TEST:=$(wildcard *-tests.el) $(TEST) +LISP=$(filter-out $(TEST), $(wildcard *.el)) + + +LISP_DIR=../../../../lisp/elpa/$(PACKAGE)/ +TEST_DIR=../../../../test/lisp/elpa/$(PACKAGE)/ + +LISP_TARGETS=$(addprefix $(LISP_DIR),$(LISP)) +TEST_TARGETS=$(addprefix $(TEST_DIR),$(TEST)) + +deploy: prepare $(LISP_TARGETS) $(TEST_TARGETS) + # LISP $(LISP_TARGETS) + # TEST $(TEST_TARGETS) + +define lisp_template + $(LISP_DIR)$(1): $(1) + cp $$< $$@ +endef + +$(foreach prereq, $(LISP), $(eval $(call lisp_template,$(prereq)))) + +define test_template + $(TEST_DIR)$(1): $(1) + cp $$< $$@ +endef + +$(foreach prereq, $(TEST), $(eval $(call test_template,$(prereq)))) + +prepare: + -mkdir $(LISP_DIR) + -mkdir $(TEST_DIR) diff --git a/notes.org b/notes.org index 259299d48ed..ebce3069bba 100644 --- a/notes.org +++ b/notes.org @@ -1,5 +1,22 @@ +* Working on + +Have package checkout working for external +Next get it working for non external so we can template + +Then how to get the submakes working + + + +* To Fix + +Think we are running git fetch --all on every package. Is there +something more intelligent we can do here? Lookup VCS Witness +elsewhere. + +* Notes + 1) Scripting? Guess we have to use sh -- 2.39.5