branch: elpa-admin commit 995404d8076ce74e4b39e27a952c57f8fa5ffb6c Author: Stefan Monnier <monn...@iro.umontreal.ca> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
* elpa-admin.el: Allow generating autoloads for "unlisted" packages (elpaa--get-package-spec): New arg `noerror`. (elpaa-batch-generate-autoloads): Use it. * GNUmakefile (descs <var>): Rename from `pkg_descs`. (install-in-place, descs, autoloads): New targets. --- GNUmakefile | 13 +++++++------ elpa-admin.el | 9 ++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 3059222..2ffcec2 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -69,6 +69,7 @@ endef # Compute the set of autolods files and their dependencies. autoloads := $(foreach pkg, $(pkgs), $(pkg)/$(notdir $(pkg))-autoloads.el) +descs := $(foreach pkg, $(pkgs), $(pkg)/$(notdir $(pkg))-pkg.el) # FIXME: In 99% of the cases, autoloads can be generated in any order. # But the `names' package is an exception because it sets up an advice that @@ -83,6 +84,7 @@ autoloads := $(foreach pkg, $(pkgs), $(pkg)/$(notdir $(pkg))-autoloads.el) # packages/aggressive-indent/aggressive-indent-autoloads.el: \ # packages/names/names-autoloads.el +# .PRECIOUS: packages/%-autoloads.el packages/%-autoloads.el: elpa-packages @#echo 'Generating autoloads for $@' $(EMACS) -l admin/elpa-admin.el \ @@ -138,18 +140,17 @@ $(PKG_DESCS_MK): elpa-packages packages $(EMACS) -Q -l admin/elpa-admin.el \ -f elpaa-batch-pkg-spec-make-dependencies $@ -# # Put into single_pkgs the set of -pkg.el files we need to keep up-to-date. -# # I.e. all the -pkg.el files for the single-file packages. -pkg_descs:=$(foreach pkg, $(pkgs), $(pkg)/$(notdir $(pkg))-pkg.el) -#$(foreach al, $(single_pkgs), $(eval $(call RULE-srcdeps, $(al)))) packages/%-pkg.el: @echo 'Generating description file $@' @$(EMACS) -l admin/elpa-admin.el \ -f elpaa-batch-generate-description-file "$@" -.PHONY: all-in-place +.PHONY: all-in-place autoloads descs install-in-place # Use order-only prerequisites, so that autoloads are done first. -all-in-place: | $(autoloads) $(pkg_descs) $(pkgs) #$(extra_elcs) +all-in-place: | install-in-place $(pkgs) #$(extra_elcs) +autoloads: $(autoloads) +descs: $(descs) +install-in-place: autoloads descs define FILE-els $(filter %.el, $(1)) diff --git a/elpa-admin.el b/elpa-admin.el index 77e57a1..2a48ecc 100644 --- a/elpa-admin.el +++ b/elpa-admin.el @@ -447,12 +447,15 @@ Return non-nil if a new tarball was created." (replace-regexp-in-string "[^.0-9]+" "" verdate)))) -(defun elpaa--get-package-spec (pkgname) +(defun elpaa--get-package-spec (pkgname &optional noerror) "Retrieve the property list for PKGNAME from `elpaa--specs-file'." (let* ((specs (elpaa--get-specs)) (spec (assoc pkgname specs))) (if (null spec) - (error "Unknown package %S" pkgname) + (if (not noerror) + (error "Unknown package %S" pkgname) + (message "Unknown package %S" pkgname) + (list pkgname)) spec))) (defun elpaa-batch-make-all-packages (&rest _) @@ -1695,7 +1698,7 @@ More at " (elpaa--default-url pkgname)) (let* ((alf (pop command-line-args-left)) (dir (file-name-directory alf)) (pkgname (file-name-nondirectory (directory-file-name dir))) - (pkg-spec (elpaa--get-package-spec pkgname)) + (pkg-spec (elpaa--get-package-spec pkgname 'noerror)) (lisp-dir (elpaa--spec-get pkg-spec :lisp-dir))) (require 'package) (if (null lisp-dir)