]> code.delx.au - gnu-emacs-elpa/commitdiff
* admin/archive-contents.el (batch-make-site-package): New function.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 22 Oct 2012 21:56:43 +0000 (17:56 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 22 Oct 2012 21:56:43 +0000 (17:56 -0400)
* Makefile (site/%): Use it.

Makefile
admin/archive-contents.el

index 77920f76365ef45dbf494c6d5d8268cfdb8f437f..9523b733481dccd82d44d14a6baded5507db1eee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ EMACS=emacs
 ARCHIVE_TMP=archive-tmp
 SITE_DIR=site
 
-.PHONY: archive-tmp process-archive archive-full org-fetch clean all
+.PHONY: archive-tmp process-archive archive-full org-fetch clean all do-it
 
 ## Set up the source files for direct usage, by pointing
 ## `package-directory-list' to the site/ directory.
@@ -14,6 +14,10 @@ site: packages
        $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el \
          --eval "(batch-make-site-dir \"packages\" \"$(SITE_DIR)\")"
 
+site/%: do-it
+       $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el \
+         --eval "(progn (setq debug-on-error t) (batch-make-site-package \"$@\"))"
+
 ## Deploy the package archive to archive/, with packages in
 ## archive/packages/:
 archive: archive-tmp
index 92c592ea8a72c59a64d71b137ca1b428d8b57a79..6c388a933a23bf3823e1582179c34513320b937e 100644 (file)
@@ -1,6 +1,6 @@
 ;;; archive-contents.el --- Auto-generate an Emacs Lisp package archive.
 
-;; Copyright (C) 2011  Free Software Foundation, Inc
+;; Copyright (C) 2011, 2012  Free Software Foundation, Inc
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 
@@ -22,6 +22,7 @@
 ;;; Code:
 
 (require 'lisp-mnt)
+(require 'package)
 
 (defconst archive-contents-subdirectory-regexp
   "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\)[0-9]+\\)*\\)")
@@ -187,7 +188,7 @@ PKG-readme.txt.  Return the descriptor."
   (setq package-dir (expand-file-name package-dir default-directory))
   (setq site-dir (expand-file-name site-dir default-directory))
   (dolist (dir (directory-files package-dir t archive-re-no-dot))
-   (condition-case v
+    (condition-case v
        (if (not (file-directory-p dir))
            (error "Skipping non-package file %s" dir)
          (let* ((pkg (file-name-nondirectory dir))
@@ -218,6 +219,16 @@ PKG-readme.txt.  Return the descriptor."
      ;; Error handler
      (error (message "%s" (cadr v))))))
 
+(defun batch-make-site-package (sdir)
+  (let* ((dest (car (file-attributes sdir)))
+         (pkg (file-name-nondirectory (directory-file-name (or dest sdir))))
+         (dir (or dest sdir)))
+    (let ((make-backup-files nil))
+      (package-generate-autoloads pkg dir))
+    (let ((load-path (cons dir load-path)))
+      ;; FIXME: Don't compile the -pkg.el files!
+      (byte-recompile-directory dir 0))))
+
 (defun archive--write-pkg-file (pkg-dir name version desc requires &rest ignored)
   (let ((pkg-file (expand-file-name (concat name "-pkg.el") pkg-dir))
        (print-level nil)